我有一个名为"mybucket"的S3 bucket,它前面有一个cloudfront分布。我已经配置了cloudfront Origin Access Identity(OAI),并将bucket策略设置如下:
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXXXXXX"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket/*"
}
]
}
所以现在,当我通过cloudfront请求文件时,它可以正常工作并提供文件,但通过S3的直接访问被阻止了。令人惊叹的
我的问题是,这个bucket策略只适用于新/新上传的文件,而不适用于bucket中的现有文件。我本以为bucket级别的策略会应用于所有文件?我需要重新上传我的bucket中的所有内容吗?或者有没有办法将这个新的bucket策略推送到所有现有对象?
Amazon S3存储桶策略在收到请求时进行评估。因此,当应用策略时,它会立即应用于bucket(嗯,实际上需要几秒钟才能激活)。
您不需要重新上传文件。
在创建bucket策略之前,您的web浏览器可能已经缓存了文件。通过尝试从其他浏览器或其他计算机访问文件来测试此功能。
存储桶中的某些对象也可能具有对象级别的权限设置。对于任何可直接访问的对象,请检查"权限"设置,并确保没有Everyone
的设置。