{"id":39686,"date":"2020-12-04T17:04:19","date_gmt":"2020-12-04T08:04:19","guid":{"rendered":"https:\/\/jirak.net\/wp\/aws-lambda%ec%9d%98-%ec%83%88%eb%a1%9c%ec%9a%b4-%ea%b8%b0%eb%8a%a5-%ec%bb%a8%ed%85%8c%ec%9d%b4%eb%84%88-%ec%9d%b4%eb%af%b8%ec%a7%80-%ec%a7%80%ec%9b%90\/"},"modified":"2020-12-04T17:34:14","modified_gmt":"2020-12-04T08:34:14","slug":"aws-lambda%ec%9d%98-%ec%83%88%eb%a1%9c%ec%9a%b4-%ea%b8%b0%eb%8a%a5-%ec%bb%a8%ed%85%8c%ec%9d%b4%eb%84%88-%ec%9d%b4%eb%af%b8%ec%a7%80-%ec%a7%80%ec%9b%90","status":"publish","type":"post","link":"https:\/\/jirak.net\/wp\/aws-lambda%ec%9d%98-%ec%83%88%eb%a1%9c%ec%9a%b4-%ea%b8%b0%eb%8a%a5-%ec%bb%a8%ed%85%8c%ec%9d%b4%eb%84%88-%ec%9d%b4%eb%af%b8%ec%a7%80-%ec%a7%80%ec%9b%90\/","title":{"rendered":"AWS Lambda\uc758 \uc0c8\ub85c\uc6b4 \uae30\ub2a5 \u2014 \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0 \uc9c0\uc6d0"},"content":{"rendered":"<p>AWS Lambda\uc758 \uc0c8\ub85c\uc6b4 \uae30\ub2a5 \u2014 \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0 \uc9c0\uc6d0<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jirak.net\/wp\/wp-content\/uploads\/2020\/12\/lambda-containers-create-function-1024x484-1.png\" width=\"1024\" height=\"484\"><\/p>\n<p><a title=\"\" href=\"https:\/\/aws.amazon.com\/lambda\/\">AWS Lambda<\/a>\ub97c \uc0ac\uc6a9\ud558\uba74 \uc11c\ubc84 \uc5c6\uc774 \ucf54\ub4dc\ub97c \uc5c5\ub85c\ub4dc\ud574\uc11c \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/aws.amazon.com\/lambda\/resources\/customer-case-studies\/\">\ub9ce\uc740 \uace0\uac1d\ub4e4\uc774 \uc774\uc640 \uac19\uc740 \uc791\uc5c5 \ubc29\uc2dd\uc744 \uc0ac\uc6a9\ud558\uace0 \uc788\uc9c0\ub9cc<\/a>, \uac1c\ubc1c \uc6cc\ud06c\ud50c\ub85c\uc5d0 \ub300\ud574 \ucee8\ud14c\uc774\ub108\ud654 \ud558\ub294\ub370 \ud22c\uc790\ud55c \uacbd\uc6b0\uc5d0\ub294 \ub3d9\uc77c\ud55c \ubc29\uc2dd\uc73c\ub85c Lambda\ub97c \uc0ac\uc6a9\ud558\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uad6c\ucd95\ud558\ub294 \uc791\uc5c5\uc774 \uc27d\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774\ub97c \uc9c0\uc6d0\ud558\uae30 \uc704\ud574 \uc774\uc81c Lambda \ud568\uc218\ub97c \ucd5c\ub300 <strong>10GB<\/strong> \ud06c\uae30\uc758 <strong>\ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0<\/strong>\ub85c \ud328\ud0a4\uc9d5 \ubc0f \ubc30\ud3ec\ud560 \uc218 \uc788\ub294 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \uae30\uacc4 \ud559\uc2b5 \ub610\ub294 \ub370\uc774\ud130 \uc9d1\uc57d\uc801 \uc6cc\ud06c\ub85c\ub4dc\uc640 \uac19\uc774 \uc0c1\ub2f9\ud55c \uc885\uc18d\uc131\uc774 \uc218\ubc18\ub418\ub294 \ub300\uaddc\ubaa8 \uc6cc\ud06c\ub85c\ub4dc\ub97c \uc27d\uac8c \uad6c\ucd95\ud558\uace0 \ubc30\ud3ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. ZIP \uc544\uce74\uc774\ube0c\ub85c \ud328\ud0a4\uc9d5\ub41c \ud568\uc218\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\ub85c \ubc30\ud3ec\ub418\ub294 \ud568\uc218\ub294 \uc6b4\uc601 \ud3b8\uc758\uc131, \uc790\ub3d9 \ud655\uc7a5, \uace0\uac00\uc6a9\uc131, \uc5ec\ub7ec \uc11c\ube44\uc2a4\uc640\uc758 \uae30\ubcf8 \ud1b5\ud569\uc774\ub77c\ub294 \uc774\uc810\uc744 \ub3d9\uc77c\ud558\uac8c \ub204\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc9c0\uc6d0\ub418\ub294 \ubaa8\ub4e0 Lambda \ub7f0\ud0c0\uc784(Python, Node.js, Java, .NET, Go, Ruby)\uc5d0 \ub300\ud574 <strong>\uae30\ubcf8 \uc774\ubbf8\uc9c0<\/strong>\ub97c \uc81c\uacf5\ud558\uace0 \uc788\uc73c\ubbc0\ub85c \uc5ec\ub7ec\ubd84\uc758 \ucf54\ub4dc\uc640 \uc885\uc18d\uc131\uc744 \uc27d\uac8c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c Lambda Runtime API\ub85c \uad6c\ud604\ud55c \uc790\uccb4 \ub7f0\ud0c0\uc784\uc744 \ud3ec\ud568\ud574\uc11c \ud655\uc7a5\ud560 \uc218 \uc788\ub3c4\ub85d&nbsp; <a href=\"https:\/\/aws.amazon.com\/amazon-linux-2\/\">Amazon Linux<\/a>\ub97c \uae30\ubc18\uc758 \uc0ac\uc6a9\uc790 \uc815\uc758 \ub7f0\ud0c0\uc784\uc744 \uc704\ud55c \uae30\ubcf8 \uc774\ubbf8\uc9c0\ub3c4 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc5ec\ub7ec\ubd84\uc774 \uc0ac\uc6a9\ud558\ub294 \uc784\uc758\uc758 \uae30\ubcf8 \uc774\ubbf8\uc9c0\ub3c4 Lambda\uc5d0 \ubc30\ud3ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4(\uc608: <a href=\"https:\/\/alpinelinux.org\/\">Alpine<\/a> \ub610\ub294 <a href=\"https:\/\/www.debian.org\/\">Debian<\/a> Linux\ub97c \uae30\ubc18\uc73c\ub85c \ud558\ub294 \uc774\ubbf8\uc9c0). Lambda\ub97c \uc0ac\uc6a9\ud558\ub824\uba74 \uc774\ub7ec\ud55c \uc774\ubbf8\uc9c0\uac00 <a href=\"https:\/\/docs.aws.amazon.com\/lambda\/latest\/dg\/runtimes-api.html\">Lambda Runtime API<\/a>\ub97c \uad6c\ud604\ud574\uc57c \ud569\ub2c8\ub2e4. \uc0ac\uc6a9\uc790 \uc800\uc758 \uae30\ubcf8 \uc774\ubbf8\uc9c0\ub97c \ub354\uc6b1 \uc27d\uac8c \ub9cc\ub4e4 \uc218 \uc788\ub3c4\ub85d, \uc9c0\uc6d0\ub418\ub294 \ubaa8\ub4e0 \ub7f0\ud0c0\uc784\uc5d0 \ub300\ud574 Runtime API\ub97c \uad6c\ud604\ud55c&nbsp;<a href=\"https:\/\/docs.aws.amazon.com\/lambda\/latest\/dg\/runtimes-images.html\"><strong>Lambda Runtime Interface Clients<\/strong><\/a>\uac00 \ucd9c\uc2dc\ub429\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uad6c\ud604\uc740 \ub124\uc774\ud2f0\ube0c \ud328\ud0a4\uc9c0 \uad00\ub9ac\uc790\ub97c \ud1b5\ud574 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c \uc774\ubbf8\uc9c0\uc5d0\uc11c \uc27d\uac8c \uc120\ud0dd\ud560 \uc218 \uc788\uc73c\uba70 \uc624\ud508 \uc18c\uc2a4 \ub77c\uc774\uc120\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \ucee4\ubba4\ub2c8\ud2f0\uc640 \uacf5\uc720\ub429\ub2c8\ub2e4.<\/p>\n<p>\ub610\ud55c \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\uc758 \ub85c\uceec \ud14c\uc2a4\ud2b8\ub97c \uc218\ud589\ud558\uace0 Lambda\uc5d0 \ubc30\ud3ec\ud560 \ub54c \uc2e4\ud589\ub418\ub294\uc9c0 \ud655\uc778\ud560 \uc218 \uc788\ub294 <strong>Lambda Runtime Interface Emulator<\/strong>\uac00 \uc624\ud508 \uc18c\uc2a4\ub85c \ucd9c\uc2dc\ub429\ub2c8\ub2e4. Lambda Runtime Interface Emulator\ub294 AWS\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \ubaa8\ub4e0 \uae30\ubcf8 \uc774\ubbf8\uc9c0\uc5d0 \ud3ec\ud568\ub418\uc5b4 \uc788\uc73c\uba70 \uc784\uc758\uc758 \uc774\ubbf8\uc9c0\uc640 \ud568\uaed8 \uc0ac\uc6a9\ub420 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\ub294 <a href=\"https:\/\/docs.aws.amazon.com\/lambda\/latest\/dg\/runtimes-extensions-api.html\">Lambda Extensions API<\/a>\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubaa8\ub2c8\ud130\ub9c1, \ubcf4\uc548 \ubc0f \uae30\ud0c0 \ub3c4\uad6c\ub97c Lambda \uc2e4\ud589 \ud658\uacbd\uacfc \ud1b5\ud569\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\ub97c \ubc30\ud3ec\ud558\ub824\uba74 <a title=\"\" href=\"https:\/\/aws.amazon.com\/ecr\/\">Amazon Elastic Container Registry<\/a> <strong>\ub9ac\ud3ec\uc9c0\ud1a0\ub9ac<\/strong> \uc911\uc5d0\uc11c \ud558\ub098\ub97c \uc120\ud0dd\ud569\ub2c8\ub2e4. \uba87 \uac00\uc9c0 \uc608\uc81c\ub97c \ud1b5\ud574 \uc2e4\uc81c\ub85c \uc5b4\ub5bb\uac8c \uc791\ub3d9\ud558\ub294\uc9c0 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uba3c\uc800 Node.js\uc6a9\uc73c\ub85c AWS\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud55c \ub2e4\uc74c Python\uc6a9 \ub9de\ucda4\ud615 \uc774\ubbf8\uc9c0\ub97c \ub9cc\ub4e4\uc5b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><span style=\"text-decoration: underline\"><strong>Node.js\uc6a9\uc73c\ub85c AWS\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \uae30\ubcf8 \uc774\ubbf8\uc9c0 \uc0ac\uc6a9<br \/> <\/strong><\/span>\ub2e4\uc74c\uc740 <a href=\"https:\/\/github.com\/foliojs\/pdfkit\">PDFKit<\/a> \ubaa8\ub4c8\uc744 \uc0ac\uc6a9\ud558\uc5ec PDF \ud30c\uc77c\uc744 \uc0dd\uc131\ud558\ub294 \uac04\ub2e8\ud55c Node.js Lambda \ud568\uc218\uc758 \ucf54\ub4dc(<code>app.js<\/code>)\uc785\ub2c8\ub2e4. \ud638\ucd9c\ub420 \ub54c\ub9c8\ub2e4 <a href=\"https:\/\/github.com\/Marak\/faker.js\">faker.js<\/a> \ubaa8\ub4c8\uc5d0 \uc758\ud574 \uc0dd\uc131\ub41c \uc784\uc758\uc758 \ub370\uc774\ud130\uac00 \ud3ec\ud568\ub41c \uc0c8 \uba54\uc77c\uc744 \ub9cc\ub4ed\ub2c8\ub2e4. \ud568\uc218\uc758 \ucd9c\ub825\uc740 <a title=\"\" href=\"http:\/\/aws.amazon.com\/apigateway\">Amazon API Gateway<\/a>\uc758 \uad6c\ubb38\uc744 \uc0ac\uc6a9\ud558\uc5ec PDF \ud30c\uc77c\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.<\/p>\n<div class=\"hide-language\">\n<pre><code class=\"lang-js\">const PDFDocument = require('pdfkit');\nconst faker = require('faker');\nconst getStream = require('get-stream');\n\nexports.lambdaHandler = async (event) =&gt; {\n\n    const doc = new PDFDocument();\n\n    const randomName = faker.name.findName();\n\n    doc.text(randomName, { align: 'right' });\n    doc.text(faker.address.streetAddress(), { align: 'right' });\n    doc.text(faker.address.secondaryAddress(), { align: 'right' });\n    doc.text(faker.address.zipCode() + ' ' + faker.address.city(), { align: 'right' });\n    doc.moveDown();\n    doc.text('Dear ' + randomName + ',');\n    doc.moveDown();\n    for(let i = 0; i &lt; 3; i++) {\n        doc.text(faker.lorem.paragraph());\n        doc.moveDown();\n    }\n    doc.text(faker.name.findName(), { align: 'right' });\n    doc.end();\n\n    pdfBuffer = await getStream.buffer(doc);\n    pdfBase64 = pdfBuffer.toString('base64');\n\n    const response = {\n        statusCode: 200,\n        headers: {\n            'Content-Length': Buffer.byteLength(pdfBase64),\n            'Content-Type': 'application\/pdf',\n            'Content-disposition': 'attachment;filename=test.pdf'\n        },\n        isBase64Encoded: true,\n        body: pdfBase64\n    };\n    return response;\n};\n<\/code><\/pre>\n<\/div>\n<p><code>npm<\/code>\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud328\ud0a4\uc9c0\ub97c \ucd08\uae30\ud654\ud558\uace0 <code>package.json<\/code> \ud30c\uc77c\uc5d0 \ud544\uc694\ud55c \uc138 \uac00\uc9c0 \uc885\uc18d\uc131\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4. \uc774 \ubc29\ubc95\uc73c\ub85c <code>package-lock.json<\/code> \ud30c\uc77c\ub3c4 \ub9cc\ub4ed\ub2c8\ub2e4. \ub354 \uc608\uce21 \uac00\ub2a5\ud55c \uacb0\uacfc\ub97c \uc5bb\uae30 \uc704\ud574 \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4.<\/p>\n<div class=\"hide-language\">\n<pre class=\"unlimited-height-code\"><code class=\"lang-bash\">$ npm init\n$ npm install pdfkit\n$ npm install faker\n$ npm install get-stream<\/code><\/pre>\n<\/div>\n<p>\uc774\uc81c <code>Dockerfile<\/code>\uc744 \ub9cc\ub4e4\uc5b4\uc11c <code>nodejs12.x<\/code> \ub7f0\ud0c0\uc784\uc6a9\uc73c\ub85c AWS\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \uae30\ubcf8 \uc774\ubbf8\uc9c0\ubd80\ud130 \uc2dc\uc791\ud558\uc5ec Lambda \ud568\uc218\uc758 \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4. AWS\uac00 \uc81c\uacf5\ud558\ub294 \ubaa8\ub4e0 \uae30\ubcf8 \uc774\ubbf8\uc9c0\ub294 Docker Hub\uc640 \ud37c\ube14\ub9ad ECR\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uae30\uc11c\ub294 Docker Hub\uc5d0 \uc788\ub294 \uae30\ubcf8 \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud558\uc600\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"hide-language\">\n<pre class=\"unlimited-height-code\"><code class=\"lang-bash\">FROM amazon\/aws-lambda-nodejs:12\nCOPY app.js package*.json .\/\nRUN npm install\nCMD [ &quot;app.lambdaHandler&quot; ]<\/code><\/pre>\n<\/div>\n<p>\ub9cc\uc57d \ud37c\ube14\ub9ad ECR\uc758 \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud558\ub824\uba74 \uccab\ubc88\uc9f8 \uc904\uc744 \ub2e4\uc74c\uacfc \uac19\uc774 \uc218\uc815\ud569\ub2c8\ub2e4.<\/p>\n<div class=\"hide-language\">\n<pre class=\"unlimited-height-code\"><code class=\"lang-bash\">FROM public.ecr.aws\/lambda\/nodejs:12<\/code>\n<\/pre>\n<\/div>\n<p>Dockerfile\uc740 \uc18c\uc2a4 \ucf54\ub4dc(<code>app.js<\/code>)\uc640 \ud328\ud0a4\uc9c0 \ubc0f \uc885\uc18d\uc131\uc744 \uc124\uba85\ud558\ub294 \ud30c\uc77c(<code>package.json<\/code> \ubc0f <code>package-lock.json<\/code>)\uc744 \uae30\ubcf8 \uc774\ubbf8\uc9c0\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4. \uc774\uc81c, <code>npm<\/code>\uc744 \uc2e4\ud589\ud558\uc5ec \uc885\uc18d\uc131\uc744 \uc124\uce58\ud569\ub2c8\ub2e4. <code>CMD<\/code>\ub97c \ud568\uc218 \ucc98\ub9ac\uc790\ub85c \uc124\uc815\ud588\ub294\ub370, \uc774\uac83\uc740 \ub098\uc911\uc5d0 Lambda \ud568\uc218\ub97c \uad6c\uc131\ud560 \ub54c \ud30c\ub77c\ubbf8\ud130 \uc7ac\uc815\uc758\ub85c \uc218\ud589\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/docs.docker.com\/engine\/reference\/commandline\/cli\/\">Docker CLI<\/a>\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub85c\uceec\uc5d0\uc11c <code>random-letter<\/code> \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.<\/p>\n<div class=\"hide-language\">\n<pre class=\"unlimited-height-code\"><code class=\"lang-bash\">$ docker build -t random-letter .<\/code><\/pre>\n<\/div>\n<p>\uc791\ub3d9\ud558\ub294\uc9c0 \ud655\uc778\ud558\uae30 \uc704\ud574 Lambda Runtime Interface Emulator\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub85c\uceec\uc5d0\uc11c \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\ub97c \uc2dc\uc791\ud569\ub2c8\ub2e4.<\/p>\n<div class=\"hide-language\">\n<pre class=\"unlimited-height-code\"><code class=\"lang-bash\">$ docker run -p 9000:8080 random-letter:latest<\/code><\/pre>\n<\/div>\n<p>\uc774\uc81c curl \uba85\ub839\uc73c\ub85c \ud568\uc218 \ud638\ucd9c\uc744 \ud14c\uc2a4\ud2b8\ud569\ub2c8\ub2e4. \uc5ec\uae30\uc5d0\uc11c\ub294 \ube48 JSON \ud398\uc774\ub85c\ub4dc\ub97c \uc804\ub2ec\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"hide-language\">\n<pre class=\"unlimited-height-code\"><code class=\"lang-bash\">$ curl -XPOST &quot;http:\/\/localhost:9000\/2015-03-31\/functions\/function\/invocations&quot; -d '{}'<\/code><\/pre>\n<\/div>\n<p>\uc624\ub958\uac00 \uc788\uc73c\uba74 \ub85c\uceec\uc5d0\uc11c \uc218\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc791\ub3d9\ud558\uba74 \ub2e4\uc74c \ub2e8\uacc4\ub85c \ub118\uc5b4\uac11\ub2c8\ub2e4.<\/p>\n<p>\ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\ub97c \uc5c5\ub85c\ub4dc\ud558\uae30 \uc704\ud574 \uacc4\uc815\uc5d0 \uc0c8\ub85c\uc6b4 ECR \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac\ub97c \ub9cc\ub4e4\uace0 \ub85c\uceec \uc774\ubbf8\uc9c0\uc5d0 \ud0dc\uadf8\ub97c \uc9c0\uc815\ud558\uc5ec ECR\ub85c \ud478\uc2dc\ud569\ub2c8\ub2e4. \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\uc758 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \ucde8\uc57d\uc810\uc744 \uc2dd\ubcc4\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub418\ub3c4\ub85d [<a href=\"https:\/\/docs.aws.amazon.com\/AmazonECR\/latest\/userguide\/image-scanning.html\">ECR \uc774\ubbf8\uc9c0 \uc2a4\uce90\ub2dd<\/a>]\uc744 \ud65c\uc131\ud654\ud569\ub2c8\ub2e4.<\/p>\n<div class=\"hide-language\">\n<pre class=\"unlimited-height-code\"><code class=\"lang-bash\">$ aws ecr create-repository --repository-name random-letter --image-scanning-configuration scanOnPush=true\n$ docker tag random-letter:latest 123412341234.dkr.ecr.sa-east-1.amazonaws.com\/random-letter:latest\n$ aws ecr get-login-password | docker login --username AWS --password-stdin 123412341234.dkr.ecr.sa-east-1.amazonaws.com\n$ docker push 123412341234.dkr.ecr.sa-east-1.amazonaws.com\/random-letter:latest<\/code><\/pre>\n<\/div>\n<p>\uc5ec\uae30\uc11c\ub294 <a title=\"\" href=\"https:\/\/console.aws.amazon.com\">AWS Management Console<\/a>\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud568\uc218 \uc0dd\uc131\uc744 \uc644\ub8cc\ud569\ub2c8\ub2e4. \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\uc5d0 \ub300\ud55c \uc9c0\uc6d0\uc744 \ucd94\uac00\ud558\ub3c4\ub85d \uc5c5\ub370\uc774\ud2b8\ub41c <a href=\"https:\/\/aws.amazon.com\/serverless\/sam\/\">AWS Serverless Application Model<\/a>\uc744 \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<strong><br \/> <\/strong><\/p>\n<p>[<a href=\"https:\/\/console.aws.amazon.com\/lambda\/\">Lambda \ucf58\uc194<\/a>]\uc5d0\uc11c [<strong>\ud568\uc218 \uc0dd\uc131<\/strong>]\uc744 \ud074\ub9ad\ud569\ub2c8\ub2e4. [<strong>\ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0<\/strong>]\ub97c \uc120\ud0dd\ud558\uace0, \ud568\uc218\uc5d0 \uc774\ub984\uc744 \uc9c0\uc815\ud558\uace0, <strong>\uc774\ubbf8\uc9c0 \ucc3e\uc544\ubcf4\uae30<\/strong>\ub97c \uc120\ud0dd\ud558\uc5ec ECR \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac\uc5d0 \uc54c\ub9de\uc740 \uc774\ubbf8\uc9c0\ub97c \ucc3e\uc2b5\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/11\/20\/lambda-containers-create-function.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43507 size-large\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/11\/20\/lambda-containers-create-function-1024x484.png\" alt=\"\ucf58\uc194 \uc2a4\ud06c\ub9b0\uc0f7.\" width=\"1024\" height=\"484\" \/><\/a><\/p>\n<p>\ub9ac\ud3ec\uc9c0\ud1a0\ub9ac\ub97c \uc120\ud0dd\ud55c \ud6c4, \uc5c5\ub85c\ub4dc\ud55c <code>\ucd5c\uc2e0<\/code> \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc774\ubbf8\uc9c0\ub97c \uc120\ud0dd\ud558\uba74 Lambda\uac00 \uc774\ub97c \uae30\ubcf8 \uc774\ubbf8\uc9c0 <strong>digest<\/strong>(\uc544\ub798 \uc774\ubbf8\uc9c0\uc5d0\uc11c \ud0dc\uadf8 \uc624\ub978\ucabd\uc5d0 \uc788\uc74c)\ub85c \ubcc0\ud658\ud569\ub2c8\ub2e4. <code>docker images --digests<\/code> \uba85\ub839\uc744 \uc0ac\uc6a9\ud558\uc5ec \ub85c\uceec\uc5d0\uc11c \uc774\ubbf8\uc9c0\uc758 \ub2e4\uc774\uc81c\uc2a4\ud2b8\ub97c \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ubc29\ubc95\uc73c\ub85c \ud568\uc218\ub294 <code>latest<\/code> \ud0dc\uadf8\uac00 \ub2e4\ub978 \uc774\ubbf8\uc9c0\ub85c \ub118\uc5b4\uac00\ub354\ub77c\ub3c4 \uac19\uc740 \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud558\uba70, \uc758\ub3c4\ud558\uc9c0 \uc54a\uc740 \ubc30\ud3ec\uac00 \ubc29\uc9c0\ub429\ub2c8\ub2e4. \ud568\uc218 \ucf54\ub4dc\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc774\ubbf8\uc9c0\ub97c \uc5c5\ub370\uc774\ud2b8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud568\uc218 \uad6c\uc131\uc744 \uc5c5\ub370\uc774\ud2b8\ud574\ub3c4 \uc0ac\uc6a9\ub41c \uc774\ubbf8\uc9c0\uc5d0\ub294 \uc544\ubb34\ub7f0 \uc601\ud5a5\uc744 \uc8fc\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uadf8 \uc0ac\uc774\uc5d0 \ud0dc\uadf8\uac00 \ub2e4\ub978 \uc774\ubbf8\uc9c0\uc5d0 \uc7ac\ud560\ub2f9\ub41c \uacbd\uc6b0\uc5d0\ub3c4 \ub9c8\ucc2c\uac00\uc9c0\uc785\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/11\/20\/lambda-containers-select-image.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43508 size-large\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/11\/20\/lambda-containers-select-image-1024x727.png\" alt=\"\ucf58\uc194 \uc2a4\ud06c\ub9b0\uc0f7.\" width=\"1024\" height=\"727\" \/><\/a><\/p>\n<p>\uc6d0\ud558\ub294 \uacbd\uc6b0, \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0 \uac12 \uc911 \uc77c\ubd80\ub97c \uc7ac\uc815\uc758\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc9c0\uae08\uc740 \uc7ac\uc815\uc758\ud558\uc9c0 \uc54a\uc9c0\ub9cc, <code>CMD<\/code> \uac12\uc758 \ud568\uc218 \ucc98\ub9ac\uc790\ub97c \uc7ac\uc815\uc758\ud558\ub294 \uac83\uacfc \uac19\uc740 \ubc29\ubc95\uc73c\ub85c \ub2e4\ub978 \ud568\uc218\uc5d0 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uc774\ubbf8\uc9c0\ub97c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/11\/20\/lambda-containers-container-overrides.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43510 size-large\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/11\/20\/lambda-containers-container-overrides-1024x414.png\" alt=\"\ucf58\uc194 \uc2a4\ud06c\ub9b0\uc0f7.\" width=\"1024\" height=\"414\" \/><\/a><\/p>\n<p>\ub2e4\ub978 \ubaa8\ub4e0 \uc635\uc158\uc744 \uae30\ubcf8\uac12\uc73c\ub85c \uadf8\ub300\ub85c \ub450\uace0 [<strong>\ud568\uc218 \uc0dd\uc131<\/strong>]\uc744 \uc120\ud0dd\ud569\ub2c8\ub2e4.<\/p>\n<p>\ud568\uc218 \ucf54\ub4dc\ub97c \ub9cc\ub4e4\uac70\ub098 \uc5c5\ub370\uc774\ud2b8\ud560 \ub54c Lambda \ud50c\ub7ab\ud3fc\uc740 \uc0c8 \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\uc640 \uc5c5\ub370\uc774\ud2b8\ub41c \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\ub97c \ucd5c\uc801\ud654\ud558\uc5ec \ud638\ucd9c\uc744 \ubc1b\uc744 \uc218 \uc788\uac8c \uc900\ube44\ud569\ub2c8\ub2e4. \uc774 \ucd5c\uc801\ud654\ub294 \uc774\ubbf8\uc9c0 \ud06c\uae30\uc5d0 \ub530\ub77c \uba87 \ucd08 \ub610\ub294 \uba87 \ubd84 \uc815\ub3c4 \uac78\ub9bd\ub2c8\ub2e4. \uadf8 \ud6c4\uc5d0 \ud568\uc218\ub294 \ud638\ucd9c \uc900\ube44\uac00 \uc644\ub8cc\ub429\ub2c8\ub2e4. \ucf58\uc194\uc5d0\uc11c \ud568\uc218\ub97c \ud14c\uc2a4\ud2b8\ud569\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/11\/20\/lambda-containers-test.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43511 size-large\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/11\/20\/lambda-containers-test-1024x318.png\" alt=\"\ucf58\uc194 \uc2a4\ud06c\ub9b0\uc0f7.\" width=\"1024\" height=\"318\" \/><\/a><\/p>\n<p>\uc81c\ub300\ub85c \uc791\ub3d9\ud569\ub2c8\ub2e4! \uc774\uc81c API Gateway\ub97c \ud2b8\ub9ac\uac70\ub85c \ucd94\uac00\ud558\uaca0\uc2b5\ub2c8\ub2e4. [<strong>\ud2b8\ub9ac\uac70 \ucd94\uac00<\/strong>]\ub97c \uc120\ud0dd\ud558\uace0 [<a href=\"https:\/\/docs.aws.amazon.com\/apigateway\/latest\/developerguide\/http-api.html\">HTTP API\ub97c \uc0ac\uc6a9\ud558\ub294 API Gateway<\/a>]\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \uac04\ub2e8\ud558\uac8c \ub9cc\ub4e4\uae30 \uc704\ud574 API \uc778\uc99d\uc740 \uc120\ud0dd\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/11\/20\/lambda-containers-add-trigger.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43512 size-large\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/11\/20\/lambda-containers-add-trigger-1024x899.png\" alt=\"\ucf58\uc194 \uc2a4\ud06c\ub9b0\uc0f7.\" width=\"1024\" height=\"899\" \/><\/a><\/p>\n<p>\uc774\uc81c API \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c \uba87 \ubc88 \ud074\ub9ad\ud558\uace0 \uc784\uc758\uc758 \uba54\uc77c\uc744 \uba87 \uac1c \ub2e4\uc6b4\ub85c\ub4dc\ud569\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/11\/20\/lambda-containers-api-gateway.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43513 size-large\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/11\/20\/lambda-containers-api-gateway-1024x706.png\" alt=\"\ucf58\uc194 \uc2a4\ud06c\ub9b0\uc0f7.\" width=\"1024\" height=\"706\" \/><\/a><\/p>\n<p>\uc608\uc0c1\ub300\ub85c \uc791\ub3d9\ud569\ub2c8\ub2e4! \ub2e4\uc74c\uc740 <a href=\"https:\/\/github.com\/Marak\/faker.js\">faker.js<\/a> \ubaa8\ub4c8\ub85c\ubd80\ud130 \uc784\uc758\uc758 \ub370\uc774\ud130\ub85c \uc0dd\uc131\ud55c \uba87 \uac1c\uc758 PDF \ud30c\uc77c\uc785\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/11\/26\/lambda-containers-random-letters-all.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-44280 size-large\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/11\/26\/lambda-containers-random-letters-all-1024x734.png\" alt=\"\uc0d8\ud50c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \ucd9c\ub825.\" width=\"1024\" height=\"734\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong><span style=\"text-decoration: underline\">Python\uc6a9 \ub9de\ucda4\ud615 \uc774\ubbf8\uc9c0 \ub9cc\ub4e4\uae30<br \/> <\/span><\/strong>\uc608\ub97c \ub4e4\uc5b4 \ud68c\uc0ac \uac00\uc774\ub4dc\ub77c\uc778\uc744 \ub530\ub974\uae30 \uc704\ud574 \ub610\ub294 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\ub294 \ub7f0\ud0c0\uc784 \ubc84\uc804\uc744 \uc0ac\uc6a9\ud558\uae30 \uc704\ud574 \ub54c\ub85c\ub294 \ub9de\ucda4\ud615 \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud574\uc57c \ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<strong><span style=\"text-decoration: underline\"><br \/> <\/span><\/strong><\/p>\n<p>\uc774\ubc88\uc5d0\ub294 Python 3.9\ub97c \uc0ac\uc6a9\ud558\ub294 \uc774\ubbf8\uc9c0\ub97c \ub9cc\ub4e4\uc5b4 \ubcf4\uace0\uc790 \ud569\ub2c8\ub2e4. \ud568\uc218\uc758 \ucf54\ub4dc(<code>app.py<\/code>)\ub294 \ub9e4\uc6b0 \uac04\ub2e8\ud569\ub2c8\ub2e4. \uc778\uc0ac\ub9d0\uc744 \ucd9c\ub825\ud558\uace0 \uc0ac\uc6a9 \uc911\uc778 Python \ubc84\uc804\uc744 \ud45c\uc2dc\ud558\ub294 \uac83\uc774 \uc804\ubd80\uc785\ub2c8\ub2e4.<\/p>\n<div class=\"hide-language\">\n<pre class=\"unlimited-height-code\"><code class=\"lang-python\">import sys\ndef handler(event, context): \n    return 'Hello from AWS Lambda using Python' + sys.version + '!'<\/code><\/pre>\n<\/div>\n<p>\uc55e\uc11c \uc5b8\uae09\ud588\ub4ef\uc774 \uc9c0\uc6d0\ub418\ub294 \ubaa8\ub4e0 \ub7f0\ud0c0\uc784\uc5d0 \ub300\ud574 Lambda Runtime Interface Clients(Runtime API\ub97c \uad6c\ud604\ud568)\uc758 \uc624\ud508 \uc18c\uc2a4 \uad6c\ud604\uc744 \uacf5\uc720\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uae30\uc11c\ub294 Alpine Linux\ub97c \uae30\ubc18\uc73c\ub85c \ud558\ub294 Python \uc774\ubbf8\uc9c0\uc5d0\uc11c \uc2dc\uc791\ud569\ub2c8\ub2e4. \uadf8\ub7f0 \ub2e4\uc74c Python\uc6a9 Lambda Runtime Interface Client(\uace7 \ub9c1\ud06c\ub97c \ucd94\uac00\ud560 \uc608\uc815)\ub97c \uc774\ubbf8\uc9c0\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4. <code>Dockerfile<\/code>\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"hide-language\">\n<pre><code class=\"lang-bash\"># Define global args\nARG FUNCTION_DIR=&quot;\/home\/app\/&quot;\nARG RUNTIME_VERSION=&quot;3.9&quot;\nARG DISTRO_VERSION=&quot;3.12&quot;\n\n# 1\ub2e8\uacc4 - \ubc88\ub4e4 \uae30\ubcf8 \uc774\ubbf8\uc9c0 + \ub7f0\ud0c0\uc784\n# \uc0c8\ub85c\uc6b4 \uc774\ubbf8\uc9c0 \ubcf5\uc0ac\ubcf8\uc744 \uac00\uc838\uc624\uace0 GCC\ub97c \uc124\uce58\ud568\nFROM python:${RUNTIME_VERSION}-alpine${DISTRO_VERSION} AS python-alpine\n# GCC \uc124\uce58(Alpine\uc740 musl\uc744 \uc0ac\uc6a9\ud558\uc9c0\ub9cc \uc5ec\uae30\uc5d0\uc11c\ub294 \uc885\uc18d\uc131\uc744 GCC\uc640 \ucef4\ud30c\uc77c\ud558\uace0 \uc5f0\uacb0\ud568)\nRUN apk add --no-cache \n    libstdc++\n\n# 2\ub2e8\uacc4 - \ud568\uc218 \ubc0f \uc885\uc18d\uc131 \ube4c\ub4dc\nFROM python-alpine AS build-image\n# aws-lambda-cpp \ube4c\ub4dc \uc885\uc18d\uc131 \uc124\uce58\nRUN apk add --no-cache \n    build-base \n    libtool \n    autoconf \n    automake \n    libexecinfo-dev \n    make \n    cmake \n    libcurl\n# \ube4c\ub4dc\uc758 \ud604\uc7ac \ub2e8\uacc4\uc5d0 \uc804\uc5ed args \ud3ec\ud568\nARG FUNCTION_DIR\nARG RUNTIME_VERSION\n# \ud568\uc218 \ub514\ub809\ud1a0\ub9ac \ub9cc\ub4e4\uae30\nRUN mkdir -p ${FUNCTION_DIR}\n# \ucc98\ub9ac\uc790 \ud568\uc218 \ubcf5\uc0ac\nCOPY app\/* ${FUNCTION_DIR}\n# \uc120\ud0dd \uc0ac\ud56d \u2013 \ud568\uc218\uc758 \uc885\uc18d\uc131 \uc124\uce58\n# RUN python${RUNTIME_VERSION} -m pip install -r requirements.txt --target ${FUNCTION_DIR}\n# Python\uc6a9 Lambda Runtime Interface Client \uc124\uce58\nRUN python${RUNTIME_VERSION} -m pip install awslambdaric --target ${FUNCTION_DIR}\n\n# 3\ub2e8\uacc4 - \ucd5c\uc885 \ub7f0\ud0c0\uc784 \uc774\ubbf8\uc9c0\n# Python \uc774\ubbf8\uc9c0\uc758 \uc0c8\ub85c\uc6b4 \ubcf5\uc0ac\ubcf8 \uac00\uc838\uc624\uae30\nFROM python-alpine\n# \ube4c\ub4dc\uc758 \ud604\uc7ac \ub2e8\uacc4\uc5d0 \uc804\uc5ed arg \ud3ec\ud568\nARG FUNCTION_DIR\n# \uc791\uc5c5 \ub514\ub809\ud1a0\ub9ac\ub97c \ud568\uc218 \ub8e8\ud2b8 \ub514\ub809\ud1a0\ub9ac\ub85c \uc124\uc815\nWORKDIR ${FUNCTION_DIR}\n# \ube4c\ub4dc\ub41c \uc885\uc18d\uc131 \ubcf5\uc0ac\nCOPY --from=build-image ${FUNCTION_DIR} ${FUNCTION_DIR}\n# (\uc120\ud0dd \uc0ac\ud56d) Lambda Runtime Interface Emulator\ub97c \ucd94\uac00\ud558\uace0 \ubcf4\ub2e4 \uac04\ub2e8\ud55c \ub85c\uceec \uc2e4\ud589\uc744 \uc704\ud574 ENTRYPOINT\uc5d0\uc11c \uc2a4\ud06c\ub9bd\ud2b8 \uc0ac\uc6a9\nCOPY https:\/\/github.com\/aws\/aws-lambda-runtime-interface-emulator\/releases\/latest\/download\/aws-lambda-rie \/usr\/bin\/aws-lambda-rie\nRUN chmod 755 \/usr\/bin\/aws-lambda-rie\nCOPY entry.sh \/\nENTRYPOINT [ &quot;\/entry.sh&quot; ]\nCMD [ &quot;app.handler&quot; ]<\/code><\/pre>\n<\/div>\n<p>\uc774\ubc88\uc5d0\ub294 Dockerfile\uc774 \ub354\uc6b1 \ubcf5\uc7a1\ud558\uac8c \uc5f0\uacb0\ub429\ub2c8\ub2e4. 3\ub2e8\uacc4\uc5d0 \uac78\uccd0 \ucd5c\uc885 \uc774\ubbf8\uc9c0\ub97c \ub9cc\ub4dc\ub294\ub370 \ub2e4\ub2e8\uacc4 \ube4c\ub4dc\uc758 Docker \ubaa8\ubc94 \uc0ac\ub840\ub97c \ub530\ub985\ub2c8\ub2e4. \uc774 3\ub2e8\uacc4 \uc811\uadfc \ubc29\uc2dd\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc790\uccb4 \ub9de\ucda4\ud615 \uc774\ubbf8\uc9c0\ub97c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li style=\"padding-bottom: 0.5em\"><strong>1\ub2e8\uacc4<\/strong>\ub294 \ub7f0\ud0c0\uc784(\uc774 \uacbd\uc6b0 Python 3.9)\uacfc \ud568\uaed8 \uc0ac\uc6a9\ud560 \uae30\ubcf8 \uc774\ubbf8\uc9c0 \uadf8\ub9ac\uace0 2\ub2e8\uacc4\uc5d0\uc11c \uc885\uc18d\uc131\uc744 \ucef4\ud30c\uc77c\ud558\uace0 \uc5f0\uacb0\ud558\ub294 \ub370 \uc0ac\uc6a9\ud560 <a href=\"https:\/\/gcc.gnu.org\/\">GCC<\/a>\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.<\/li>\n<li style=\"padding-bottom: 0.5em\"><strong>2\ub2e8\uacc4<\/strong>\ub294 Lambda Runtime Interface Client\ub97c \uc124\uce58\ud558\uace0 \ud568\uc218\uc640 \uc885\uc18d\uc131\uc744 \ub9cc\ub4ed\ub2c8\ub2e4.<\/li>\n<li><strong>3\ub2e8\uacc4<\/strong>\ub294 2\ub2e8\uacc4\uc758 \ucd9c\ub825\uc744 1\ub2e8\uacc4\uc5d0\uc11c \ub9cc\ub4e0 \uae30\ubcf8 \uc774\ubbf8\uc9c0\uc5d0 \ucd94\uac00\ud558\ub294 \ucd5c\uc885 \uc774\ubbf8\uc9c0\ub97c \ub9cc\ub4ed\ub2c8\ub2e4. \uc774 \uc608\uc81c\uc5d0\uc11c\ub294 Lambda Runtime Interface Emulator\ub3c4 \ucd94\uac00\ud558\uc9c0\ub9cc \uc774\uac83\uc740 \uc120\ud0dd \uc0ac\ud56d\uc785\ub2c8\ub2e4(\uc544\ub798 \ucc38\uc870).<\/li>\n<\/ul>\n<p>\uc544\ub798\uc758 <code>entry.sh<\/code> \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc791\uc131\ud558\uc5ec <code>ENTRYPOINT<\/code>\ub85c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. Python\uc6a9 Lambda Runtime Interface Client\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4. \ub85c\uceec\uc5d0\uc11c \uc2e4\ud589\ud558\ub294 \uacbd\uc6b0 Runtime Interface Client\ub294 Lambda Runtime Interface Emulator\uc5d0 \uc758\ud574 \ub798\ud551\ub429\ub2c8\ub2e4.<\/p>\n<div class=\"hide-language\">\n<div class=\"hide-language\">\n<pre class=\"unlimited-height-code\"><code class=\"lang-bash\">#!\/bin\/sh\nif [ -z &quot;${AWS_LAMBDA_RUNTIME_API}&quot; ]; then\n    exec \/usr\/bin\/aws-lambda-rie \/usr\/local\/bin\/python -m awslambdaric\nelse\n    exec \/usr\/local\/bin\/python -m awslambdaric\nfi<\/code><\/pre>\n<\/p><\/div>\n<\/div>\n<p>\uc774\uc81c Lambda Runtime Interface Emulator\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud568\uc218\uc640 \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\uac00 \uc62c\ubc14\ub974\uac8c \uc791\ub3d9\ud558\ub294\uc9c0\ub97c \ub85c\uceec\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"hide-language\">\n<pre class=\"unlimited-height-code\"><code class=\"lang-bash\">$ docker run -p 9000:8080 lambda\/python:3.9-alpine3.12<\/code><code class=\"lang-bash\"><\/code><\/pre>\n<\/div>\n<p><span style=\"text-decoration: underline\"><strong>\ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\uc5d0 Lambda Runtime Interface Emulator \ud3ec\ud568 \uc548 \ud568<br \/> <\/strong><\/span>Lambda Runtime Interface Emulator\ub97c \ub9de\ucda4\ud615 \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\uc5d0 \ucd94\uac00\ud558\ub294 \uac83\uc740 \uc120\ud0dd \uc0ac\ud56d\uc785\ub2c8\ub2e4. \ud3ec\ud568\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0\uc5d0\ub294 \ub2e4\uc74c \ub2e8\uacc4\ub97c \ub530\ub77c <strong>\ub85c\uceec \ucef4\ud4e8\ud130<\/strong>\uc5d0 Lambda Runtime Interface Emulator\ub97c \uc124\uce58\ud558\uc5ec \ub85c\uceec\uc5d0\uc11c \ud14c\uc2a4\ud2b8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li style=\"padding-bottom: 0.5em\">Dockerfile\uc758 3\ub2e8\uacc4\uc5d0\uc11c Lambda Runtime Interface Emulator\ub97c \ubcf5\uc0ac\ud558\ub294 \uba85\ub839(<code>aws-lambda-rie<\/code>)\uacfc <code>entry.sh<\/code> \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4. \uc774 \uacbd\uc6b0\uc5d0\ub294 <code>entry.sh<\/code> \uc2a4\ud06c\ub9bd\ud2b8\uac00 \ud544\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/li>\n<li style=\"padding-bottom: 0.5em\">\uc774 <code>ENTRYPOINT<\/code>\ub97c \uc0ac\uc6a9\ud558\uc5ec \uae30\ubcf8\uc801\uc73c\ub85c Lambda Runtime Interface Client\ub97c \uc2dc\uc791\ud569\ub2c8\ub2e4.<br \/> <code>ENTRYPOINT [ &quot;\/usr\/local\/bin\/python&quot;, \u201c-m\u201d, \u201cawslambdaric\u201d ]<\/code><\/li>\n<li>\ub2e4\uc74c \uba85\ub839\uc744 \uc2e4\ud589\ud558\uc5ec Lambda Runtime Interface Emulator\ub97c \ub85c\uceec \ucef4\ud4e8\ud130\uc5d0 \uc124\uce58\ud569\ub2c8\ub2e4(\uc608: <code>~\/.aws-lambda-rie<\/code> \uc544\ub798\uc5d0).<\/li>\n<\/ul>\n<div class=\"hide-language\">\n<pre class=\"unlimited-height-code\"><code class=\"lang-bash\">mkdir -p ~\/.aws-lambda-rie\ncurl -Lo ~\/.aws-lambda-rie\/aws-lambda-rie https:\/\/github.com\/aws\/aws-lambda-runtime-interface-emulator\/releases\/latest\/download\/aws-lambda-rie\nchmod +x ~\/.aws-lambda-rie\/aws-lambda-rie<\/code><\/pre>\n<\/div>\n<p>Lambda Runtime Interface Emulator\uac00 \ub85c\uceec \ucef4\ud4e8\ud130\uc5d0 \uc124\uce58\ub418\uba74 \ucee8\ud14c\uc774\ub108\ub97c \uc2dc\uc791\ud560 \ub54c \ub9c8\uc6b4\ud2b8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub85c\uceec\uc5d0\uc11c \ucee8\ud14c\uc774\ub108\ub97c \uc2dc\uc791\ud558\ub294 \uba85\ub839\uc740 \uc774\uc81c \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4(Lambda Runtime Interface Emulator\uac00 <code>~\/.aws-lambda-rie<\/code>\uc5d0 \uc788\ub2e4\uace0 \uac00\uc815\ud560 \ub54c).<\/p>\n<div class=\"hide-language\">\n<pre class=\"unlimited-height-code\"><code class=\"lang-bash\">docker run -d -v ~\/.aws-lambda-rie:\/aws-lambda -p 9000:8080 \n       --entrypoint \/aws-lambda\/aws-lambda-rie lambda\/python:3.9-alpine3.12\n       \/lambda-entrypoint.sh app.handler<\/code><\/pre>\n<\/div>\n<p><span style=\"text-decoration: underline\"><strong>Python\uc6a9 \ub9de\ucda4\ud615 \uc774\ubbf8\uc9c0 \ud14c\uc2a4\ud2b8<br \/> <\/strong><\/span>\uc5b4\ub290 \ucabd\uc774\ub4e0 \ucee8\ud14c\uc774\ub108\uac00 \ub85c\uceec\uc5d0\uc11c \uc2e4\ud589\ub420 \ub54c curl \uba85\ub839\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud568\uc218 \ud638\ucd9c\uc744 \ud14c\uc2a4\ud2b8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"hide-language\">\n<pre class=\"unlimited-height-code\"><code class=\"lang-bash\">curl -XPOST &quot;http:\/\/localhost:9000\/2015-03-31\/functions\/function\/invocations&quot; -d '{}'<\/code><\/pre>\n<\/div>\n<p>\ucd9c\ub825 \ub0b4\uc6a9\uc774 \uc608\uc0c1\ud588\ub358 \ub300\ub85c\uc785\ub2c8\ub2e4!<\/p>\n<p><code>&quot;Hello from AWS Lambda using Python3.9.0 (default, Oct 22 2020, 05:03:39) n[GCC 9.3.0]!&quot;<\/code><\/p>\n<p>\uc774\ubbf8\uc9c0\ub97c ECR\ub85c \ud478\uc2dc\ud558\uace0 \uc55e\uc5d0\uc11c\uc640 \uac19\uc774 \ud568\uc218\ub97c \ub9cc\ub4ed\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \ucf58\uc194\uc5d0\uc11c \uc9c1\uc811 \ud14c\uc2a4\ud2b8\ud574 \ubcf8 \uacb0\uacfc\uc785\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/11\/21\/lambda-containers-custom-test.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43587 size-large\" src=\"https:\/\/d2908q01vomqb2.cloudfront.net\/da4b9237bacccdf19c0760cab7aec4a8359010b0\/2020\/11\/21\/lambda-containers-custom-test-1024x179.png\" alt=\"\ucf58\uc194 \uc2a4\ud06c\ub9b0\uc0f7.\" width=\"1024\" height=\"179\" \/><\/a><\/p>\n<p>Alpine \uae30\ubc18\uc758 \ub9de\ucda4\ud615 \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\uac00 Lambda\uc5d0\uc11c Python 3.9\ub97c \uc2e4\ud589\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4!<\/p>\n<p><span style=\"text-decoration: underline\"><strong>\uc9c0\uae08 \uc774\uc6a9 \uac00\ub2a5<br \/> <\/strong><\/span>\uc9c0\uae08 \ubc14\ub85c <span title=\"\">\ubbf8\uad6d \ub3d9\ubd80(\ubc84\uc9c0\ub2c8\uc544 \ubd81\ubd80)<\/span>, <span title=\"\">\ubbf8\uad6d \ub3d9\ubd80(\uc624\ud558\uc774\uc624)<\/span>, <span title=\"\">\ubbf8\uad6d \uc11c\ubd80(\uc624\ub808\uace4)<\/span>, <span title=\"\">\uc544\uc2dc\uc544 \ud0dc\ud3c9\uc591(\ub3c4\ucfc4)<\/span>, <span title=\"\">\uc544\uc2dc\uc544 \ud0dc\ud3c9\uc591(\uc2f1\uac00\ud3ec\ub974)<\/span>, <span title=\"\">EU(\uc544\uc77c\ub79c\ub4dc)<\/span>, <span title=\"\">EU(\ud504\ub791\ud06c\ud478\ub974\ud2b8)<\/span>, <span title=\"\">\ub0a8\uc544\uba54\ub9ac\uce74(\uc0c1\ud30c\uc6b8\ub8e8)<\/span>\uc5d0\uc11c \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud558\uc5ec Lambda \ud568\uc218\ub97c \ubc30\ud3ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uace7 \ub354 \ub9ce\uc740 \ub9ac\uc804\uc5d0\uc11c \uc9c0\uc6d0\ub420 \uc218 \uc788\ub3c4\ub85d \ub178\ub825\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0 \uc9c0\uc6d0\uc740 ZIP \uc544\uce74\uc774\ube0c \ubc29\uc2dd\uc5d0 \ucd94\uac00\uc801\uc73c\ub85c \uc81c\uacf5\ub418\ub294 \uac83\uc774\uba70 ZIP \ud328\ud0a4\uc9d5 \ud615\uc2dd\ub3c4 \uacc4\uc18d \uc9c0\uc6d0\ub420 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uae30\ub2a5\uc740 \ucd94\uac00 \uc694\uae08 \uc5c6\uc774 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/aws.amazon.com\/ecr\/pricing\/\">ECR \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac \uc694\uae08<\/a>\uacfc \uc77c\ubc18\uc801\uc778 <a href=\"https:\/\/aws.amazon.com\/lambda\/pricing\/\">Lambda \uc694\uae08<\/a>\ub9cc \uc9c0\ubd88\ud558\uba74 \ub429\ub2c8\ub2e4.<\/p>\n<p><a title=\"\" href=\"https:\/\/aws.amazon.com\/lambda\/\">AWS Lambda<\/a>\uc5d0\uc11c\uc758 \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0 \uc9c0\uc6d0\uc740 <a href=\"https:\/\/console.aws.amazon.com\/lambda\/\">\ucf58\uc194<\/a>, <a title=\"\" href=\"https:\/\/aws.amazon.com\/cli\/\">AWS \uba85\ub839\uc904 \uc778\ud130\ud398\uc774\uc2a4(CLI)<\/a>, <a title=\"\" href=\"https:\/\/aws.amazon.com\/tools\/\">AWS SDK<\/a>, <a href=\"https:\/\/aws.amazon.com\/serverless\/sam\/\">AWS Serverless Application Model<\/a> \uadf8\ub9ac\uace0 <a href=\"https:\/\/aws.amazon.com\/lambda\/partners\/\">AWS Partners<\/a>, including <a href=\"https:\/\/info.aquasec.com\/aqua-demo?keyword=aqua%20security&amp;campaignID=11567296460&amp;matchtype=e&amp;adgroupID=111391053263&amp;device=c&amp;utm_source=adwords&amp;utm_campaign=Brand_US&amp;utm_medium=cpc&amp;utm_term=aqua%20security&amp;utm_content=111391053263&amp;utm_content=478883063165&amp;hsa_acc=4069508776&amp;hsa_src=g&amp;hsa_ad=478883063165&amp;hsa_kw=aqua%20security&amp;hsa_ver=3&amp;hsa_mt=e&amp;hsa_grp=111391053263&amp;hsa_net=adwords&amp;hsa_cam=11567296460&amp;hsa_tgt=kwd-12296163470&amp;gclid=Cj0KCQiAqo3-BRDoARIsAE5vnaLW0zTu7YlD_1bEBprCcYRD5NKK10kBv1PVRNBAyHS0wZX1dc5a-aAaAttJEALw_wcB\">Aqua Security<\/a>, <a href=\"https:\/\/www.datadoghq.com\/\">Datadog<\/a>, <a href=\"https:\/\/epsagon.com\/get-started\/?gclid=Cj0KCQiAqo3-BRDoARIsAE5vnaI0wuFYa98D9xzXk0BNN9ySD3HYMy_xS5NOgFdP4JQSMKw2vK5O_bEaAp-zEALw_wcB\">Epsagon<\/a>, <a href=\"https:\/\/www.terraform.io\/\">HashiCorp Terraform<\/a>, <a href=\"https:\/\/www.honeycomb.io\/\">Honeycomb<\/a>, <a href=\"https:\/\/lumigo.io\/distributed-tracing\/?utm_campaign=!Search-Brand&amp;utm_source=adwords&amp;utm_term=lumigo-io&amp;utm_medium=ppc&amp;hsa_ver=3&amp;hsa_tgt=kwd-886885993355&amp;hsa_kw=lumigo-io&amp;hsa_src=g&amp;hsa_mt=e&amp;hsa_cam=9558753081&amp;hsa_grp=99755279482&amp;hsa_ad=423079529449&amp;hsa_net=adwords&amp;hsa_acc=4135881748&amp;gclid=Cj0KCQiAqo3-BRDoARIsAE5vnaK3-FUNWhPV-bHWe4X1ofWgZ7kxkFZZGHJ80TKx1wtnISQGTnhIUusaAnR3EALw_wcB\">Lumigo<\/a>, <a href=\"https:\/\/www.pulumi.com\/\">Pulumi<\/a>, <a href=\"https:\/\/www.stackery.io\/\">Stackery<\/a>, <a href=\"https:\/\/www.sumologic.com\/lp\/logs\/?utm_source=google&amp;utm_medium=ppc&amp;utm_campaign=NAMER_Search_Branded_BOFU-DC&amp;utm_adgroup=Sumo_Logs&amp;utm_term=sumo%20logs&amp;gclid=Cj0KCQiAqo3-BRDoARIsAE5vnaI_RBeRq41hqZSGuL0eGXaKod1qH40eXCNii4KGmDnD9jkvDgM8MDQaAkzoEALw_wcB\">Sumo Logic<\/a>, <a href=\"https:\/\/www.thundra.io\/thundra-overview?utm_source=adwords&amp;utm_medium=cpc&amp;utm_campaign=PdSrch_Google_Branded_US__18&amp;utm_content=lp_video&amp;utm_term=thundra&amp;hsa_acc=2925991331&amp;hsa_cam=1613693209&amp;hsa_grp=60589959003&amp;hsa_ad=328493142421&amp;hsa_src=g&amp;hsa_tgt=kwd-313844584481&amp;hsa_kw=thundra&amp;hsa_mt=p&amp;hsa_net=adwords&amp;hsa_ver=3&amp;gclid=Cj0KCQiAqo3-BRDoARIsAE5vnaLRTcDgdVQqFTZrgp1gRbRPeymRLW3HTiw18o9vSa5CH-bSBBupNWEaAj64EALw_wcB\">Thundra<\/a>\uac00 \uc81c\uacf5\ud558\ub294 \uc194\ub8e8\uc158\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uc0c8\ub85c\uc6b4 \uae30\ub2a5\uc740 \uc0c8\ub85c\uc6b4 \uc2dc\ub098\ub9ac\uc624\ub97c \uac00\ub2a5\ud558\uac8c \ub9cc\ub4e4\uace0, \uac1c\ubc1c \ud30c\uc774\ud504\ub77c\uc778\uacfc\uc758 \ud1b5\ud569\uc744 \ub2e8\uc21c\ud654\ud558\uace0, \uc880 \ub354 \uc27d\uac8c \ub9de\ucda4\ud615 \uc774\ubbf8\uc9c0\uc640 \uc120\ud638\ud558\ub294 \ud504\ub85c\uadf8\ub798\ubc0d \ud50c\ub7ab\ud3fc\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc11c\ubc84\ub9ac\uc2a4 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4e4 \uc218 \uc788\uac8c \ud574\uc90d\ub2c8\ub2e4.<\/p>\n<p><strong><a href=\"https:\/\/aws.amazon.com\/lambda\/\">AWS Lambda\uc5d0\uc11c \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95\uc744 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uace0 \uc9c1\uc811 \uc0ac\uc6a9\ud574 \ubcf4\uc138\uc694.<\/a><br \/> <\/strong><\/p>\n<p>\u2014 <a title=\"Twitter\uc758 Danilo\" href=\"https:\/\/twitter.com\/danilop\">Danilo<\/a><\/p>\n<p>Source: <a href=\"https:\/\/aws.amazon.com\/ko\/blogs\/korea\/new-for-aws-lambda-container-image-support\/\" target=\"_blank\" rel=\"noopener noreferrer\">AWS Lambda\uc758 \uc0c8\ub85c\uc6b4 \uae30\ub2a5 \u2014 \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0 \uc9c0\uc6d0<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>AWS Lambda\uc758 \uc0c8\ub85c\uc6b4 \uae30\ub2a5 \u2014 \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0 \uc9c0\uc6d0 AWS Lambda\ub97c \uc0ac\uc6a9\ud558\uba74 \uc11c\ubc84 \uc5c6\uc774 \ucf54\ub4dc\ub97c \uc5c5\ub85c\ub4dc\ud574\uc11c \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub9ce\uc740 \uace0\uac1d\ub4e4\uc774 \uc774\uc640 \uac19\uc740 \uc791\uc5c5 \ubc29\uc2dd\uc744 \uc0ac\uc6a9\ud558\uace0 \uc788\uc9c0\ub9cc, \uac1c\ubc1c \uc6cc\ud06c\ud50c\ub85c\uc5d0 \ub300\ud574 \ucee8\ud14c\uc774\ub108\ud654 \ud558\ub294\ub370 \ud22c\uc790\ud55c \uacbd\uc6b0\uc5d0\ub294 \ub3d9\uc77c\ud55c \ubc29\uc2dd\uc73c\ub85c Lambda\ub97c \uc0ac\uc6a9\ud558\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uad6c\ucd95\ud558\ub294 \uc791\uc5c5\uc774 \uc27d\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\ub97c \uc9c0\uc6d0\ud558\uae30 \uc704\ud574 \uc774\uc81c Lambda \ud568\uc218\ub97c \ucd5c\ub300 10GB \ud06c\uae30\uc758 \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\ub85c \ud328\ud0a4\uc9d5 \ubc0f \ubc30\ud3ec\ud560 \uc218 \uc788\ub294 \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \uae30\uacc4 \ud559\uc2b5 \ub610\ub294 \ub370\uc774\ud130 \uc9d1\uc57d\uc801 \uc6cc\ud06c\ub85c\ub4dc\uc640 \uac19\uc774 \uc0c1\ub2f9\ud55c \uc885\uc18d\uc131\uc774 \uc218\ubc18\ub418\ub294 \ub300\uaddc\ubaa8 \uc6cc\ud06c\ub85c\ub4dc\ub97c \uc27d\uac8c \uad6c\ucd95\ud558\uace0 \ubc30\ud3ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. ZIP \uc544\uce74\uc774\ube0c\ub85c \ud328\ud0a4\uc9d5\ub41c \ud568\uc218\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0\ub85c \ubc30\ud3ec\ub418\ub294 \ud568\uc218\ub294 \uc6b4\uc601 \ud3b8\uc758\uc131, \uc790\ub3d9 \ud655\uc7a5, \uace0\uac00\uc6a9\uc131, \uc5ec\ub7ec \uc11c\ube44\uc2a4\uc640\uc758 \uae30\ubcf8 \ud1b5\ud569\uc774\ub77c\ub294 \uc774\uc810\uc744 \ub3d9\uc77c\ud558\uac8c \ub204\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc9c0\uc6d0\ub418\ub294 \ubaa8\ub4e0 Lambda \ub7f0\ud0c0\uc784(Python, Node.js, Java, .NET, Go, Ruby)\uc5d0 \ub300\ud574 \uae30\ubcf8 \uc774\ubbf8\uc9c0\ub97c \uc81c\uacf5\ud558\uace0 \uc788\uc73c\ubbc0\ub85c \uc5ec\ub7ec\ubd84\uc758 \ucf54\ub4dc\uc640 \uc885\uc18d\uc131\uc744 \uc27d\uac8c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c Lambda Runtime API\ub85c \uad6c\ud604\ud55c \uc790\uccb4 \ub7f0\ud0c0\uc784\uc744 \ud3ec\ud568\ud574\uc11c \ud655\uc7a5\ud560 \uc218 \uc788\ub3c4\ub85d&nbsp; Amazon Linux\ub97c \uae30\ubc18\uc758 \uc0ac\uc6a9\uc790 \uc815\uc758 \ub7f0\ud0c0\uc784\uc744 <a class=\"mh-excerpt-more\" href=\"https:\/\/jirak.net\/wp\/aws-lambda%ec%9d%98-%ec%83%88%eb%a1%9c%ec%9a%b4-%ea%b8%b0%eb%8a%a5-%ec%bb%a8%ed%85%8c%ec%9d%b4%eb%84%88-%ec%9d%b4%eb%af%b8%ec%a7%80-%ec%a7%80%ec%9b%90\/\" title=\"AWS Lambda\uc758 \uc0c8\ub85c\uc6b4 \uae30\ub2a5 \u2014 \ucee8\ud14c\uc774\ub108 \uc774\ubbf8\uc9c0 \uc9c0\uc6d0\">[ more&#8230; ]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":39687,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[169],"tags":[656],"class_list":["post-39686","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","tag-aws"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/39686","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/comments?post=39686"}],"version-history":[{"count":1,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/39686\/revisions"}],"predecessor-version":[{"id":39688,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/posts\/39686\/revisions\/39688"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/media\/39687"}],"wp:attachment":[{"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/media?parent=39686"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/categories?post=39686"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jirak.net\/wp\/wp-json\/wp\/v2\/tags?post=39686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}