{"id":319611,"date":"2021-03-15T15:01:49","date_gmt":"2021-03-15T15:01:49","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=319611"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=319611","title":{"rendered":"\u0418 \u0435\u0449\u0435 \u0440\u0430\u0437\u043e\u043a \u043f\u0440\u043e Serverless"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/758\/a95\/304\/758a95304ddca7d7ed522ecab487d488.png\" alt=\"\u041b\u043e\u0433\u043e\u0442\u0438\u043f AWS Lambda (\u043d\u0443 \u0438\u043b\u0438 Half Life, \u044f \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043d\u044f\u043b)\" title=\"\u041b\u043e\u0433\u043e\u0442\u0438\u043f AWS Lambda (\u043d\u0443 \u0438\u043b\u0438 Half Life, \u044f \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043d\u044f\u043b)\" width=\"1200\" height=\"675\"><figcaption>\u041b\u043e\u0433\u043e\u0442\u0438\u043f AWS Lambda (\u043d\u0443 \u0438\u043b\u0438 Half Life, \u044f \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043d\u044f\u043b)<\/figcaption><\/figure>\n<hr>\n<p>\u0421 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430 AWS Lambda \u043f\u0440\u043e\u0448\u043b\u043e \u043d\u0438 \u043c\u043d\u043e\u0433\u043e \u043d\u0438 \u043c\u0430\u043b\u043e 6 \u0441 \u043b\u0438\u0448\u043d\u0438\u043c \u043b\u0435\u0442. \u0420\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0438 \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043d\u043e \u0438 \u043f\u043e\u0440\u043e\u0434\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 buzzword Serverless.<\/p>\n<p>\u041c\u043e\u0442\u0438\u0432\u043e\u043c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0441\u043b\u0443\u0436\u0438\u0442 <a href=\"https:\/\/netflixtechblog.com\/the-netflix-cosmos-platform-35c14d9351ad\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0441\u0442<\/a> \u0432 \u0431\u043b\u043e\u0433\u0435 Netflix. \u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0432 \u0435\u0433\u043e, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438, \u044f \u043f\u0440\u0438\u0445\u043e\u0436\u0443 \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 &#171;\u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439&#187; \u0435\u0449\u0435 \u043d\u0435 \u043e\u0431\u043a\u0430\u0442\u0430\u043d\u043e \u0432\u0434\u043e\u043b\u044c \u0438 \u043f\u043e\u043f\u0435\u0440\u0435\u043a (\u043a\u0430\u043a \u0438 \u0432 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0442\u0443\u0441\u043e\u0432\u043a\u0435, \u0447\u0435\u0433\u043e \u0433\u0440\u0435\u0445\u0430 \u0442\u0430\u0438\u0442\u044c), \u0438 \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0431\u044b \u043f\u0440\u043e\u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437.<\/p>\n<p>\u041c\u043e\u0439 \u043f\u043e\u0441\u0442 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 AWS, \u043d\u043e \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u0437 \u043d\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u044b \u043a\u0430\u043a \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u043c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c (GCP, Azure), \u0442\u0430\u043a \u0438 \u043a &#171;\u0434\u043e\u043c\u0430\u0448\u043d\u0438\u043c&#187; \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u043c (OpenFaaS).<\/p>\n<hr>\n<p>\u042f \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u043f\u0440\u043e\u0439\u0442\u0438\u0441\u044c \u043f\u043e \u0442\u0440\u0435\u043c, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0441\u0430\u043c\u044b\u043c \u0432\u0430\u0436\u043d\u044b\u043c, \u043f\u0443\u043d\u043a\u0442\u0430\u043c, \u043a\u0430\u0441\u0430\u044e\u0449\u0438\u043c\u0441\u044f Serverless<\/p>\n<ul>\n<li>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f &#171;\u0434\u0435\u043c\u0438\u0441\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e&#187; \u043f\u043e\u043d\u044f\u0442\u0438\u0435 Serverless, \u043e\u0442\u0434\u0435\u043b\u0438\u0432 \u0435\u0433\u043e \u043e\u0442 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 Lambda,<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0442\u0435\u043c \u044f \u043f\u0440\u043e\u0439\u0434\u0443\u0441\u044c \u043f\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 Lambda<\/p>\n<\/li>\n<li>\n<p>\u0418 \u0437\u0430\u043a\u043e\u043d\u0447\u0443 \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u0440\u044f\u0434\u043e\u043c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u044e Serverless \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<\/p>\n<\/li>\n<\/ul>\n<p><em>\u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <\/em><strong><em>sls<\/em><\/strong><em> \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f Serverless. \u042f \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u043d\u0438\u0432\u044b\u0439.<\/em><\/p>\n<h2>Lambda != Serverless, Lambda in Serverless == True<\/h2>\n<p>\u0413\u043e\u0440\u0435 \u043f\u0430\u0432\u0448\u0438\u043c \u0436\u0435\u0440\u0442\u0432\u0430\u043c\u0438 \u0441\u043b\u0430\u0434\u043a\u0438\u0445 \u0440\u0435\u0447\u0435\u0439 \u0430\u0434\u0432\u043e\u043a\u0430\u0442\u043e\u0432 \u0438 \u0435\u0432\u0430\u043d\u0433\u0435\u043b\u0438\u0441\u0442\u043e\u0432! &#171;\u0412\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0430\u0440\u043a\u043e\u043c \u043c\u0430\u0448\u0438\u043d!&#187;, &#171;\u0412\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430 \u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b!&#187;, &#171;\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e sls \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0432\u0430\u0448\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0435\u0442 \u0432 \u0440\u0430\u0437\u044b!&#187;, &#8212; \u044d\u0442\u043e \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c \u043c\u043d\u0435 \u0442\u043e\u043b\u043f\u044b \u0433\u0435\u0440\u043e\u0435\u0432 \u0438 \u0435\u0432\u0430\u043d\u0433\u0435\u043b\u0438\u0441\u0442\u043e\u0432 AWS, \u043d\u043e \u044f \u043f\u043e\u0437\u043d\u0430\u043b \u0441\u0443\u0442\u044c\u2122.<\/p>\n<p>\u0412\u0438\u0434\u0438\u0442\u0435 \u043b\u0438, \u0440\u0438\u0442\u043e\u0440\u0438\u043a\u0430 &#171;\u043c\u043d\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u0443\u043c\u0430\u0442\u044c \u043e\u0431 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435&#187; \u043e\u0431\u0440\u0435\u0447\u0435\u043d\u0430 \u043d\u0430 \u043f\u0440\u043e\u0432\u0430\u043b. \u0420\u0430\u0437\u0432\u0435 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0432\u043e\u0437\u0434\u0443\u0445\u0435? \u0420\u0430\u0437\u0432\u0435 \u043e\u043d \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0435\u0442\u0438? \u0420\u0430\u0437\u0432\u0435 \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u044c\u0441\u044f \u043e\u0431 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435, \u0435\u0441\u043b\u0438 \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c Kubernetes, \u0438 \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u044e \u0432 \u043d\u0435\u043c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438?<\/p>\n<p>\u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e <a href=\"https:\/\/youtu.be\/HaEPXoXVf2k?t=3456\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e<\/a> sls \u043e\u043f\u0438\u0441\u0430\u043b \u0420\u0438\u043a \u0425\u0443\u043b\u0438\u0445\u0430\u043d \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u043e\u043c\u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u043c DynamoDB, \u043a\u0440\u0430\u0442\u043a\u043e \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0432 \u043d\u043e\u0432\u0443\u044e \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0443 (\u0432\u0435\u0441\u044c \u0434\u043e\u043a\u043b\u0430\u0434 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439, \u043d\u043e \u0441\u0441\u044b\u043b\u043a\u0430 \u0432\u0435\u0434\u0435\u0442 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442).<\/p>\n<p>Fail cheap &#8212; \u0432\u043e\u0442, \u0447\u0442\u043e \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e &#171;\u043f\u0440\u043e\u0434\u0430\u0435\u0442&#187; sls. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0435\u0437\u0438\u0441, \u043c\u043d\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e <strong>\u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e <\/strong>\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043a\u0430\u043a \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u0431\u044b \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438\u0437 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043e\u043a \u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0434\u0435\u0441\u044c &#8212; \u043d\u0435 \u0440\u0435\u0448\u0430\u044e\u0449\u0438\u0439 \u0444\u0430\u043a\u0442\u043e\u0440. \u0412 2021-\u043e\u043c \u0433\u043e\u0434\u0443, \u0447\u0442\u043e Lambda \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0447\u0442\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430 DynamoDB, \u0447\u0442\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432 ECS\/EKS, \u0447\u0442\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 EC2 &#8212; \u0432\u0441\u0435 \u044d\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u043c\u0438\u043d\u0443\u0442\u044b, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u043e\u0435 \u043f\u043e\u0441\u043b\u0430\u043d\u0438\u0435 \u21161<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0415\u0441\u043b\u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0435 \u0443 \u0432\u0430\u0441 \u043f\u0440\u043e\u043f\u0430\u043b \u0438\u043d\u0442\u0435\u0440\u0435\u0441, \u0441\u043c\u0435\u043b\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u0442\u0430\u0442\u044c\u044e. Serverless \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043f\u0440\u043e\u0441\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b. \u042d\u0442\u043e \u0438\u043d\u043e\u0439 \u0432\u0438\u0434 \u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0438 \u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043d \u043b\u0443\u0447\u0448\u0435 \u0443\u0436\u0435 \u0443\u0441\u0442\u043e\u044f\u0432\u0448\u0438\u0445\u0441\u044f.<\/p>\n<\/div>\n<\/details>\n<h2>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Serverless<\/h2>\n<p>AWS \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0442\u044f\u0436\u0435\u0441\u0442\u0438, \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u0435\u0442 \u0431\u0438\u0440\u043a\u0443 sls &#8212; \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 (SQS, Kinesis), \u043d\u043e\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 (SES, SNS), \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (EventBridge, Step Functions), \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 (S3), \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (DynamoDB), \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 (Glue, Athena). \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043c\u043e\u0435 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 HighLoad++, \u0432\u044b \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u044f <a href=\"https:\/\/youtu.be\/BEZKub1BYCE?t=1718\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u043b\u0438\u0447\u0430\u044e<\/a> sls \u043e\u0442 &#171;\u043e\u0431\u044b\u0447\u043d\u044b\u0445&#187; \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. Sls \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0434\u043b\u044f \u0432\u0430\u0441 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438, \u0441\u043d\u0438\u043c\u0430\u044f \u0441 \u0432\u0430\u0441 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c (\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435\u0442 &#8212; \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0430\u043c \u043d\u0430\u0434\u043e \u0443\u0447\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e\/\u043f\u043e\u0434\u0445\u043e\u0434).<\/p>\n<p>\u0412\u0437\u044f\u0442\u044c \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 DynamoDB &#8212; \u0441\u0430\u043c\u0430 \u0421\u0423\u0411\u0414 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c! \u0412 \u0432\u0430\u0448\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441 \u0435\u0435 &#171;\u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e&#187; (WCU\/RCU), \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0444\u0438\u0447\u0438. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c ETL Glue \u0432\u0430\u0441 \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u043a \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0441\u0430\u043c\u0438\u043c \u0434\u0432\u0438\u0436\u043a\u043e\u043c ETL &#8212; \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u0442\u0435 \u0441\u0445\u0435\u043c\u0443 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0438 \u043f\u0443\u043d\u043a\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0435 \u0437\u0430\u0434\u0430\u0447\u0443. \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u0441\u0435\u0431\u0435 \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437 \u043d\u043e\u0433\u0443 \u043d\u0435 \u043e\u0442\u0441\u0442\u0440\u0435\u043b\u0438\u043b\u0438 (\u0435\u0441\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u0441\u0442\u0440\u0435\u043b\u0438\u0442\u044c &#8212; \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0435 \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0430\u0445 \u0415\u04212).<\/p>\n<p>\u041e\u0442\u043b\u0438\u0447\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0431\u0438\u043b\u043b\u0438\u043d\u0433\u0435. \u0415\u0441\u043b\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0431\u0430\u0437\u0430\u043c\u0438 RDS \u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438 ECS Fargate \u0433\u0434\u0435 \u043e\u043f\u043b\u0430\u0442\u0430 \u0438\u0434\u0435\u0442 \u043f\u043e\u043c\u0438\u043d\u0443\u0442\u043d\u043e (\u0438\u043b\u0438 \u043f\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u043d\u043e?), \u0441 sls \u0432\u044b \u043f\u043b\u0430\u0442\u0438\u0442\u0435 \u0437\u0430 \u043e\u0431\u044a\u0435\u043c (\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 &#171;\u0432\u0435\u0441\u044f\u0442&#187; \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 S3) \u0438 \u0443\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044e (\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0442\u0440\u0430\u0444\u0438\u043a).<\/p>\n<p>\u0417\u0430 \u0441\u0447\u0435\u0442 \u0433\u0440\u0430\u043d\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0431\u0438\u043b\u043b\u0438\u043d\u0433\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0442\u043e\u0447\u043d\u0435\u0435 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u0438 \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u0430 \u0432\u0430\u0448\u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0438 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0435. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 3 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0438\u0448\u0443\u0442 \u043f\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044e \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043e\u0442\u043a\u0443\u0434\u0430 \u043f\u043e\u0442\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0442\u043e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u043c \u043e\u0431\u043e\u0439\u0434\u0435\u0442\u0441\u044f 1000 \u0442\u0430\u043a\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. \u0418\u043b\u0438 \u043c\u0438\u043b\u043b\u0438\u043e\u043d.<\/p>\n<p>\u041e\u0442\u0441\u044e\u0434\u0430 \u0436\u0435 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c\u044e. \u0412\u0441\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043b\u0438\u0431\u043e \u0443 \u0432\u0430\u0441 \u0432 \u0433\u043e\u043b\u043e\u0432\u0435, \u043b\u0438\u0431\u043e \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u044b \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 <a href=\"https:\/\/docs.aws.amazon.com\/general\/latest\/gr\/aws-service-information.html\" rel=\"noopener noreferrer nofollow\">\u043a\u0432\u043e\u0442<\/a> AWS.<\/p>\n<p>\u041d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e, \u0432\u0435\u0440\u043d\u043e? \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043d\u0435\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u0441\u0442\u0438\u043d\u044b \u0432 \u0443\u043c\u0430\u0445: sls &#8212; \u044d\u0442\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u043d\u0430\u0434 PaaS, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0430\u0440\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443.<\/p>\n<p>\u041e\u0442\u0441\u044e\u0434\u0430 \u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441 sls \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438. Sls \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 &#8212; \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0431\u043e\u0440 Lambda \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0437\u0430 API GW. Sls \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 <em>\u0442\u043e\u043b\u044c\u043a\u043e<\/em> \u0438\u0437 sls \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432.<\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043f\u043e \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0443 \u0432\u0430\u0441 \u043d\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c. \u0415\u0441\u043b\u0438 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c &#8212; \u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u043e\u0442\u0432\u0435\u0447\u0443 \u0432\u0441\u0435\u043c \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h2>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 AWS Lambda<\/h2>\n<p>\u0420\u043e\u0434\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0438\u0446\u0430 sls \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0432\u044b\u0437\u0432\u0430\u043b\u0430 \u0432 \u0441\u0432\u043e\u0435\u0439 \u0432\u0440\u0435\u043c\u044f \u043d\u0435\u043c\u0430\u043b\u043e \u0448\u0443\u043c\u0430, \u0432\u0435\u0434\u044c \u0435\u0435 \u0440\u0435\u043b\u0438\u0437 \u043f\u0440\u0438\u0448\u0435\u043b\u0441\u044f \u043d\u0430 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f, \u0447\u0442\u043e \u0438 \u0431\u0443\u0440\u044f \u0432\u043e\u043a\u0440\u0443\u0433 Docker \u0438 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0435 Kubernetes. \u0417\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u043e\u0439 Lambda \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (\u0434\u0430\u043b\u0435\u0435 &#8212; \u0424\u0443\u043d\u043a\u0446\u0438\u044f) \u0441\u0442\u043e\u0438\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044c, \u0432\u0435\u0434\u044c \u043c\u044b\u0441\u043b\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e &#171;\u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c&#187; \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u0434\u043e\u0432\u0435\u0440\u0438\u0435.<\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0436\u0435 \u0434\u0435\u043b\u0435 \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u0437\u0432\u0443\u0447\u0430\u0442 \u0438\u0437 \u0441\u043b\u0430\u0434\u043a\u0438\u0445 \u0443\u0441\u0442 \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 sls \u0435\u0432\u0430\u043d\u0433\u0435\u043b\u0438\u0441\u0442\u043e\u0432 \u0438 \u0433\u0435\u0440\u043e\u0435\u0432, (\u0438 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0442 \u043d\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0436\u0435). \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 3 \u0447\u0430\u0441\u0442\u0435\u0439: \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0421\u043e\u0431\u044b\u0442\u0438\u044f (Triggering Event); \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 AWS Lambda &#8212; runtime, deployment package (\u043b\u043e\u0433\u0438\u043a\u0430 \u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438), \u0441\u043b\u043e\u0438 (layers) \u0438 &#171;\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435&#187; (extensions); \u0442\u043e\u0447\u043a\u0430 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0424\u0443\u043d\u043a\u0446\u0438\u0438 (\u0435\u0441\u043b\u0438 \u0438\u043c\u0435\u0435\u0442\u0441\u044f) &#8212; \u043a\u043e\u0440\u0437\u0438\u043d\u0430 S3, \u0442\u0430\u0431\u043b\u0438\u0446\u0430 DynamoDB, \u043e\u0447\u0435\u0440\u0435\u0434\u044c SQS \u0438 \u0442.\u0434.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f84\/fbf\/3df\/f84fbf3df6e9e15e90805505539b543b.png\" alt=\"\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043f\u043e\u0441\u0432\u044f\u0449\u0430\u0435\u0442\u0441\u044f \u0412\u0430\u043d\u0435 \u041c\u043e\u0438\u0441\u0435\u0435\u0432\u0443 - \u043c\u043e\u0435\u043c\u0443 \u0434\u0440\u0443\u0433\u0443 \u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044e \u0438\u043a\u043e\u043d\u043e\u043a AWS\" title=\"\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043f\u043e\u0441\u0432\u044f\u0449\u0430\u0435\u0442\u0441\u044f \u0412\u0430\u043d\u0435 \u041c\u043e\u0438\u0441\u0435\u0435\u0432\u0443 - \u043c\u043e\u0435\u043c\u0443 \u0434\u0440\u0443\u0433\u0443 \u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044e \u0438\u043a\u043e\u043d\u043e\u043a AWS\" width=\"1204\" height=\"642\"><figcaption>\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043f\u043e\u0441\u0432\u044f\u0449\u0430\u0435\u0442\u0441\u044f \u0412\u0430\u043d\u0435 \u041c\u043e\u0438\u0441\u0435\u0435\u0432\u0443 &#8212; \u043c\u043e\u0435\u043c\u0443 \u0434\u0440\u0443\u0433\u0443 \u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044e \u0438\u043a\u043e\u043d\u043e\u043a AWS<\/figcaption><\/figure>\n<p>\u0412 \u0434\u043e\u0432\u0435\u0441\u043e\u043a \u043a \u044d\u0442\u043e\u043c\u0443 \u0438\u0434\u0443\u0442 \u0435\u0449\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433, \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Lambda Permission &#8212; \u0430 \u0438\u043c\u0435\u043d\u043d\u043e &#171;\u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435&#187; \u043a\u0430\u043a\u043e\u043c\u0443-\u0442\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u0440\u0435\u0441\u0443\u0440\u0441\u0443 (\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u0439) \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0424\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f \u0438\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 (\u0421\u043e\u0431\u044b\u0442\u0438\u0435).<\/p>\n<p>\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c Lambda &#8212; \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043a\u0443\u0434\u0430 \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0438 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0441\u043b\u0443\u0448\u0430\u0442\u044c \u043e \u043d\u0435\u0439 \u0438\u0437 <a href=\"https:\/\/youtu.be\/QdzV04T_kec\" rel=\"noopener noreferrer nofollow\">\u043f\u0435\u0440\u0432\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430<\/a>.<\/p>\n<p>\u041d\u0435\u0437\u0430\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u0442\u0430\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u0440\u043e\u0434\u0438\u043b\u0430 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0443, compliance, governance \u0438 \u043c\u043d\u043e\u0433\u043e \u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u0438\u0445. \u041f\u043e\u043a\u0440\u044b\u0442\u044c \u0438\u0445 \u0432\u0441\u0435 &#8212; \u0442\u0435\u043c\u0430 \u043d\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u0430 \u0441\u0442\u0430\u0442\u0435\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043b\u044c\u0448\u0435 \u044f \u043f\u0440\u043e\u0439\u0434\u0443\u0441\u044c \u043f\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u043c.<\/p>\n<h2>\u041a\u0430\u043a \u0436\u0438\u0442\u044c \u0441 Lambda<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443. \u0415\u0441\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u0430\u0434\u0440\u0435\u0441\u043e\u0432\u0430\u0442\u044c:<\/p>\n<ol>\n<li>\n<p>\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 sls \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/p>\n<\/li>\n<li>\n<p>\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435<\/p>\n<\/li>\n<li>\n<p>\u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f (\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433, \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430)<\/p>\n<\/li>\n<li>\n<p>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c<\/p>\n<\/li>\n<\/ol>\n<p>\u0417\u0432\u0443\u0447\u0438\u0442 \u0441\u043b\u043e\u0436\u043d\u043e? \u041d\u0443 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0442 \u043c\u0435\u043d\u044f \u043f\u0440\u0438\u0432\u0435\u0442 \u0442\u0435\u043c, \u043a\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0447\u0442\u043e sls \u044d\u0442\u043e \u043b\u0435\u0433\u043a\u043e. <\/p>\n<h2>1. \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0430<\/h2>\n<p>\u0421\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0432\u044b\u043c \u043f\u0443\u043d\u043a\u0442\u043e\u043c \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0441 \u044d\u0442\u043e\u0433\u043e \u0432\u0441\u0435 \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f. AWS \u0437\u0430\u0432\u0435\u0437 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c Serverless Application Model \u0438\u043b\u0438 <a href=\"https:\/\/aws.amazon.com\/serverless\/sam\/\" rel=\"noopener noreferrer nofollow\">SAM<\/a>.<\/p>\n<p>SAM \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0434\u0432\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430: \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 aws-sam-cli (\u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u043a\u0430\u043a \u0447\u0435\u0440\u0435\u0437 <code>brew<\/code> \u0442\u0430\u043a \u0438 \u0447\u0435\u0440\u0435\u0437 <code>pip<\/code>) \u0438 \u0448\u0430\u0431\u043b\u043e\u043d (\u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u044b\u0439 CloudFormation).<\/p>\n<p>\u0414\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0435\u0435 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435. \u0417\u0430\u0442\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0435 \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438: <code>sam local invoke<\/code>&nbsp;\u0438\u043b\u0438 <code>sam local start-api<\/code>&nbsp;(\u0434\u043b\u044f \u0424\u0443\u043d\u043a\u0446\u0438\u0439, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0445 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432\u044b API GW).<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0432\u0438\u0434\u0438\u0442\u0435 SAM, \u0442\u043e \u043f\u0440\u043e\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 quick start \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0437\u0430\u0431\u043e\u0442\u043b\u0438\u0432\u043e \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0432\u0430\u0441 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c\u0438 AWS.<\/p>\n<pre><code class=\"bash\">$ sam init Which template source would you like to use? \t1 - AWS Quick Start Templates \t2 - Custom Template Location Choice: 1 What package type would you like to use? \t1 - Zip (artifact is a zip uploaded to S3) \t2 - Image (artifact is an image uploaded to an ECR image repository) Package type: 1  Which runtime would you like to use? \t1 - nodejs12.x \t2 - python3.8 \t3 - ruby2.7 \t4 - go1.x \t5 - java11 \t6 - dotnetcore3.1 \t7 - nodejs10.x \t8 - python3.7 \t9 - python3.6 \t10 - python2.7 \t11 - ruby2.5 \t12 - java8.al2 \t13 - java8 \t14 - dotnetcore2.1 Runtime: 2  Project name [sam-app]:  Cloning app templates from https:\/\/github.com\/aws\/aws-sam-cli-app-templates  AWS quick start application templates: \t1 - Hello World Example \t2 - EventBridge Hello World \t3 - EventBridge App from scratch (100+ Event Schemas) \t4 - Step Functions Sample App (Stock Trader) \t5 - Elastic File System Sample App Template selection: 1      -----------------------     Generating application:     -----------------------     Name: sam-app     Runtime: python3.8     Dependency Manager: pip     Application Template: hello-world     Output Directory: .      Next steps can be found in the README file at .\/sam-app\/README.md<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0439\u0434\u044f \u0432 <code>sam-app<\/code>&nbsp;\u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e (\u043f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0437\u0430\u0439\u043c\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043e\u0431\u0440\u0430\u0437 Lambda runtime \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c):<\/p>\n<pre><code class=\"bash\">$ sam local invoke HelloWorldFunction Invoking app.lambda_handler (python3.8) Image was not found. Building image....................................... Skip pulling image and use local one: amazon\/aws-sam-cli-emulation-image-python3.8:rapid-1.15.0.  Mounting \/Users\/karentovmasyan\/Development\/Personal\/dummy_project\/sam-app\/hello_world as \/var\/task:ro,delegated inside runtime container START RequestId: e7036160-e11c-440a-b089-8099b1e0d500 Version: $LATEST END RequestId: e7036160-e11c-440a-b089-8099b1e0d500 REPORT RequestId: e7036160-e11c-440a-b089-8099b1e0d500\tInit Duration: 0.29 ms\tDuration: 114.08 ms\tBilled Duration: 200 ms\tMemory Size: 128 MB\tMax Memory Used: 128 MB {\"statusCode\": 200, \"body\": \"{\\\"message\\\": \\\"hello world\\\"}\"}%<\/code><\/pre>\n<p>\u0410 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f JetBrain IDE \u0438\u043b\u0438 VS Code \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u0433\u0434\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 JSON \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f!<\/p>\n<h2>2. \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 sls \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/h2>\n<p>\u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 (\u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441) \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0440\u0443\u0448\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u0431\u0438\u0437\u043d\u0435\u0441 \u0441\u0432\u043e\u0438\u043c \u043f\u0430\u0434\u0435\u043d\u0438\u0435\u043c, \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0431\u0438\u0437\u043d\u0435\u0441-\u0437\u0430\u0434\u0430\u0447\u0443.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u043d\u0435\u043a\u0438\u0439 market-service \u0434\u043b\u044f \u0431\u0438\u0440\u0436\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442 API <code>GET \/markets<\/code>. \u0412\u044b\u0437\u043e\u0432\u044b \u043d\u0430 \u044d\u0442\u043e\u0442 API \u0432\u0435\u0440\u043d\u0443\u0442 \u043d\u0430\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0440\u044b\u043d\u043a\u043e\u0432, \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0432\u0430\u043b\u044e\u0442, \u043f\u043e \u043f\u0440\u044f\u043c\u043e\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0443 &#8212; \u0442\u0438\u043a\u0435\u0440.<\/p>\n<p>\u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0441\u0435\u0440\u0432\u0438\u0441, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 API:<\/p>\n<pre><code>GET \/markets GET \/markets\/base GET \/markets\/ticker?pair=USD-RUB<\/code><\/pre>\n<p>\u0412 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043d\u043e\u0439 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0430 \u0432\u0441\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432 \u043d\u0435\u043c.<\/p>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0432 Lambda \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432 \u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c (\u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u0440\u0438\u0448\u0435\u043b \u0438\u0437 API GW):<\/p>\n<pre><code class=\"json\"># GET \/markets {   # some params...   \"resource\": \"\/markets\",   \"path\": \"\/markets\",   \"headers\": #...   \"queryStringParameters\": null,   # etc... } # GET \/markets\/ticker?pair=USD-RUB {   # some params...   \"resource\": \"\/markets\/ticker\",   \"path\": \"\/markets\/ticker\",   \"queryStringParameters\": {   \t\"pair\": \"USD-RUB\" \t} } \t<\/code><\/pre>\n<p>\u041c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043f\u0443\u0442\u0438\/\u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0427\u0442\u043e-\u0442\u043e \u043d\u0430\u0432\u0440\u043e\u0434\u0435:<\/p>\n<pre><code class=\"python\">def get_markets():   pass  def get_ticker(pair):   pass  def handler(event, context):   path = event.get('path')   if path == '\/markets':     return get_markets()   elif path == '\/markets\/ticker':     return get_ticker(event.get('queryStringParameters').get('pair'))<\/code><\/pre>\n<p>\u0423 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e\u0435 \u0434\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u043e &#8212; \u043a\u043e\u0434 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d, \u0438 \u043c\u044b \u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u0435\u043c \u0433\u0434\u0435 \u0435\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u0442\u044c. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e\u0442 \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043d\u0442\u0438\u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u043c \u0434\u043b\u044f sls \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440. \u0418 \u0432\u043e\u0442 \u0440\u044f\u0434 \u043f\u043e\u0447\u0435\u043c\u0443:<\/p>\n<ol>\n<li>\n<p>\u0422\u0430\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0434\u0435\u0442 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u043c\u044b \u0442\u0440\u0430\u0442\u0438\u043c \u0434\u0440\u0430\u0433\u043e\u0446\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0439 control flow.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 &#171;\u0445\u043e\u0434\u0438\u0442\u044c&#187; \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u0442 (S3, DynamoDB \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 API AWS), \u0442\u043e \u043c\u044b \u0434\u0430\u0435\u043c \u0435\u0439 \u043e\u043f\u0430\u0441\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u0438: \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c <code>GET \/markets\/ticker<\/code>&nbsp;, \u043d\u043e \u0432\u043e\u0442 <code>GET \/markets<\/code>\u0434\u043e\u0440\u043e\u0433\u043e\u0439, \u0438 \u043d\u0430\u043c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a \u043d\u0435\u043c\u0443 throttling, \u0447\u0442\u043e \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u043e \u0443\u043c\u0443 \u0442\u0430\u043a\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435 \u043e\u0434\u043d\u043e\u0439, \u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0424\u0443\u043d\u043a\u0446\u0438\u0439. \u0412\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ef\/d4b\/34c\/5efd4b34cae28c6c9c96a1923b5777f3.png\" width=\"618\" height=\"680\"><figcaption><\/figcaption><\/figure>\n<p>\u0418 \u043a\u0430\u0436\u0434\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u0432\u043e\u044e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 &#8212; \u043a\u0430\u043a \u043d\u0430\u043c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0438 \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435?<\/p>\n<h2>3. \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b<\/h2>\n<p>\u041f\u043e\u0434\u0445\u043e\u0434 \u0432\u044b\u0448\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 2 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b: \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u0449\u0438\u043c \u043a\u043e\u0434\u043e\u043c (\u0447\u0442\u043e \u0435\u0441\u043b\u0438 90% \u043a\u043e\u0434\u0430 \u0432 \u0424\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435? \u0413\u0434\u0435 \u043c\u043e\u044f <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%91%D1%80%D0%B8%D1%82%D0%B2%D0%B0_%D0%9E%D0%BA%D0%BA%D0%B0%D0%BC%D0%B0\" rel=\"noopener noreferrer nofollow\">\u0431\u0440\u0438\u0442\u0432\u0430<\/a>?!) \u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.<\/p>\n<p>\u0420\u0430\u043d\u044c\u0448\u0435 \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0424\u0443\u043d\u043a\u0446\u0438\u044e \u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438, \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 deployment package \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0430 S3. \u0427\u0442\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0447\u0442\u043e \u0441 SAM \u044d\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"bash\">$ pip install -t . -r requirements.txt $ zip -r lambda.zip . $ aws s3 cp lambda.zip s3:\/\/bucket_name\/<\/code><\/pre>\n<p>\u0418 \u0435\u0441\u043b\u0438 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0435\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u043a-\u0442\u043e \u0436\u0438\u0442\u044c, \u0442\u043e \u0441 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441. \u0410 \u0432 &#171;\u043c\u043d\u043e\u0433\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u043c&#187; sls \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043d\u0430\u0439\u0434\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0430 \u0438\u043b\u0438 \u0434\u0432\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u043b\u044f\u0442 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<p>\u0414\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435 \u0442\u0430\u043a\u0430\u044f \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u0430\u044f, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u0440\u043e\u0439\u0434\u0435\u0442 \u043d\u0430 \u0441\u0442\u0430\u0434\u0438\u0438 \u0441\u0431\u043e\u0440\u043a\u0438. \u0414\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Python, JavaScript \u0438 Ruby, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043b\u043e\u0435\u0432 (Lambda Layers). \u0421\u043b\u043e\u0438 \u0424\u0443\u043d\u043a\u0446\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e \u0441\u0445\u043e\u0436\u0435\u043c\u0443 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u0441\u043e \u0441\u043b\u043e\u044f\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u043a runtime&#8217;\u0443 \u0424\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u043e\u0435\u043a\u0442 \u043c\u043e\u0436\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"bash\">$ tree -L 2 . \u251c\u2500\u2500 README.md  \u251c\u2500\u2500 requirements.txt \u251c\u2500\u2500 src # \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u2502&nbsp;&nbsp; \u251c\u2500\u2500 lambda # handler'\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2502&nbsp;&nbsp; \u2514\u2500\u2500 lib # \u043e\u0431\u0449\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u251c\u2500\u2500 template.yaml \u251c\u2500\u2500 tests \u2514\u2500\u2500 venv<\/code><\/pre>\n<p>\u0412 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 SAM \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u0441\u043b\u043e\u0439:<\/p>\n<pre><code>Resources:   Layer:     Type: AWS::Serverless::LayerVersion     Properties:       CompatibleRuntimes:           - python3.6           - python3.7           - python3.8           - python3.9       ContentUri: 'src\/lib'<\/code><\/pre>\n<p>\u041d\u0443 \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0434\u0435\u043b\u043e \u0442\u0435\u0445\u043d\u0438\u043a\u0438 &#8212; \u0432 \u0440\u0435\u0441\u0443\u0440\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e \u0441\u043b\u043e\u044f, \u0441\u0441\u044b\u043b\u0430\u044f\u0441\u044c \u043d\u0430 \u043d\u0435\u0435 \u0432 \u0441\u0430\u043c\u043e\u043c \u0436\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>Fn::Ref<\/code>.<\/p>\n<pre><code>Resources:   MarketsGet:     Type: AWS::Serverless::Function     Properties:       CodeUri: src\/lambda\/markets\/get       Handler: markets_get.handler       Layers:         - !Ref Layer       Events:         ApiEvent:           Type: Api           Properties:             Path: \/markets             RestApiId: !Ref Api             Method: get<\/code><\/pre>\n<p>\u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441: &#171;\u0410 \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u044b <strong>\u0440\u0430\u0437\u043d\u044b\u0435 <\/strong>\u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439?&#187; \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0421\u043b\u043e\u0435\u0432 \u044d\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f. \u0421\u0430\u043c\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 &#8212; \u0441\u043e\u0431\u0440\u0430\u0442\u044c, \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 Python &#8212; Pip server.<\/p>\n<h2>4. \u0420\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>\u0421 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439 \u0438 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u043e\u0439 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c, \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u0430\u043a &#171;\u043a\u0430\u0442\u0438\u0442\u044c&#187;. \u042f \u0443\u0432\u0435\u0440\u0435\u043d, \u043d\u0438 \u0434\u043b\u044f \u043a\u043e\u0433\u043e \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u043c, \u0447\u0442\u043e \u043a\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043d\u0443\u0436\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e IaC \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u043c\u043e\u043b\u043e\u0434\u043e\u0435 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e GitOps).<\/p>\n<p>\u0427\u0442\u043e CloudFormation, \u0447\u0442\u043e Terraform \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432 \u043e\u0431\u043b\u0430\u043a\u0435 \u043e\u0442 Amazon, \u043d\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 sls \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043c\u0443\u0442\u043e\u0440\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u0432 \u0432\u0438\u0434\u0443 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u0438 \u0442\u043e\u043d\u043a\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.<\/p>\n<p>SAM \u0445\u043e\u0440\u043e\u0448 \u0442\u0435\u043c, \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044e \u043d\u0430\u0434 CloudFormation \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 sls \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0412 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0410\u043d\u0442\u043e\u043d \u0411\u0430\u0431\u0435\u043d\u043a\u043e \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u043e\u0445\u043e\u0436\u0438\u0439 <a href=\"https:\/\/serverless.tf\/\" rel=\"noopener noreferrer nofollow\">\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442<\/a> \u0434\u043b\u044f TF. \u0412\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043e\u0434\u043d\u0438\u043c \u0438\u043b\u0438 \u0432\u0442\u043e\u0440\u044b\u043c \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 (\u0432 \u0442\u0443\u0441\u043e\u0432\u043a\u0435 \u0430\u043c\u0430\u0437\u043e\u043d\u0449\u0438\u043a\u043e\u0432 \u0443 \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0440\u0435\u043f\u0443\u0442\u0430\u0446\u0438\u044f &#171;\u0445\u0435\u0439\u0442\u0435\u0440\u0430&#187; Terraform), \u0430 \u0440\u0430\u0437\u0431\u043e\u0440 \u043e\u0442\u043b\u0438\u0447\u0438\u0439 \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>\u0412\u0441\u0435 \u0435\u0449\u0435 \u0436\u0438\u0432\u043e\u0439 <a href=\"https:\/\/www.serverless.com\/\" rel=\"noopener noreferrer nofollow\">Serverless framework<\/a> \u0442\u043e\u0436\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u043c \u0446\u0438\u043a\u043b\u043e\u043c sls \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (\u0441\u0430\u043c \u044f \u0441 \u043d\u0438\u043c \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0430 \u0432\u0430\u0448 \u0441\u0442\u0440\u0430\u0445 \u0438 \u0440\u0438\u0441\u043a).<\/p>\n<p>\u041d\u0443 \u0438 \u0432\u0438\u0448\u0435\u043d\u043a\u0430 \u043d\u0430 \u0442\u043e\u0440\u0442\u0435 \u0438 \u0432\u0435\u0440\u0448\u0438\u043d\u0430 \u0430\u0439\u0441\u0431\u0435\u0440\u0433\u0430 \u0425\u0430\u0439\u043f\u0430 &#8212; Cloud Development Kit \u0438\u043b\u0438 <a href=\"https:\/\/docs.aws.amazon.com\/cdk\/latest\/guide\/home.html\" rel=\"noopener noreferrer nofollow\">CDK<\/a>. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0432\u044b\u0448\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 CDK \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u0442 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (TypeScript, JavaScript, Python, C#, Java), \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f (&#171;\u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f&#187;) \u0432 \u0448\u0430\u0431\u043b\u043e\u043d CloudFormation. \u041f\u043e\u0445\u043e\u0436\u0443\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0438 \u0440\u0435\u0431\u044f\u0442\u0430 \u0438\u0437 HashiCorp, \u043d\u0430\u0437\u0432\u0430\u0432 \u0435\u0435 <a href=\"https:\/\/www.hashicorp.com\/blog\/cdk-for-terraform-enabling-python-and-typescript-support\" rel=\"noopener noreferrer nofollow\">cdktf<\/a>.<\/p>\n<p>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 CDK\/cdktf \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u0441\u043b\u043e\u0436\u043d\u0430\u044f, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0431\u0430\u0440\u044c\u0435\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0430\u0436\u0435 \u043d\u0435\u043e\u043f\u044b\u0442\u043d\u044b\u0435 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b-\u043e\u0431\u043b\u0430\u0447\u043d\u0438\u043a\u0438 \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043f\u0440\u0435\u0434\u043e\u043b\u043e\u0434\u0435\u0442\u044c. \u0412 \u0441\u0435\u0442\u0438 \u043f\u043e\u043b\u043d\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u043a\u0430\u043a \u0431\u043b\u043e\u0433\u043e\u0432, \u0442\u0430\u043a \u0438 self-paced workshop, \u043b\u0435\u043a\u0446\u0438\u0439, CDK day &#8212; \u0438\u0445 \u043c\u043e\u0440\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u043e\u0435 \u043f\u043e\u0441\u043b\u0430\u043d\u0438\u0435 \u21162<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0435\u0441\u043b\u0438 \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e CDK, \u043c\u0430\u044f\u043a\u043d\u0438\u0442\u0435. \u041d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0438 \u0432\u043f\u0440\u0430\u0432\u0434\u0443 \u043c\u043e\u0440\u0435, \u043d\u043e \u0432\u043e\u0442 \u0432 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u043c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0435 \u043c\u0430\u043b\u043e\u0432\u0430\u0442\u043e.<\/p>\n<\/div>\n<\/details>\n<p>\u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 sls \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 AWS &#8212; \u0443 \u0432\u0430\u0441 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 (pipeline), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u0442 \u0442\u0435\u0441\u0442\u044b, \u043f\u0430\u043a\u0443\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u0440\u0430\u0441\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438\u0445 \u043f\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u043c \u0438 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\u043c. \u0414\u0435\u043b\u0430\u0435\u0442\u0435 \u0432\u044b \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>sam deploy<\/code>&nbsp;\u0438\u043b\u0438 <code>terraform apply<\/code>&nbsp;&#8212; \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u0432\u0430\u0436\u043d\u043e.<\/p>\n<h2>5. \u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f<\/h2>\n<p>\u0421 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c\u0438 \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c\u0438 \u0438 \u043b\u043e\u0433\u0430\u043c\u0438 \u0424\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435\u0442 &#8212; \u043e\u043d\u0438 \u0441\u0430\u043c\u0438 \u0441\u043e\u0431\u043e\u0439 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 CloudWatch (\u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0437\u0430\u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0432 \u0440\u043e\u043b\u0438).<\/p>\n<p>\u041e\u0442\u043b\u0430\u0434\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0443\u044e CRUD-\u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0442\u043e\u0436\u0435 \u043c\u043d\u043e\u0433\u043e \u0443\u043c\u0430 \u043d\u0435 \u043d\u0430\u0434\u043e. \u041f\u0440\u0438\u043b\u0435\u0442\u0435\u043b JSON \u0432 \u0424\u0443\u043d\u043a\u0446\u0438\u044e, \u0441 \u043d\u0438\u043c \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e, \u0432\u044b\u0445\u043b\u043e\u043f \u043b\u0435\u0433 \u043a\u0443\u0434\u0430-\u0442\u043e. \u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435 \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0430\u0434\u0438\u0442\u044c \u0424\u0443\u043d\u043a\u0446\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u043e\u0433\u043e \u0436\u0435 SAM CLI, \u043f\u0440\u0438\u043b\u043e\u0436\u0438\u0432 \u043a \u043d\u0435\u0439 \u0431\u0430\u0433\u043e\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0449\u0438\u0439 event.<\/p>\n<p>\u0414\u0440\u0443\u0433\u043e\u0435 \u0434\u0435\u043b\u043e, \u0435\u0441\u043b\u0438 \u0424\u0443\u043d\u043a\u0446\u0438\u0439 \u043c\u043d\u043e\u0433\u043e \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043e\u043d\u0438 \u0432 \u043a\u0430\u043a\u043e\u043c-\u0442\u043e \u0434\u043e\u043b\u0433\u043e\u043c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043d\u0430\u043f\u043f\u0440\u0438\u043c\u0435\u0440 Step Functions. \u041e\u0442\u043b\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043a\u0430\u043a \u043f\u0440\u0438\u043b\u0435\u0442\u0435\u043b \u0437\u043b\u043e\u0441\u0447\u0430\u0441\u0442\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0441\u043c\u043e\u0433 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c &#8212; \u0442\u043e \u0435\u0449\u0435 \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0435\u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u0431\u0430\u0433.<\/p>\n<p>\u041d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u0438\u0434\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 observability \u043e\u0442 AWS \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c X-Ray. X-Ray \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438, \u043e\u043d \u0442\u0435\u0441\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0432 sls \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 X-Ray \u0432 \u0424\u0443\u043d\u043a\u0446\u0438\u0438, \u0438 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u043d\u0430\u0447\u043d\u0435\u0442 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0443\u0436\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0443\u0434\u0430 \u043f\u0440\u0438\u043b\u0435\u0442\u0435\u043b \u0437\u0430\u043f\u0440\u043e\u0441, \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u043a\u0438\u0435 \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0448\u0435\u043b, \u0438 \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043b\u043e\u0433\u043e\u0432 \u0442\u0435\u0445 \u0424\u0443\u043d\u043a\u0446\u0438\u0439 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430. X-Ray \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u043d\u0435\u0433, \u043d\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043a\u0430\u043a \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u0442\u0430\u043a \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c &#8212; \u0447\u0442\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u0441\u0435\u0431\u0435 \u0443\u0434\u0435\u0448\u0435\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u043b\u0435\u0442\u0443 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 production \u0432 debug mode.<\/p>\n<h2>6. \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c<\/h2>\n<p>\u0421 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c\u0438 \u0432\u0435\u0449\u0430\u043c\u0438 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u043c. \u0412\u0441\u0435\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b \u0442\u0430\u043a\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043a\u0430\u043a \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (at-rest, in-transit) \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u0430 c \u043f\u043e\u043c\u043e\u0449\u044c\u044e NACL \u0438 Security Groups.<\/p>\n<p>\u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u0432\u043e\u044f IAM \u0440\u043e\u043b\u044c. \u0418 \u043f\u043e \u043b\u0443\u0447\u0448\u0438\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u0440\u043e\u043b\u044c \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c least-privilege principle &#8212; \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435 \u0434\u0430\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u0430\u0432, \u0447\u0435\u043c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0435\u0441\u043b\u0438 \u043d\u0430\u0448\u0430 \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e <code>dynamodb:PutItem<\/code>, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u0434\u0430\u0432\u0430\u0442\u044c \u0440\u043e\u043b\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 <code>dynamodb:*<\/code>&nbsp;(\u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0432\u0441\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a DynamoDB). \u0422\u0430\u043a \u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u0432\u0438\u0434\u0435\u0442\u044c <code>Resource: \"*\"<\/code>, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430 \u0438\u0434\u0435\u0442 \u0432 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0432 sls \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 &#8212; \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043f\u0440\u0430\u0432. \u041f\u043e\u0442\u0440\u0430\u0442\u044c\u0435 \u0432\u0440\u0435\u043c\u044f \u0438 \u0438\u0437\u0443\u0447\u0438\u0442\u0435 \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 AWS IAM, \u0438 \u043a\u0430\u043a\u0438\u0435 \u0442\u0440\u044e\u043a\u0438 \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0434\u043b\u044f \u0442\u043e\u043d\u043a\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c.<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u043e\u0435 \u043f\u043e\u0441\u043b\u0430\u043d\u0438\u0435 \u21163<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0414\u043b\u044f \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b <a href=\"https:\/\/blog.tovmasyan.io\/aws-iam-deep-dive-chapter-1-essentials-a9cfb1931a01\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0432\u0435\u0441\u0442\u044c<\/a> \u0432 5 \u0442\u043e\u043c\u0430\u0445 \u043f\u0440\u043e IAM \u0438 \u0431\u0443\u0434\u0443 \u0440\u0430\u0434, \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u0442 \u0435\u0435 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a.<\/p>\n<\/div>\n<\/details>\n<p>\u0412\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e &#8212; \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0424\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e <strong>\u0441\u043d\u043e\u0432\u0430<\/strong>. \u041d\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0440\u0435\u0437\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u0430\u0432, \u043d\u043e \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0424\u0443\u043d\u043a\u0446\u0438\u0438. \u041a\u0430\u0436\u0434\u0430\u044f \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043e\u0434\u043d\u043e \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0435 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435: \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0443\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0445 \u043f\u0430\u0440 \u043d\u0430 \u0431\u0438\u0440\u0436\u0435, \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0446\u0435\u043d\u0443 \u043f\u0430\u0440\u044b, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0438\u0441\u044c\u043c\u043e \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p>\u0411\u043e\u044f\u0442\u044c\u0441\u044f \u0442\u0443\u0442 \u043d\u0430\u0434\u043e \u043d\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043a\u0442\u043e-\u0442\u043e \u0432\u0437\u043b\u043e\u043c\u0430\u0435\u0442 \u0424\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u0438\u0437\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u044f\u043a\u0438\u0435 \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u0438 (\u0442\u0430\u043a\u0430\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0435\u0441\u0442\u044c, \u043d\u043e \u044d\u0442\u043e \u0442\u0435\u043c\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438), \u043d\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0440\u043e\u043b\u044c \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u0442\u043e-\u0442\u043e \u043c\u043e\u0436\u0435\u0442 <em>assume<\/em>, \u0442.\u0435. &#171;\u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043d\u0430 \u0441\u0435\u0431\u044f&#187;. \u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u0437\u043b\u043e\u043c\u0430\u043b\u0438 <a href=\"https:\/\/krebsonsecurity.com\/2019\/08\/what-we-can-learn-from-the-capital-one-hack\/\" rel=\"noopener noreferrer nofollow\">Capital One<\/a>: \u043d\u0435 \u0432\u0437\u043b\u043e\u043c\u0430\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 ARN \u0440\u043e\u043b\u0438, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 STS \u043a\u043b\u044e\u0447, \u0441\u0435\u043a\u0440\u0435\u0442 \u0438 \u0442\u043e\u043a\u0435\u043d. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u0442\u043e-\u0442\u043e \u043e\u0448\u0438\u0431\u0441\u044f \u0432 \u043f\u043e\u043b\u0435 Principal. \u0421\u0442\u044b\u0434!<\/p>\n<hr>\n<p>\u0412\u0440\u043e\u0434\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u043b? \u042f \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u044e, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044f \u0432\u044b \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0431\u0435\u0436\u0438\u0442\u0435 \u043f\u0438\u0441\u0430\u0442\u044c Lambda \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u0445\u0432\u0430\u0441\u0442\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0440\u0435\u043c\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u044e\u0438\u043c\u0441\u044f \u043f\u0430\u0440\u043a\u043e\u043c EC2 \u043c\u0430\u0448\u0438\u043d. \u041d\u0438\u0436\u0435 \u044f \u043f\u0440\u0438\u043b\u0430\u0433\u0430\u044e  \u0441\u0441\u044b\u043b\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442 \u0432\u0430\u043c \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 Serverless \u0438 Lambda \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/serverlessland.com\/\" rel=\"noopener noreferrer nofollow\">https:\/\/serverlessland.com\/<\/a> &#8212; \u0430\u0433\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043f\u043e Serverless<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/cdkworkshop.com\/\" rel=\"noopener noreferrer nofollow\">https:\/\/cdkworkshop.com\/<\/a> &#8212; \u043e\u0431\u0448\u0438\u0440\u043d\u0430\u044f \u043b\u0430\u0431\u0430 \u043f\u043e CDK<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/aws.amazon.com\/serverless-workshops\/\" rel=\"noopener noreferrer nofollow\">https:\/\/aws.amazon.com\/serverless-workshops\/<\/a> &#8212; \u043b\u0430\u0431\u044b \u043f\u043e sls \u0441 &#171;\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0431\u0438\u0437\u043d\u0435\u0441 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u043c\u0438&#187;<\/p>\n<\/li>\n<\/ul>\n<p><em>P.S. \u042f \u0440\u0435\u0434\u043a\u043e \u043f\u0438\u0448\u0443 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0438 \u0435\u0449\u0435 \u0440\u0435\u0436\u0435 \u0447\u0443\u0432\u0441\u0442\u0432\u0443\u044e \u0441\u0442\u0440\u0430\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0435\u0439 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u043c\u0430\u0437\u043e\u043d\u0441\u043a\u043e\u0439 \u0431\u0440\u0430\u0442\u0438\u0438. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0447\u0442\u043e-\u0442\u043e, \u0447\u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u044c, \u043d\u043e \u043d\u0435\u0442 \u0441\u0438\u043b \u0438\u043b\u0438 \u043d\u0430\u0432\u044b\u043a\u0430 &#8212; \u043f\u0438\u0448\u0438\u0442\u0435, \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e \u0440\u0430\u0437\u0436\u0435\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0434\u043b\u044f \u0432\u0430\u043c \u0432 \u0443\u0434\u043e\u0431\u043e\u0432\u0430\u0440\u0438\u043c\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.<\/em><\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/546530\/\"> https:\/\/habr.com\/ru\/post\/546530\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"full-width\"><figcaption>\u041b\u043e\u0433\u043e\u0442\u0438\u043f AWS Lambda (\u043d\u0443 \u0438\u043b\u0438 Half Life, \u044f \u0442\u0430\u043a \u0438 \u043d\u0435 \u043f\u043e\u043d\u044f\u043b)<\/figcaption><\/figure>\n<hr>\n<p>\u0421 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430 AWS Lambda \u043f\u0440\u043e\u0448\u043b\u043e \u043d\u0438 \u043c\u043d\u043e\u0433\u043e \u043d\u0438 \u043c\u0430\u043b\u043e 6 \u0441 \u043b\u0438\u0448\u043d\u0438\u043c \u043b\u0435\u0442. \u0420\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0438 \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043d\u043e \u0438 \u043f\u043e\u0440\u043e\u0434\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 buzzword Serverless.<\/p>\n<p>\u041c\u043e\u0442\u0438\u0432\u043e\u043c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0441\u043b\u0443\u0436\u0438\u0442 <a href=\"https:\/\/netflixtechblog.com\/the-netflix-cosmos-platform-35c14d9351ad\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0441\u0442<\/a> \u0432 \u0431\u043b\u043e\u0433\u0435 Netflix. \u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0432 \u0435\u0433\u043e, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438, \u044f \u043f\u0440\u0438\u0445\u043e\u0436\u0443 \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 &#171;\u0431\u0435\u0441\u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439&#187; \u0435\u0449\u0435 \u043d\u0435 \u043e\u0431\u043a\u0430\u0442\u0430\u043d\u043e \u0432\u0434\u043e\u043b\u044c \u0438 \u043f\u043e\u043f\u0435\u0440\u0435\u043a (\u043a\u0430\u043a \u0438 \u0432 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0442\u0443\u0441\u043e\u0432\u043a\u0435, \u0447\u0435\u0433\u043e \u0433\u0440\u0435\u0445\u0430 \u0442\u0430\u0438\u0442\u044c), \u0438 \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u0431\u044b \u043f\u0440\u043e\u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437.<\/p>\n<p>\u041c\u043e\u0439 \u043f\u043e\u0441\u0442 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 AWS, \u043d\u043e \u0442\u0435\u0437\u0438\u0441\u044b \u0438\u0437 \u043d\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u044b \u043a\u0430\u043a \u043a \u0434\u0440\u0443\u0433\u0438\u043c \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u043c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c (GCP, Azure), \u0442\u0430\u043a \u0438 \u043a &#171;\u0434\u043e\u043c\u0430\u0448\u043d\u0438\u043c&#187; \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u043c (OpenFaaS).<\/p>\n<hr>\n<p>\u042f \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u043f\u0440\u043e\u0439\u0442\u0438\u0441\u044c \u043f\u043e \u0442\u0440\u0435\u043c, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0441\u0430\u043c\u044b\u043c \u0432\u0430\u0436\u043d\u044b\u043c, \u043f\u0443\u043d\u043a\u0442\u0430\u043c, \u043a\u0430\u0441\u0430\u044e\u0449\u0438\u043c\u0441\u044f Serverless<\/p>\n<ul>\n<li>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f &#171;\u0434\u0435\u043c\u0438\u0441\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e&#187; \u043f\u043e\u043d\u044f\u0442\u0438\u0435 Serverless, \u043e\u0442\u0434\u0435\u043b\u0438\u0432 \u0435\u0433\u043e \u043e\u0442 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 Lambda,<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u0442\u0435\u043c \u044f \u043f\u0440\u043e\u0439\u0434\u0443\u0441\u044c \u043f\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 Lambda<\/p>\n<\/li>\n<li>\n<p>\u0418 \u0437\u0430\u043a\u043e\u043d\u0447\u0443 \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u0440\u044f\u0434\u043e\u043c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u044e Serverless \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<\/p>\n<\/li>\n<\/ul>\n<p><em>\u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <\/em><strong><em>sls<\/em><\/strong><em> \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f Serverless. \u042f \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u043d\u0438\u0432\u044b\u0439.<\/em><\/p>\n<h2>Lambda != Serverless, Lambda in Serverless == True<\/h2>\n<p>\u0413\u043e\u0440\u0435 \u043f\u0430\u0432\u0448\u0438\u043c \u0436\u0435\u0440\u0442\u0432\u0430\u043c\u0438 \u0441\u043b\u0430\u0434\u043a\u0438\u0445 \u0440\u0435\u0447\u0435\u0439 \u0430\u0434\u0432\u043e\u043a\u0430\u0442\u043e\u0432 \u0438 \u0435\u0432\u0430\u043d\u0433\u0435\u043b\u0438\u0441\u0442\u043e\u0432! &#171;\u0412\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0430\u0440\u043a\u043e\u043c \u043c\u0430\u0448\u0438\u043d!&#187;, &#171;\u0412\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0441\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0437\u0430 \u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b!&#187;, &#171;\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e sls \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0432\u0430\u0448\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0435\u0442 \u0432 \u0440\u0430\u0437\u044b!&#187;, &#8212; \u044d\u0442\u043e \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c \u043c\u043d\u0435 \u0442\u043e\u043b\u043f\u044b \u0433\u0435\u0440\u043e\u0435\u0432 \u0438 \u0435\u0432\u0430\u043d\u0433\u0435\u043b\u0438\u0441\u0442\u043e\u0432 AWS, \u043d\u043e \u044f \u043f\u043e\u0437\u043d\u0430\u043b \u0441\u0443\u0442\u044c\u2122.<\/p>\n<p>\u0412\u0438\u0434\u0438\u0442\u0435 \u043b\u0438, \u0440\u0438\u0442\u043e\u0440\u0438\u043a\u0430 &#171;\u043c\u043d\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u0443\u043c\u0430\u0442\u044c \u043e\u0431 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435&#187; \u043e\u0431\u0440\u0435\u0447\u0435\u043d\u0430 \u043d\u0430 \u043f\u0440\u043e\u0432\u0430\u043b. \u0420\u0430\u0437\u0432\u0435 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0432\u043e\u0437\u0434\u0443\u0445\u0435? \u0420\u0430\u0437\u0432\u0435 \u043e\u043d \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0435\u0442\u0438? \u0420\u0430\u0437\u0432\u0435 \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u044c\u0441\u044f \u043e\u0431 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435, \u0435\u0441\u043b\u0438 \u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c Kubernetes, \u0438 \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u044e \u0432 \u043d\u0435\u043c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438?<\/p>\n<p>\u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e <a href=\"https:\/\/youtu.be\/HaEPXoXVf2k?t=3456\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e<\/a> sls \u043e\u043f\u0438\u0441\u0430\u043b \u0420\u0438\u043a \u0425\u0443\u043b\u0438\u0445\u0430\u043d \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u043e\u043c\u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430\u043c DynamoDB, \u043a\u0440\u0430\u0442\u043a\u043e \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0432 \u043d\u043e\u0432\u0443\u044e \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0443 (\u0432\u0435\u0441\u044c \u0434\u043e\u043a\u043b\u0430\u0434 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439, \u043d\u043e \u0441\u0441\u044b\u043b\u043a\u0430 \u0432\u0435\u0434\u0435\u0442 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442).<\/p>\n<p>Fail cheap &#8212; \u0432\u043e\u0442, \u0447\u0442\u043e \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e &#171;\u043f\u0440\u043e\u0434\u0430\u0435\u0442&#187; sls. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0435\u0437\u0438\u0441, \u043c\u043d\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e <strong>\u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e <\/strong>\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u043a\u0430\u043a \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u0431\u044b \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438\u0437 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043e\u043a \u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0434\u0435\u0441\u044c &#8212; \u043d\u0435 \u0440\u0435\u0448\u0430\u044e\u0449\u0438\u0439 \u0444\u0430\u043a\u0442\u043e\u0440. \u0412 2021-\u043e\u043c \u0433\u043e\u0434\u0443, \u0447\u0442\u043e Lambda \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0447\u0442\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430 DynamoDB, \u0447\u0442\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432 ECS\/EKS, \u0447\u0442\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 EC2 &#8212; \u0432\u0441\u0435 \u044d\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0435 \u043c\u0438\u043d\u0443\u0442\u044b, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043a\u0440\u044b\u0442\u043e\u0435 \u043f\u043e\u0441\u043b\u0430\u043d\u0438\u0435 \u21161<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0415\u0441\u043b\u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0435 \u0443 \u0432\u0430\u0441 \u043f\u0440\u043e\u043f\u0430\u043b \u0438\u043d\u0442\u0435\u0440\u0435\u0441, \u0441\u043c\u0435\u043b\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u0442\u0430\u0442\u044c\u044e. Serverless \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043f\u0440\u043e\u0441\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b. \u042d\u0442\u043e \u0438\u043d\u043e\u0439 \u0432\u0438\u0434 \u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0438 \u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043d \u043b\u0443\u0447\u0448\u0435 \u0443\u0436\u0435 \u0443\u0441\u0442\u043e\u044f\u0432\u0448\u0438\u0445\u0441\u044f.<\/p>\n<\/div>\n<\/details>\n<h2>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Serverless<\/h2>\n<p>AWS \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0442\u044f\u0436\u0435\u0441\u0442\u0438, \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u0435\u0442 \u0431\u0438\u0440\u043a\u0443 sls &#8212; \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 (SQS, Kinesis), \u043d\u043e\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 (SES, SNS), \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 (EventBridge, Step Functions), \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 (S3), \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 (DynamoDB), \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 (Glue, Athena). \u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043c\u043e\u0435 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 HighLoad++, \u0432\u044b \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u044f <a href=\"https:\/\/youtu.be\/BEZKub1BYCE?t=1718\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u043b\u0438\u0447\u0430\u044e<\/a> sls \u043e\u0442 &#171;\u043e\u0431\u044b\u0447\u043d\u044b\u0445&#187; \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. Sls \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0434\u043b\u044f \u0432\u0430\u0441 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438, \u0441\u043d\u0438\u043c\u0430\u044f \u0441 \u0432\u0430\u0441 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c (\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435\u0442 &#8212; \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0430\u043c \u043d\u0430\u0434\u043e \u0443\u0447\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e\/\u043f\u043e\u0434\u0445\u043e\u0434).<\/p>\n<p>\u0412\u0437\u044f\u0442\u044c \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 DynamoDB &#8212; \u0441\u0430\u043c\u0430 \u0421\u0423\u0411\u0414 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c! \u0412 \u0432\u0430\u0448\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441 \u0435\u0435 &#171;\u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e&#187; (WCU\/RCU), \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0444\u0438\u0447\u0438. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c ETL Glue \u0432\u0430\u0441 \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u043a \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0441\u0430\u043c\u0438\u043c \u0434\u0432\u0438\u0436\u043a\u043e\u043c ETL &#8212; \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u0442\u0435 \u0441\u0445\u0435\u043c\u0443 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0438 \u043f\u0443\u043d\u043a\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0435 \u0437\u0430\u0434\u0430\u0447\u0443. \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043d\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u0441\u0435\u0431\u0435 \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437 \u043d\u043e\u0433\u0443 \u043d\u0435 \u043e\u0442\u0441\u0442\u0440\u0435\u043b\u0438\u043b\u0438 (\u0435\u0441\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u0442\u0441\u0442\u0440\u0435\u043b\u0438\u0442\u044c &#8212; \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0435 \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0430\u0445 \u0415\u04212).<\/p>\n<p>\u041e\u0442\u043b\u0438\u0447\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0431\u0438\u043b\u043b\u0438\u043d\u0433\u0435. \u0415\u0441\u043b\u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0431\u0430\u0437\u0430\u043c\u0438 RDS \u0438 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438 ECS Fargate \u0433\u0434\u0435 \u043e\u043f\u043b\u0430\u0442\u0430 \u0438\u0434\u0435\u0442 \u043f\u043e\u043c\u0438\u043d\u0443\u0442\u043d\u043e (\u0438\u043b\u0438 \u043f\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u043d\u043e?), \u0441 sls \u0432\u044b \u043f\u043b\u0430\u0442\u0438\u0442\u0435 \u0437\u0430 \u043e\u0431\u044a\u0435\u043c (\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 &#171;\u0432\u0435\u0441\u044f\u0442&#187; \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 S3) \u0438 \u0443\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044e (\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0442\u0440\u0430\u0444\u0438\u043a).<\/p>\n<p>\u0417\u0430 \u0441\u0447\u0435\u0442 \u0433\u0440\u0430\u043d\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0431\u0438\u043b\u043b\u0438\u043d\u0433\u0430 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0442\u043e\u0447\u043d\u0435\u0435 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u0438 \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u0430 \u0432\u0430\u0448\u0443 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0438 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0435. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 3 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0438\u0448\u0443\u0442 \u043f\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044e \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043e\u0442\u043a\u0443\u0434\u0430 \u043f\u043e\u0442\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0442\u043e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u043c \u043e\u0431\u043e\u0439\u0434\u0435\u0442\u0441\u044f 1000 \u0442\u0430\u043a\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439. \u0418\u043b\u0438 \u043c\u0438\u043b\u043b\u0438\u043e\u043d.<\/p>\n<p>\u041e\u0442\u0441\u044e\u0434\u0430 \u0436\u0435 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c\u044e. \u0412\u0441\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043b\u0438\u0431\u043e \u0443 \u0432\u0430\u0441 \u0432 \u0433\u043e\u043b\u043e\u0432\u0435, \u043b\u0438\u0431\u043e \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u044b \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 <a href=\"https:\/\/docs.aws.amazon.com\/general\/latest\/gr\/aws-service-information.html\" rel=\"noopener noreferrer nofollow\">\u043a\u0432\u043e\u0442<\/a> AWS.<\/p>\n<p>\u041d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e, \u0432\u0435\u0440\u043d\u043e? \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u043d\u0435\u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u043a\u0430\u043a \u0440\u0430\u0437 \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u0441\u0442\u0438\u043d\u044b \u0432 \u0443\u043c\u0430\u0445: sls &#8212; \u044d\u0442\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u043d\u0430\u0434 PaaS, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0430\u0440\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e-\u0434\u0440\u0443\u0433\u043e\u043c\u0443.<\/p>\n<p>\u041e\u0442\u0441\u044e\u0434\u0430 \u0438 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441 sls \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438. Sls \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 &#8212; \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0431\u043e\u0440 Lambda \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0437\u0430 API GW. Sls \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 <em>\u0442\u043e\u043b\u044c\u043a\u043e<\/em> \u0438\u0437 sls \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432.<\/p>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043f\u043e \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0443 \u0432\u0430\u0441 \u043d\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c. \u0415\u0441\u043b\u0438 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c &#8212; \u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u043e\u0442\u0432\u0435\u0447\u0443 \u0432\u0441\u0435\u043c \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h2>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 AWS Lambda<\/h2>\n<p>\u0420\u043e\u0434\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0438\u0446\u0430 sls \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0432\u044b\u0437\u0432\u0430\u043b\u0430 \u0432 \u0441\u0432\u043e\u0435\u0439 \u0432\u0440\u0435\u043c\u044f \u043d\u0435\u043c\u0430\u043b\u043e \u0448\u0443\u043c\u0430, \u0432\u0435\u0434\u044c \u0435\u0435 \u0440\u0435\u043b\u0438\u0437 \u043f\u0440\u0438\u0448\u0435\u043b\u0441\u044f \u043d\u0430 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f, \u0447\u0442\u043e \u0438 \u0431\u0443\u0440\u044f \u0432\u043e\u043a\u0440\u0443\u0433 Docker \u0438 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0435 Kubernetes. \u0417\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u043e\u0439 Lambda \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (\u0434\u0430\u043b\u0435\u0435 &#8212; \u0424\u0443\u043d\u043a\u0446\u0438\u044f) \u0441\u0442\u043e\u0438\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044c, \u0432\u0435\u0434\u044c \u043c\u044b\u0441\u043b\u044c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e &#171;\u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c&#187; \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u0434\u043e\u0432\u0435\u0440\u0438\u0435.<\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0436\u0435 \u0434\u0435\u043b\u0435 \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u0437\u0432\u0443\u0447\u0430\u0442 \u0438\u0437 \u0441\u043b\u0430\u0434\u043a\u0438\u0445 \u0443\u0441\u0442 \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 sls \u0435\u0432\u0430\u043d\u0433\u0435\u043b\u0438\u0441\u0442\u043e\u0432 \u0438 \u0433\u0435\u0440\u043e\u0435\u0432, (\u0438 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0442 \u043d\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0437\u0436\u0435). \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 3 \u0447\u0430\u0441\u0442\u0435\u0439: \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0421\u043e\u0431\u044b\u0442\u0438\u044f (Triggering Event); \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 AWS Lambda &#8212; runtime, deployment package (\u043b\u043e\u0433\u0438\u043a\u0430 \u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438), \u0441\u043b\u043e\u0438 (layers) \u0438 &#171;\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435&#187; (extensions); \u0442\u043e\u0447\u043a\u0430 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0424\u0443\u043d\u043a\u0446\u0438\u0438 (\u0435\u0441\u043b\u0438 \u0438\u043c\u0435\u0435\u0442\u0441\u044f) &#8212; \u043a\u043e\u0440\u0437\u0438\u043d\u0430 S3, \u0442\u0430\u0431\u043b\u0438\u0446\u0430 DynamoDB, \u043e\u0447\u0435\u0440\u0435\u0434\u044c SQS \u0438 \u0442.\u0434.<\/p>\n<figure class=\"full-width\"><figcaption>\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043f\u043e\u0441\u0432\u044f\u0449\u0430\u0435\u0442\u0441\u044f \u0412\u0430\u043d\u0435 \u041c\u043e\u0438\u0441\u0435\u0435\u0432\u0443 &#8212; \u043c\u043e\u0435\u043c\u0443 \u0434\u0440\u0443\u0433\u0443 \u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044e \u0438\u043a\u043e\u043d\u043e\u043a AWS<\/figcaption><\/figure>\n<p>\u0412 \u0434\u043e\u0432\u0435\u0441\u043e\u043a \u043a \u044d\u0442\u043e\u043c\u0443 \u0438\u0434\u0443\u0442 \u0435\u0449\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433, \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u0440\u0435\u043b\u0435\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Lambda Permission &#8212; \u0430 \u0438\u043c\u0435\u043d\u043d\u043e &#171;\u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435&#187; \u043a\u0430\u043a\u043e\u043c\u0443-\u0442\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 \u0440\u0435\u0441\u0443\u0440\u0441\u0443 (\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u0439) \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0424\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f \u0438\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 (\u0421\u043e\u0431\u044b\u0442\u0438\u0435).<\/p>\n<p>\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c Lambda &#8212; \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043a\u0443\u0434\u0430 \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0438 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0441\u043b\u0443\u0448\u0430\u0442\u044c \u043e \u043d\u0435\u0439 \u0438\u0437 <a href=\"https:\/\/youtu.be\/QdzV04T_kec\" rel=\"noopener noreferrer nofollow\">\u043f\u0435\u0440\u0432\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430<\/a>.<\/p>\n<p>\u041d\u0435\u0437\u0430\u043c\u044b\u0441\u043b\u043e\u0432\u0430\u0442\u0430\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u0440\u043e\u0434\u0438\u043b\u0430 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0443, compliance, governance \u0438 \u043c\u043d\u043e\u0433\u043e \u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u0438\u0445. \u041f\u043e\u043a\u0440\u044b\u0442\u044c \u0438\u0445 \u0432\u0441\u0435 &#8212; \u0442\u0435\u043c\u0430 \u043d\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u0430 \u0441\u0442\u0430\u0442\u0435\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043b\u044c\u0448\u0435 \u044f \u043f\u0440\u043e\u0439\u0434\u0443\u0441\u044c \u043f\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u043c.<\/p>\n<h2>\u041a\u0430\u043a \u0436\u0438\u0442\u044c \u0441 Lambda<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443. \u0415\u0441\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u0430\u0434\u0440\u0435\u0441\u043e\u0432\u0430\u0442\u044c:<\/p>\n<ol>\n<li>\n<p>\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 sls \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/p>\n<\/li>\n<li>\n<p>\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435<\/p>\n<\/li>\n<li>\n<p>\u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f (\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433, \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430)<\/p>\n<\/li>\n<li>\n<p>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c<\/p>\n<\/li>\n<\/ol>\n<p>\u0417\u0432\u0443\u0447\u0438\u0442 \u0441\u043b\u043e\u0436\u043d\u043e? \u041d\u0443 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0442 \u043c\u0435\u043d\u044f \u043f\u0440\u0438\u0432\u0435\u0442 \u0442\u0435\u043c, \u043a\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0447\u0442\u043e sls \u044d\u0442\u043e \u043b\u0435\u0433\u043a\u043e. <\/p>\n<h2>1. \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0430<\/h2>\n<p>\u0421\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0432\u044b\u043c \u043f\u0443\u043d\u043a\u0442\u043e\u043c \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0441 \u044d\u0442\u043e\u0433\u043e \u0432\u0441\u0435 \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f. AWS \u0437\u0430\u0432\u0435\u0437 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c Serverless Application Model \u0438\u043b\u0438 <a href=\"https:\/\/aws.amazon.com\/serverless\/sam\/\" rel=\"noopener noreferrer nofollow\">SAM<\/a>.<\/p>\n<p>SAM \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0434\u0432\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430: \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 aws-sam-cli (\u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u043a\u0430\u043a \u0447\u0435\u0440\u0435\u0437 <code>brew<\/code> \u0442\u0430\u043a \u0438 \u0447\u0435\u0440\u0435\u0437 <code>pip<\/code>) \u0438 \u0448\u0430\u0431\u043b\u043e\u043d (\u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u044b\u0439 CloudFormation).<\/p>\n<p>\u0414\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u0435\u0435 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435. \u0417\u0430\u0442\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0435\u0435 \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438: <code>sam local invoke<\/code>&nbsp;\u0438\u043b\u0438 <code>sam local start-api<\/code>&nbsp;(\u0434\u043b\u044f \u0424\u0443\u043d\u043a\u0446\u0438\u0439, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0445 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432\u044b API GW).<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0432\u0438\u0434\u0438\u0442\u0435 SAM, \u0442\u043e \u043f\u0440\u043e\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 quick start \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0437\u0430\u0431\u043e\u0442\u043b\u0438\u0432\u043e \u043f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0432\u0430\u0441 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c\u0438 AWS.<\/p>\n<pre><code class=\"bash\">$ sam init Which template source would you like to use? \t1 - AWS Quick Start Templates \t2 - Custom Template Location Choice: 1 What package type would you like to use? \t1 - Zip (artifact is a zip uploaded to S3) \t2 - Image (artifact is an image uploaded to an ECR image repository) Package type: 1  Which runtime would you like to use? \t1 - nodejs12.x \t2 - python3.8 \t3 - ruby2.7 \t4 - go1.x \t5 - java11 \t6 - dotnetcore3.1 \t7 - nodejs10.x \t8 - python3.7 \t9 - python3.6 \t10 - python2.7 \t11 - ruby2.5 \t12 - java8.al2 \t13 - java8 \t14 - dotnetcore2.1 Runtime: 2  Project name [sam-app]:  Cloning app templates from https:\/\/github.com\/aws\/aws-sam-cli-app-templates  AWS quick start application templates: \t1 - Hello World Example \t2 - EventBridge Hello World \t3 - EventBridge App from scratch (100+ Event Schemas) \t4 - Step Functions Sample App (Stock Trader) \t5 - Elastic File System Sample App Template selection: 1      -----------------------     Generating application:     -----------------------     Name: sam-app     Runtime: python3.8     Dependency Manager: pip     Application Template: hello-world     Output Directory: .      Next steps can be found in the README file at .\/sam-app\/README.md<\/code><\/pre>\n<p>\u041f\u0440\u043e\u0439\u0434\u044f \u0432 <code>sam-app<\/code>&nbsp;\u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e (\u043f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0437\u0430\u0439\u043c\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043e\u0431\u0440\u0430\u0437 Lambda runtime \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c):<\/p>\n<pre><code class=\"bash\">$ sam local invoke HelloWorldFunction Invoking app.lambda_handler (python3.8) Image was not found. Building image....................................... Skip pulling image and use local one: amazon\/aws-sam-cli-emulation-image-python3.8:rapid-1.15.0.  Mounting \/Users\/karentovmasyan\/Development\/Personal\/dummy_project\/sam-app\/hello_world as \/var\/task:ro,delegated inside runtime container START RequestId: e7036160-e11c-440a-b089-8099b1e0d500 Version: $LATEST END RequestId: e7036160-e11c-440a-b089-8099b1e0d500 REPORT RequestId: e7036160-e11c-440a-b089-8099b1e0d500\tInit Duration: 0.29 ms\tDuration: 114.08 ms\tBilled Duration: 200 ms\tMemory Size: 128 MB\tMax Memory Used: 128 MB {\"statusCode\": 200, \"body\": \"{\\\"message\\\": \\\"hello world\\\"}\"}%<\/code><\/pre>\n<p>\u0410 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f JetBrain IDE \u0438\u043b\u0438 VS Code \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a, \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u0433\u0434\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 JSON \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f!<\/p>\n<h2>2. \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 sls \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/h2>\n<p>\u041c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 (\u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441) \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0440\u0443\u0448\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u0431\u0438\u0437\u043d\u0435\u0441 \u0441\u0432\u043e\u0438\u043c \u043f\u0430\u0434\u0435\u043d\u0438\u0435\u043c, \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0431\u0438\u0437\u043d\u0435\u0441-\u0437\u0430\u0434\u0430\u0447\u0443.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u043d\u0435\u043a\u0438\u0439 market-service \u0434\u043b\u044f \u0431\u0438\u0440\u0436\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442 API <code>GET \/markets<\/code>. \u0412\u044b\u0437\u043e\u0432\u044b \u043d\u0430<\/p>\n<\/hr>\n<\/hr>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-319611","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/319611","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=319611"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/319611\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=319611"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=319611"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=319611"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}