Lambda関数"handson-cli-lambda-basic-layer-function"を作成します。
手順に必要な設定値を変数に格納をします。
0. リージョンの指定
リージョンを指定します。
環境変数の設定 export AWS_DEFAULT_REGION='ap-northeast-1'
環境変数の設定
export AWS_DEFAULT_REGION='ap-northeast-1'
1. Lambda関数名
Lambda関数名を指定します。
変数の設定: LAMBDA_FUNCTION_NAME='handson-cli-lambda-basic-layer-function'
変数の設定:
LAMBDA_FUNCTION_NAME='handson-cli-lambda-basic-layer-function'
2. Lambda関数の説明
Lambda関数の説明を指定します。
変数の設定: LAMBDA_FUNCTION_DESCRIPTION='function for handson-cli-lambda.'
LAMBDA_FUNCTION_DESCRIPTION='function for handson-cli-lambda.'
3. Lambda関数のランタイム名
Lambda関数のランタイム名を指定します。
変数の設定: LAMBDA_FUNCTION_RUNTIME='python3.8'
LAMBDA_FUNCTION_RUNTIME='python3.8'
4. IAMロール名
IAMロール名を指定します。
変数の設定: IAM_ROLE_NAME='handson-cli-lambda-role'
IAM_ROLE_NAME='handson-cli-lambda-role'
5. Lambda関数コードZIPファイル
Lambda関数コードZIPファイル用ディレクトリを指定します。
変数の設定: DIR_LAMBDA_FUNCTION_ZIP="${HOME}/environment/artifact-handson-cli-lambda"
DIR_LAMBDA_FUNCTION_ZIP="${HOME}/environment/artifact-handson-cli-lambda"
Lambda関数コードZIPファイルを指定します。
変数の設定: FILE_LAMBDA_FUNCTION_ZIP="${DIR_LAMBDA_FUNCTION_ZIP}/${LAMBDA_FUNCTION_NAME}.zip" \ && echo ${FILE_LAMBDA_FUNCTION_ZIP} 結果(例): ${HOME}/environment/artifact-handson-cli-lambda/handson-cli-lambda-basic-layer-function.zip
FILE_LAMBDA_FUNCTION_ZIP="${DIR_LAMBDA_FUNCTION_ZIP}/${LAMBDA_FUNCTION_NAME}.zip" \ && echo ${FILE_LAMBDA_FUNCTION_ZIP}
結果(例):
${HOME}/environment/artifact-handson-cli-lambda/handson-cli-lambda-basic-layer-function.zip
各変数に正しい設定値が格納されていることを確認しながら保存します。
変数の確認: cat << END # 0. AWS_DEFAULT_REGION:"ap-northeast-1" AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}" # 1. LAMBDA_FUNCTION_NAME:"handson-cli-lambda-basic-layer-function" LAMBDA_FUNCTION_NAME="${LAMBDA_FUNCTION_NAME}" # 2. LAMBDA_FUNCTION_DESCRIPTION:"function for handson-cli-lambda." LAMBDA_FUNCTION_DESCRIPTION="${LAMBDA_FUNCTION_DESCRIPTION}" # 3. LAMBDA_FUNCTION_RUNTIME:"python3.8" LAMBDA_FUNCTION_RUNTIME="${LAMBDA_FUNCTION_RUNTIME}" # 4. IAM_ROLE_NAME:"handson-cli-lambda-role" IAM_ROLE_NAME="${IAM_ROLE_NAME}" # 5. 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
変数の確認:
cat << END # 0. AWS_DEFAULT_REGION:"ap-northeast-1" AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}" # 1. LAMBDA_FUNCTION_NAME:"handson-cli-lambda-basic-layer-function" LAMBDA_FUNCTION_NAME="${LAMBDA_FUNCTION_NAME}" # 2. LAMBDA_FUNCTION_DESCRIPTION:"function for handson-cli-lambda." LAMBDA_FUNCTION_DESCRIPTION="${LAMBDA_FUNCTION_DESCRIPTION}" # 3. LAMBDA_FUNCTION_RUNTIME:"python3.8" LAMBDA_FUNCTION_RUNTIME="${LAMBDA_FUNCTION_RUNTIME}" # 4. IAM_ROLE_NAME:"handson-cli-lambda-role" IAM_ROLE_NAME="${IAM_ROLE_NAME}" # 5. 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
下段の変数が入っていない、もしくは上段と同等の値が入っていない場合は、それぞれの手順番号に戻って変数の設定を行います。
IAMロールのARNを取得します。
コマンド: IAM_ROLE_ARN=$( \ aws iam get-role \ --role-name ${IAM_ROLE_NAME} \ --query 'Role.Arn' \ --output text \ ) \ && echo ${IAM_ROLE_ARN} 結果(例): arn:aws:iam::XXXXXXXXXXXX:role/handson-cli-lambda-role
コマンド:
IAM_ROLE_ARN=$( \ aws iam get-role \ --role-name ${IAM_ROLE_NAME} \ --query 'Role.Arn' \ --output text \ ) \ && echo ${IAM_ROLE_ARN}
arn:aws:iam::XXXXXXXXXXXX:role/handson-cli-lambda-role
Lambda関数のハンドラ名を指定します。
変数の設定: LAMBDA_FUNCTION_HANDLER="${LAMBDA_FUNCTION_NAME}.lambda_handler" \ && echo ${LAMBDA_FUNCTION_HANDLER} 結果(例): handson-cli-lambda-basic-layer-function.lambda_handler
LAMBDA_FUNCTION_HANDLER="${LAMBDA_FUNCTION_NAME}.lambda_handler" \ && echo ${LAMBDA_FUNCTION_HANDLER}
handson-cli-lambda-basic-layer-function.lambda_handler
Lambda関数を作成します。
変数の確認: cat << ETX # LAMBDA_FUNCTION_NAME:"handson-cli-lambda-basic-layer-function" LAMBDA_FUNCTION_NAME="${LAMBDA_FUNCTION_NAME}" # LAMBDA_FUNCTION_DESCRIPTION:"function for handson-cli-lambda." LAMBDA_FUNCTION_DESCRIPTION="${LAMBDA_FUNCTION_DESCRIPTION}" # LAMBDA_FUNCTION_RUNTIME:"python3.8" LAMBDA_FUNCTION_RUNTIME="${LAMBDA_FUNCTION_RUNTIME}" # LAMBDA_FUNCTION_HANDLER:"handson-cli-lambda-basic-layer-function.lambda_handler" LAMBDA_FUNCTION_HANDLER="${LAMBDA_FUNCTION_HANDLER}" # IAM_ROLE_ARN:"arn:aws:iam::XXXXXXXXXXXX:role/handson-cli/handson-cli-lambda-role" IAM_ROLE_ARN="${IAM_ROLE_ARN}" # 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}" ETX コマンド: aws lambda create-function \ --function-name ${LAMBDA_FUNCTION_NAME} \ --description "${LAMBDA_FUNCTION_DESCRIPTION}" \ --runtime ${LAMBDA_FUNCTION_RUNTIME} \ --role ${IAM_ROLE_ARN} \ --handler ${LAMBDA_FUNCTION_HANDLER} \ --zip-file fileb://${FILE_LAMBDA_FUNCTION_ZIP} 結果(例): { "LastUpdateStatus": "Successful", "CodeSha256": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "FunctionName": "handson-cli-lambda-basic-layer-function", "RevisionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "CodeSize": 280, "MemorySize": 128, "FunctionArn": "arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:handson-cli-lambda-basic-layer-function", "Version": "$LATEST", "Role": "arn:aws:iam::XXXXXXXXXXXX:role/handson-cli-lambda-role", "Timeout": 3, "LastModified": "2021-02-18T01:23:45.678+0000", "Handler": "handson-cli-lambda-basic-layer-function.lambda_handler", "Runtime": "python3.8", "State": "Active", "TracingConfig": { "Mode": "PassThrough" }, "Description": "function for handson-cli-lambda." }
cat << ETX # LAMBDA_FUNCTION_NAME:"handson-cli-lambda-basic-layer-function" LAMBDA_FUNCTION_NAME="${LAMBDA_FUNCTION_NAME}" # LAMBDA_FUNCTION_DESCRIPTION:"function for handson-cli-lambda." LAMBDA_FUNCTION_DESCRIPTION="${LAMBDA_FUNCTION_DESCRIPTION}" # LAMBDA_FUNCTION_RUNTIME:"python3.8" LAMBDA_FUNCTION_RUNTIME="${LAMBDA_FUNCTION_RUNTIME}" # LAMBDA_FUNCTION_HANDLER:"handson-cli-lambda-basic-layer-function.lambda_handler" LAMBDA_FUNCTION_HANDLER="${LAMBDA_FUNCTION_HANDLER}" # IAM_ROLE_ARN:"arn:aws:iam::XXXXXXXXXXXX:role/handson-cli/handson-cli-lambda-role" IAM_ROLE_ARN="${IAM_ROLE_ARN}" # 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}" ETX
aws lambda create-function \ --function-name ${LAMBDA_FUNCTION_NAME} \ --description "${LAMBDA_FUNCTION_DESCRIPTION}" \ --runtime ${LAMBDA_FUNCTION_RUNTIME} \ --role ${IAM_ROLE_ARN} \ --handler ${LAMBDA_FUNCTION_HANDLER} \ --zip-file fileb://${FILE_LAMBDA_FUNCTION_ZIP}
{ "LastUpdateStatus": "Successful", "CodeSha256": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "FunctionName": "handson-cli-lambda-basic-layer-function", "RevisionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "CodeSize": 280, "MemorySize": 128, "FunctionArn": "arn:aws:lambda:ap-northeast-1:XXXXXXXXXXXX:function:handson-cli-lambda-basic-layer-function", "Version": "$LATEST", "Role": "arn:aws:iam::XXXXXXXXXXXX:role/handson-cli-lambda-role", "Timeout": 3, "LastModified": "2021-02-18T01:23:45.678+0000", "Handler": "handson-cli-lambda-basic-layer-function.lambda_handler", "Runtime": "python3.8", "State": "Active", "TracingConfig": { "Mode": "PassThrough" }, "Description": "function for handson-cli-lambda." }
「Lambda関数"handson-cli-lambda-basic-layer-function"が存在する。」ことを確認します。
コマンド: aws lambda list-functions \ --query "Functions[?FunctionName == \`${LAMBDA_FUNCTION_NAME}\`].FunctionName" \ --output text 結果(例): handson-cli-lambda-basic-layer-function
aws lambda list-functions \ --query "Functions[?FunctionName == \`${LAMBDA_FUNCTION_NAME}\`].FunctionName" \ --output text
handson-cli-lambda-basic-layer-function