次の記事を参考にしました。
AWS-CLIで試すLambdaでのHelloWorld!
この記事との違いは、リージョンを、アジアパシフィック(東京)にしたことと、aws cli を、Arch Linux で使ったことです。
実行結果
Lambda で、Hello World を、CloudWatchLogsに出力します。
CloudWatch -> ログ
手順
1)S3バケットの作成
s3_create.sh
aws s3 mb s3://ekzemplaro-lambda-test --region ap-northeast-1
実行結果
S3
2)Lambda Exec Roleの作成
role-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
role_create.sh
aws iam create-role --role-name hello_exec_role \
--assume-role-policy-document file://role-policy.json
hello_exec_role が作成されたことを確認
IAM -> ロール
4)ロールにCloudWatchLogsへの書き込みを行う権限を付与
attach-policy.sh
aws iam attach-role-policy --role-name hello_exec_role \
--policy-arn "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess"
確認
aws iam list-attached-role-policies --role-name hello_exec_role
- Lambda function の作成
index.js
console.log('Loading function')
exports.handler = function(event, context) {
console.log('value1 =', event.key1)
console.log('value2 =', event.key2)
console.log('value3 =', event.key3)
console.log('hello world!')
console.log('おはようございます。')
context.succeed(event.key1); // Echo back the first key value
// context.fail('Something went wrong');
}
zip 圧縮します。
zip -r HelloWorld.zip index.js
作成
function_create.sh
aws lambda create-function \
--function-name hello_function \
--runtime nodejs14.x \
--role arn:aws:iam::123456789012:role/hello_exec_role \
--handler index.handler \
--zip-file fileb://HelloWorld.zip \
--region ap-northeast-1
作成されたことを確認
Lambda -> 関数
- CLIからイベントを発火
cli_exec.sh
aws lambda invoke --invocation-type Event \
--function-name hello_function --region ap-northeast-1 \
--payload '{"key1":" こんにちは", "key2":"今晩は", "key3":"さようなら"}' \
outputfile.txt
実行結果
$ ./cli_exec.sh
{
"StatusCode": 202
}
- CloudWatchLogsにログが出力されているか確認
CloudWatch -> ログ -> ロググループ
画像は、冒頭
8)手順の再確認の為に作成したものを削除
delete.sh
# delete lambda function
aws lambda delete-function --function-name hello_function \
--region ap-northeast-1
#detach policy
aws iam detach-role-policy --role-name hello_exec_role \
--policy-arn "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess"
#delete role
aws iam delete-role --role-name hello_exec_role
#delete S3 bucket
aws s3 rm s3://ekzemplaro-lambda-test --recursive --region ap-northeast-1
aws s3 rb s3://ekzemplaro-lambda-test --region ap-northeast-1
Python3 のサンプルはこちら
python の関数を AWS Lambda で使用する