当我遇到“拒绝访问”错误时,我试图授予对匿名用户的只读访问权限,即使它是我的存储桶并且我拥有所有权限。
我尝试编辑主体看起来像这样:
"Principal": {
"AWS": [
"arn:aws:iam::123123123123:user/myuid"
]
但后来我得到了一个不完整的json错误。
这是亚马逊使用的一个例子,我编辑过以迎合我:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::examplebucket/*"]
}
]
}
它应该使桶公开,所以所有人都可以查看我的网站,但由于访问被拒绝,这不会发生。
如果您希望授予对特定IAM用户的访问权限,则应该向该IAM用户添加策略(不使用存储桶策略)。
如果您希望授予“任何人”访问权限(无需身份验证),那么您应该创建一个Bucket Policy,例如:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::examplebucket/*"]
}
]
}
另外,请务必关闭Amazon S3 Block Public Access,否则在尝试访问内容时会收到Access Denied
错误。
您的IAM策略应该将s3:GetBucketPolicy and s3:PutBucketPolicy
设置为IAM帐户的权限操作。
您的政策应如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStmt",
"Action": [
"s3:GetBucketPolicy",
"s3:PutBucketPolicy"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::awsexamplebucket/*"
}
]
}
你可以在这里查看故障排除文档:https://aws.amazon.com/premiumsupport/knowledge-center/s3-access-denied-bucket-policy/