AWS-Lambda実践ガイドを読んでいてAWS LambdaへS3へのアクセス権を付与するためバケットポリシーを変更しようとしたらハマったので、その記録です。
手順
AWS LambdaからS3を扱う上でS3のバケットポリシーを設定することで、Lambdaに対してアクセス権を付与することができます。
しかし、その設定をする上で、Policy Generatorから作成したバケットポリシーがアクセス拒否でエラー発生する事態が発生した。
手順としては以下を行なった。
- S3コンソールでバケットを選択する。
- アクセス権限タブを選択する。
- バケットポリシーを選択する。
- 画面下部のポリシージェネレータのリンクを押して適切な値を設定し、バケットポリシーJSONを取得する。
- S3コンソールに戻り、バケットポリシーJSONを貼り付けて保存ボタンを押す。
保存できると思ったが、エラーが発生し、「アクセス拒否」と表示される。
解決方法
S3コンソール > アクセス権限タブ > パブリックアクセス設定
にある新規のパブリックバケットポリシーをブロックする(推奨)
とあるので、チェックを外します。
バケットポリシー画面に戻り、もう一度ポリシージェネレータで作成したポリシーをコピペして保存ボタンを押すと無事に登録されました。
最後にパブリックアクセス設定の「新規のパブリックバケットポリシーをブロックする」チェックを元に戻すことを忘れないでください。