如何在没有 OAI 的情况下使 public 存储桶只能从云端访问?
How to make a public bucket only accessible from cloudfront without OAI?
我有一个包含一些图像的存储桶。该存储桶可使用以下策略公开访问。
{
"Version": "2008-10-17",
"Id": "s3BucketPolicy",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::Bucketname/*"
}
]
}
我还有一个指向同一个存储桶的云端分布。我现在的问题是我的文件可以从云端 link 和存储桶 link.
访问
CloudfrontLink:www.xxxxxx.xxxx/xxxx
桶链接:www.bucketname/xxx
我的问题是如何仅使用云端公开访问我的存储桶。我不想要签名的 url 或 cookie。我希望任何拥有 cloudfrontlink 的人都能够访问图像并阻止任何拥有 bucketlink 的人访问图像。
将 S3 存储桶策略主体更改为 CloudFront 分发的 OAI。例如:
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity ABCDABCDABCDAB"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket/*"
}
]
}
这将阻止在 CloudFront 之外访问存储桶内容。您在这里不需要签名的 URLS。有关详细信息,请参阅 documentation。
我有一个包含一些图像的存储桶。该存储桶可使用以下策略公开访问。
{
"Version": "2008-10-17",
"Id": "s3BucketPolicy",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::Bucketname/*"
}
]
}
我还有一个指向同一个存储桶的云端分布。我现在的问题是我的文件可以从云端 link 和存储桶 link.
访问CloudfrontLink:www.xxxxxx.xxxx/xxxx
桶链接:www.bucketname/xxx
我的问题是如何仅使用云端公开访问我的存储桶。我不想要签名的 url 或 cookie。我希望任何拥有 cloudfrontlink 的人都能够访问图像并阻止任何拥有 bucketlink 的人访问图像。
将 S3 存储桶策略主体更改为 CloudFront 分发的 OAI。例如:
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity ABCDABCDABCDAB"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket/*"
}
]
}
这将阻止在 CloudFront 之外访问存储桶内容。您在这里不需要签名的 URLS。有关详细信息,请参阅 documentation。