我有一个将视频上传到 S3 存储桶的应用程序,然后创建一个自定义策略以允许其他用户(用于 Zencoder 服务)获取文件,并将转码后的文件上传回存储桶。
以下是我在转码期间给用户的当前自定义策略。基本上我对整个存储桶授予完全读取权限,但我只允许用户将文件放入特定的嵌套文件夹中。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUserToListContentsOfBucket",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::MY-BUCKET"
]
},
{
"Sid": "AllowUserToListContentsOfBucketFolders",
"Effect": "Allow",
"Action": [
"s3:ListBucketMultipartUploads",
"s3:GetObjectAcl",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::MY-BUCKET/*"
]
},
{
"Sid": "AllowUserS3ActionsOfSpecificFolder",
"Effect": "Allow",
"Action": [
"s3:PutObjectAcl",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::MY-BUCKET/some/nested/folder/*"
]
}
]
}
这在大多数情况下都有效,但在 Zencoder 传输的约 1,000 个文件中,通常有一两个文件因403 Forbidden
错误而失败。我不知道为什么,因为文件在错误之前和之后都正确传输。
403 Access Denied
在提供此类权限时,Amazon AWS S3 / IAM 是否有任何理由发送?