処理の実行
Lambda関数のコードを更新します。
変数の確認:
cat << END
# LAMBDA_FUNCTION_NAME:"handson-cli-lambda-basic-layer-function"
LAMBDA_FUNCTION_NAME="${LAMBDA_FUNCTION_NAME}"
# FILE_LAMBDA_FUNCTION_ZIP:"${HOME}/environment/artifact-handson-cli-lambda/handson-cli-lambda-basic-layer-function.zip"
FILE_LAMBDA_FUNCTION_ZIP="${FILE_LAMBDA_FUNCTION_ZIP}"
END
コマンド:
aws lambda update-function-code \
--function-name ${LAMBDA_FUNCTION_NAME} \
--zip-file fileb://${FILE_LAMBDA_FUNCTION_ZIP}
結果(例):
{
"Layers": [
{
"CodeSize": 259,
"Arn": "arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:layer:handson-cli-lambda-layer:1"
}
],
"FunctionName": "handson-cli-lambda-basic-layer-function",
"FunctionArn": "arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:handson-cli-lambda-basic-layer-function",
"Runtime": "python3.8",
"Role": "arn:aws:iam::XXXXXXXXXXXX:role/handson-cli/handson-cli-lambda-role",
"Handler": "handson-cli-lambda-basic-layer-function.handler",
"CodeSize": 256,
"Description": "function for handson-cli-lambda."
"Timeout": 3,
"MemorySize": 128,
"LastModified": "2021-02-18T01:23:45.678+0000",
"CodeSha256": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"Version": "$LATEST",
"TracingConfig": {
"Mode": "PassThrough"
},
"RevisionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"State": "Active",
"LastUpdateStatus": "Successful",
"PackageType": "Zip"
}
ZIPファイルのハッシュ値を取得し、Base64エンコードします。
コマンド:
LAMBDA_FUNCTION_CODE_SHA256_ZIP=$( \
openssl dgst -binary -sha256 ${FILE_LAMBDA_FUNCTION_ZIP} \
| base64 \
) \
&& echo ${LAMBDA_FUNCTION_CODE_SHA256_ZIP}
結果(例):
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
完了確認
「Lambda関数"handson-cli-lambda-basic-layer-function"の更新に成功している。」ことを確認します。
コマンド:
aws lambda get-function \
--function-name ${LAMBDA_FUNCTION_NAME} \
--query 'Configuration.LastUpdateStatus' \
--output text
結果(例):
「Lambda関数"handson-cli-lambda-basic-layer-function"のコードハッシュ値が"ZIPファイルのハッシュをBase64エンコードした値"と同じである。」ことを確認します。
コマンド:
LAMBDA_FUNCTION_CODE_SHA256=$( \
aws lambda get-function \
--function-name ${LAMBDA_FUNCTION_NAME} \
--query 'Configuration.CodeSha256' \
--output text \
) \
&& echo ${LAMBDA_FUNCTION_CODE_SHA256}
結果(例):
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
コマンド:
if [ "${LAMBDA_FUNCTION_CODE_SHA256_ZIP}" = "${LAMBDA_FUNCTION_CODE_SHA256}" ]; then
(echo "same"; exit 0)
else
(echo "different"; exit 1)
fi
結果(例):