S3でアイテムがアップロードされるたびにラムダ関数を実行します。私の関数が呼び出されましたが、アクセスエラーがあるようです。間違いは何ですか?AWSでバケツアクセスエラーが発生しました
私はロールlambdas3
を定義しました。その信頼できるエンティティはラムダです。これは、ポリシーを、次のこと。これは、関数が実行中にlambdas3
役割を担っているラムダ関数
var aws = require('aws-sdk');
var s3 = new aws.S3();
exports.handler = function(event,context){
var bucket = event.Records[0].s3.bucket.name;
var key = decodeURIComponent(
event.Records[0].s3.object.key.replace(/\+/g,''));
var params = {
Bucket:bucket,
Key:key
};
s3.getObject(params,function(err,data){
if(err){
console.log(err);
context.fail('Error getting object'+
key+' from bucket'+bucket);
}else{
context.succeed('hello '+data.Body);
}
});
};
あるs3lambda
Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1509114309000",
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::mybucketname"
]
},
{
"Sid": "Stmt1509114340000",
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
]
}
と呼ばれています。
を更新ポリシーをご覧ください。それは "public"へのアクセスを与えません。 –
@マークあなたは正しいです。私はそれに気付かなかった。回答を更新しました –