AWS Lambda関数の実行でs3.putObjectAclの部分で、Access Deniedが出て困っています。
こちら「AWSによるサーバーレスアーキテクチャ」という本を参考にしながら進めているのですが、初歩的なところでつまづいてしまっています。
lambda関数の実行コードindex.js は以下のようにしています。
javascript
1'use strict'; 2var AWS = require('aws-sdk'); 3var s3 = new AWS.S3(); 4exports.handler = function(event, context, callback){ 5 var message = JSON.parse(event.Records[0].Sns.Message); 6 var sourceBucket = message.Records[0].s3.bucket.name; 7 var sourceKey = decodeURIComponent(message.Records[0].s3.object.key.replace(/+/g, ' ')); 8 var params = { 9 Bucket: sourceBucket, 10 Key: sourceKey, 11 ACL: 'public-read' 12 }; 13 s3.putObjectAcl(params, function(err, data){ 14 if (err) { 15 callback(err); 16 } 17 }); 18};
実行ロールのポリシーで、putObjectAclは「すべてのリソース」を割り当てています。
JSON
1{ 2 "Version": "2012-10-17", 3 "Statement": [ 4 { 5 "Sid": "VisualEditor0", 6 "Effect": "Allow", 7 "Action": "s3:PutObjectAcl", 8 "Resource": "*" 9 } 10 ] 11}
実行時のエラーメッセージは↓です。AccessDeniedが出てしまっています。
JSON
1{ 2 "errorMessage": "Access Denied", 3 "errorType": "AccessDenied", 4 "stackTrace": [ 5 "Request.extractError (/var/task/node_modules/aws-sdk/lib/services/s3.js:585:35)", 6 "Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:106:20)", 7 "Request.emit (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:78:10)", 8 "Request.emit (/var/task/node_modules/aws-sdk/lib/request.js:683:14)", 9 "Request.transition (/var/task/node_modules/aws-sdk/lib/request.js:22:10)", 10 "AcceptorStateMachine.runTo (/var/task/node_modules/aws-sdk/lib/state_machine.js:14:12)", 11 "/var/task/node_modules/aws-sdk/lib/state_machine.js:26:10", 12 "Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:38:9)", 13 "Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:685:12)", 14 "Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:116:18)" 15 ] 16}

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/23 09:17