[英]S3 Public Access Alternatives
我学习 AWS 已经有一段时间了,有一件事让我很困惑。
假设我拥有一个像 Instagram 这样的应用程序(哈哈,但仍然如此),我的用户在我的应用程序上上传了很多图片。 现在我通过任何方式将它们存储在 s3 存储桶中。 现在图像安全地存储在 S3 上,图像的 URL 存储在我的数据库中,以便我的用户可以轻松地从应用程序访问图像。
现在,为了在任何地方都可以访问图像 [移动应用程序、桌面应用程序和 Web 应用程序],我必须公开存储桶及其中的所有图像,以便任何应用程序都可以通过 URL 访问图像。但是 S3 推荐我们不要公开存储桶及其内容。
我尝试不公开存储桶,只是设置了 CORS 配置,例如
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>https://www.trailer2you.herokuapp.com</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>https://www.t2ytest-private.herokuapp.com</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>https://www.t2ybeta.herokuapp.com</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
但这也行不通。 所有应用程序都可以通过 URL 访问图像的唯一方法是通过如下策略公开存储桶及其所有内容
{
"Id": "Policy1598785179613",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1598785170418",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "{my ARN}",
"Principal": "*"
}
]
}
但这是 S3 不鼓励我们做的事情。 有没有其他选择可以实现这样的目标。 肯定有一些东西,但我是云的新手,我无法在文档中找到合适的资源。 如果有人可以向我指出与此案例类似的文档,我将不胜感激。
Amazon S3 中的对象默认是私有的。
有几种方法可以提供对存储桶的访问:
听起来预签名 URL 最适合您的情况。 想象一个照片分享网站:
<img>
标签)有关详细信息,请参阅: Amazon S3 预签名 URL
为了补充@John 的回答,您还可以使用 CloudFront (CF) 通过Origin Access Identity (OAI) 使用存储桶中的图像服务器:
将 OAI 与 CF 结合使用,您可以让您的存储桶完全保密,并强制您的用户只能通过 CF 访问您的图像。 使用 CF 还可以加快下载速度,因为它是 AWS 的内容交付网络,比 S3 更接近最终用户。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.