前回、Lambda関数とS3の作成を終えました。
しかしこれだけではLambda関数からアクセスして、S3にオブジェクトを保存する。という動作ができません。
この処理を実装するには、S3バケットのバケットポリシーと、Lambda関数にIAMロールを付与する必要があります。
それぞれの権限付与について、実装していきたいと思います。
今回やりたいこと
- S3バケットのアクセス許可設定
- Lambda関数のロール追加
- Lambda関数の実行
目次
S3のバケットポリシーを編集する
1. Lambda関数に付与したIAMロールのARNを調べる
【ご参考】設定タブではLambda関数の各種設定が行えます。
試しに、タイムアウト値を変更してみました。
変更をすると、一般設定画面のところの表示が変更されていることがわかります。
Lambdaの最大実行時間は、最大で15分ですので、ご留意ください。
2.実行ロール欄から、IAMのコンソールへ遷移する
既存のロールの項目についてはブランクにしていますが、実際はここにロールの名称が入力されています。
3.Lambda関数に割り当てられているロールのARNをコピーする
前回の再掲:S3のアクセス許可画面を開く
4.コピーしたARNを、S3のバケットポリシーに記述する
サンプル
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "TEST_Statementid",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::xxxxx:role/lambda_role"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::bucket_name/*"
}
]
}
再掲:3.のLambda関数のIAMコンソールを開く
5.許可ポリシーを付与する
6.Lambda関数のコンソール画面からイベントを作成する
今回は引数等は指定しないので、なんでもOKです。
【補足】このまま実行するとエラーになる
このまま実行するとエラーになる場合があります。
その理由は、Pythonのパッケージがインストールされていないことに起因します。
Lambda関数でPythonを利用する場合、外部パッケージは都度インストールしてあげる必要があります。
が、それが手間ということであれば、すでにそういったパッケージを提供してくれている人がいます。
今回は、ありがたく利用させていただきました。
7.テストイベントを実行して、S3にCSVがアップロードされていることを確認する
格納されているCSVファイルの中身を確認して、出力条件に指定した内容と一致していればOKです!
お疲れ様でした!
お疲れ様でした!
EOF
Lambda関数を利用してみたい。という思いから、Lambda関数+S3のハンズオンをしてみました。
外部APIのコールの仕方や、ロールの指定などそれぞれでお作法が学べたのが大きな成果と思います。
この記事がどなたかのお役に立てたら幸甚です。
本当はね、、、余計な権限は付与しない。がお約束です。