[Lambda/Node] AWS CLI を使って zip ファイルでデプロイする
Lambda に zipファイルでアップロードするには、コンソール画面から手動で行うこともできますが手間がかかります。AWS CLI を利用してアップロードする方法になります。
前提
・AWS CLI でアクセスできること
・Lambda関数を作成済みであること
ファイルの作成
フォルダを作成し、package.json を作成します。
mkdir add
cd add
npm init -y
package.json に下記の3行を追加します。
zip は lambda_function.zip にファイルをまとめます。
predeploy は zip を実行します。
deploy では AWS CLI を使って、Lambda へ zipファイルをアップロードします。Lambda関数のARN部分を書き換えます。AWS CLI で使う Profile が default でない場合は、profile も変更します。
"zip": "zip -r lambda_function.zip .",
"predeploy": "npm run zip",
"deploy": "aws lambda update-function-code --function-name arn:aws:lambda:ap-northeast-1:54XXXXXXXX43:function:add --zip-file fileb://lambda_function.zip --profile default"
追加した package.json です。
{
"name": "add",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"zip": "zip -r lambda_function.zip .",
"predeploy": "npm run zip",
"deploy": "aws lambda update-function-code --function-name arn:aws:lambda:ap-northeast-1:54XXXXXXXX43:function:add --zip-file fileb://lambda_function.zip --profile default"
},
"keywords": [],
"author": "",
"license": "ISC"
}
index.js も作成します。Lambda関数を作成したときのコードをそのまま利用します。
export const handler = async(event) => {
// TODO implement
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};
zip ファイルをアップロードする
npm run deploy で zipファイルをアップロードします。
npm run deploy
> npm run deploy
> add@1.0.0 predeploy
> npm run zip
> add@1.0.0 zip
> zip -r lambda_function.zip .
updating: index.js (deflated 23%)
updating: package.json (deflated 41%)
> add@1.0.0 deploy
> aws lambda update-function-code --function-name arn:aws:lambda:ap-northeast-1:54XXXXXXXX43:function:add --zip-file fileb://lambda_function.zip --profile default
{
"FunctionName": "add",
"FunctionArn": "arn:aws:lambda:ap-northeast-1:54XXXXXXXX43:function:add",
"Runtime": "nodejs18.x",
"Role": "arn:aws:iam::54XXXXXXXX43:role/service-role/add-role-d2bwm84z",
"Handler": "index.handler",
"CodeSize": 2810,
"Description": "",
"Timeout": 3,
"MemorySize": 128,
"LastModified": "2023-05-07T15:52:21.000+0000",
"CodeSha256": "eaxPYNSgj3QXXXXXXXXXXXXX4TwYgOgBr+GlwORUk04=",
"Version": "$LATEST",
"TracingConfig": {
"Mode": "PassThrough"
},
"RevisionId": "d1cXXXX9-aXX1-4XXc-aXX7-85XXXXXXXXbd",
"State": "Active",
"LastUpdateStatus": "InProgress",
"LastUpdateStatusReason": "The function is being created.",
"LastUpdateStatusReasonCode": "Creating",
"PackageType": "Zip",
"Architectures": [
"x86_64"
],
"EphemeralStorage": {
"Size": 512
},
"SnapStart": {
"ApplyOn": "None",
"OptimizationStatus": "Off"
},
"RuntimeVersionConfig": {
"RuntimeVersionArn": "arn:aws:lambda:ap-northeast-1::runtime:a19cXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX7f8c"
}
}