我需要发布预签名 URL,以允许用户将文件 GET 和 PUT 到特定的 S3 存储桶中。我创建了一个 IAM 用户并使用其密钥创建预签名 URL,并添加了嵌入该用户的自定义策略(见下文)。当我使用生成的 URL 时,我的AccessDenied
策略出现错误。如果我将FullS3Access
策略添加到 IAM 用户,则文件可以是具有相同 URL 的 GET 或 PUT,因此显然缺少我的自定义策略。它有什么问题?
这是我正在使用但不起作用的自定义策略:
{
"Statement": [
{
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::MyBucket"
]
},
{
"Action": [
"s3:AbortMultipartUpload",
"s3:CreateBucket",
"s3:DeleteBucket",
"s3:DeleteBucketPolicy",
"s3:DeleteObject",
"s3:GetBucketPolicy",
"s3:GetLifecycleConfiguration",
"s3:GetObject",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:ListMultipartUploadParts",
"s3:PutBucketPolicy",
"s3:PutLifecycleConfiguration",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::MyBucket/*"
]
}
]
}