今までローカルで作成したLambda関数をAWS マネジメントコンソールを使用してデプロイ(zipファイルをアップロード)していました。
Lambda関数が多い場合、ブラウザ(AWS マネジメントコンソール)を使用してのデプロイは結構な手間になります。
そこで、AWS CLI を使用してコマンドベースでデプロイを行います。
前提
予めAWSに作成されているLambda関数を、ローカルで作成したLambda関数で更新(デプロイ)します。
したがって、AWSへLambda関数を作成しておいて下さい。
本稿ではLambda関数名を “test_deploy” という名前で作成してることとします。
Lambda関数の作成については説明しません。
なお、AWS CLI を使う為、AWS CLIを使用できる状態にしておいて下さい。
AWS CLI の設定については説明しません。
開発言語はnode.jsを使用します。
概要
AWS マネジメントコンソールでも同じですが、ローカルで作成したデプロイ対象のLambda関数をzipファイルにします。
その後、AWS CLI のコマンド使用してデプロイ(AWS へzipファイルをアップロード)します。
ローカルのLambda関数作成
ローカルでLambda関数を作成します。
ファイル名はindex.jsとします。
Lambda関数はデフォルトでindex.jsが実行されます。
以下はLambda関数の例になります。
const aws = require("aws-sdk");
exports.handler = async (event, context) => {
context.succeed({
statusCode: 200,
body : event,
});
};
デプロイファイル作成
作成したLambda関数(index.js)をzipファイルにします。
以下はzipファイルを作成するコマンドの例になります。
コマンドはindex.jsファイルが存在するディレクトリで行って下さい。
一つ上の階層のディレクトリに test_deploy.zip が作成されます。
zip -r ../test_deploy.zip ./* -x \*/.DS_Store/\*
zipファイルの説明は以下を参考にして下さい。
デプロイ実行
先ほど作成したzipファイルが存在するディレクトリへ移動し、以下のコマンドを実行します。
aws lambda update-function-code --function-name test_deploy --zip-file fileb://test_deploy.zip
–function-name でデプロイ先のLambda関数名を指定します。
成功すると以下のようなレスポンスが返却されます。
{
"FunctionName": "test_deploy",
"FunctionArn": "arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXXX:function:test_deploy",
"Runtime": "nodejs14.x",
"Role": "arn:aws:iam::XXXXXXXXXXXXX:role/exec-lambda",
"Handler": "index.handler",
"CodeSize": 317,
"Description": "",
"Timeout": 3,
"MemorySize": 128,
"LastModified": "2021-08-20T06:49:26.193+0000",
"CodeSha256": "XXXXXXXXXXXXXXX",
"Version": "$LATEST",
"TracingConfig": {
"Mode": "PassThrough"
},
"RevisionId": "a66b51f4-1071-4d57-8403-973854008f7a",
"State": "Active",
"LastUpdateStatus": "Successful",
"PackageType": "Zip"
}
最後に
特にありません。