moderato.適度に歩くように中くらいのテンポで。vlayusukeTweetつい最近Lambda関数の実装をしていまして、その中で困ったことと解決したことがあったので、自分への備忘も兼ねて共有します。一応エチケットシートとして。ServicesのBoto3ライブラリの仕様が変更された場合には、必ずしもこの検証通りの結果にならない可能性があることだけ、ご了承ください。S3バケットからS3.PutObjectを行う処理のみを、Lambda関数のレイヤーとして切り出す上記で作成したレイヤーをimportしているビジネスロジックの部分をLambda関数上で実装するレイヤー、Lambda関数ともにPython3.8で実装Lambda関数を実行すると、S3バケットにファイルが格納されるちなみにレイヤーのコードはざっくりこんな感じです。ほとんどBoto3のドキュメントのお作法そのまんまです。)困ったことこのレイヤーを含むLambda関数をリリースして、同じAWSアカウント内にS3バケットを作成。ブロックパブリックアクセスは有効にしています。ブロックパブリックアクセスを有効にしている場合でも、デフォルトでは特に作成したS3バケットへのファイルの格納は普通にできる、と思っていたのですが、いざLambda関数を実行してみると、ファイルが格納されないわけです。Deniedが出力されているわけで。危ないと知りながらも、一旦S3バケットのブロックパブリックアクセスを無効にしてみたり、それでも解決しないので、再度ブロックパブリックアクセスを有効にして、Lambdaの実行ロールに対してPutObjectとPutObjectACLを有効にしてあげるバケットポリシーを書いてみたりしてもどうにも解決せず、途方に暮れていました。roleを明示的に書かないと、S3バケットに対する操作ができないようです。Endpointは実装していないので、Lambda関数からS3へのアクセスの通信が、一旦インターネットに出ていっているが故に、明示的にこういったポリシーの設定をしてあげないとダメなのかもしれません。Endpointを設定していないので、断定的なことは言えないのですが。S3とLambda関数の関係は、まだまだ勉強しなければいけないですね。WordPress.。