我正在尝试创建一个 s3 存储桶来作为网站托管一些文件。
为此,我认为我需要将每个对象公开。所以我制定了以下政策:
{
"Id": "Policy1554620498897",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1554620491195",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-dummy-bucket",
"Principal": "*"
}
]
}
这导致了这个错误:
所以我把资源改成了"Resource": "arn:aws:s3:::my-dummy-bucket/*",
现在我得到了这个:
这个“拒绝访问”指的是什么?我缺乏更改存储桶策略或资源的权限?
该存储桶是新创建的,其中尚无对象。
答案1
虽然“访问被拒绝”错误可能是由于缺乏权限造成的,但最可能的解释是您的存储桶或整个帐户设置为不允许对存储桶进行公共访问。
看使用 Amazon S3 阻止公共访问在 S3 开发人员指南中。
“意外地”将存储桶公开并不容易,但人们仍然设法做到这一点……因此 AWS最近添加了这些设置确保您在一定程度上将您的内容公开给世界。所有新帐户的默认设置是不允许公开存储桶。
之前的错误是因为"Resource": "arn:aws:s3:::example-bucket"
引用的是存储桶本身,而不是其中的对象,并且s3:GetObject
仅适用于对象,而不适用于存储桶。添加/*
会将 ARN 更改为引用存储桶中的所有对象,而不是存储桶本身。