Ich habe die folgende Richtlinie für einen S3-Bucket, der mit dem AWS-Richtliniengenerator erstellt wurde, damit ein Lambda mit einer bestimmten Rolle auf die Dateien im Bucket zugreifen kann. Allerdings, wenn ich das Lambda ausführen, erhalte ich 403 die Erlaubnis verweigert:S3-Richtlinie zum Zulassen von Lambda
"errorMessage": "Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: <requestId>)",
"errorType": "com.amazonaws.services.s3.model.AmazonS3Exception",
Die Politik auf dem S3-Bucket:
{
"Version": "2012-10-17",
"Id": "Policy<number>",
"Statement": [
{
"Sid": "Stmt<number>",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<account>:role/<roleName>"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::<bucketName>/*"
}
]
}
Was ist falsch mit der Politik? Der Lambda wird mit der in der Richtlinie konfigurierten Rolle ausgeführt.
Ich werde mit der ersten Änderung dieser Richtlinie beginnen, um allen Berechtigungen zu geben .. im Prinzip entfernen Principal und Bucketname .. Das wird Ihnen sagen, ob das Problem in Ihrer S3-Richtlinie oder mit Lambda ist. – Deepak
Warum fügen Sie der IAM-Rolle, die der Lambda-Funktion zugewiesen ist, die S3-Bucket-Berechtigungen hinzu, anstatt zu versuchen, dies über eine Bucket-Richtlinie zu tun? –
Was machst du mit dem Eimer, von Lambda? Einige Aktionen erfordern, dass die Ressource das '/ *' am Ende ausschließt, andere müssen es enthalten: '" Ressource ": [" arn: aws: s3 ::: "," arn: aws: s3 ::: /* "]' –