如何为 s3 存储桶指定子域?
Posted
技术标签:
【中文标题】如何为 s3 存储桶指定子域?【英文标题】:how appoint a subdomain for a s3 bucket? 【发布时间】:2013-09-16 22:31:11 【问题描述】:早上好,
我使用 amazon s3 存储桶作为图像服务器。 我想使用我网站的子域,如何解决这个桶。 例如:一张图片现在在:https://s3-sa-east-1.amazonaws.com/nomeBucket/pasta/imag.png,我通过同一个链接访问它。
会不会是这样:imagens.mydomain.com.br / 文件夹 / imag.png 有什么办法可以做到这一点吗?为存储桶指定子域地址? 我已经尝试了亚马逊路线 53,作为 CNAME。我试过这个:https://s3-sa-east-1.amazonaws.com/nomeBucket/
我昨天参加了考试,但显然没有成功。 有人已经做过类似的事情,和/或知道如何帮助我?
注意:我使用的是 nginx。子域也需要配置吗?
谢谢
【问题讨论】:
【参考方案1】:您需要重命名您的存储桶以匹配自定义域名(例如imagens.mydomain.com.br
)并将该域设置为 CNAME 到
<bucket-name>.s3.amazonaws.com.
(在你的情况下imagens.mydomain.com.br.s3.amazonaws.com.
这里有完整的说明:
http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html
【讨论】:
最佳。这样我就可以使用图片的地址了:“images.mydomain.com.br / image.jpg”? 我已经在53号路线上预约了,但是子域还没有显示任何内容。这需要一段时间,还是我应该在 nginx 中配置一些东西?谢谢 什么都不需要配置nginx。由于 DNS 缓存,它可能需要一段时间。您可以尝试通过运行dig images.mydomain.com.br
并检查响应来验证 DNS 是否设置正确。清除 DNS 缓存也可能有助于更快地查看更改。
谢谢。只是注意到我需要在爱尔兰使用s3-eu-west-1.amazonaws.com.
作为存储桶。我不需要存储桶名称作为前缀。
一般需要多长时间?【参考方案2】:
为了完整起见,我将在此处建立其他答案。
我已将存储桶移至子域,以便 Cloudflare 可以缓存内容。
旧 S3 存储桶名称:autoauctions 新 S3 存储桶名称:img.autoauctions.io CNAME 记录:img.autoauctions.io.s3.amazonaws.com现在您需要复制所有对象,因为您无法重命名存储桶。以下是使用 AWS CLI 执行此操作的方法:
pip install awscli
aws configure
转到https://console.aws.amazon.com/iam/home 并创建用户或转到现有用户
转到用户的安全凭据标签
点击创建访问密钥。 复制秘密。
Here's a list of AWS regions。
现在您将旧存储桶内容复制到新存储桶。
aws s3 sync s3://autoauctions s3://img.autoauctions.io
我发现这对于我需要复制的 1TB 图像来说太慢了,所以我增加了并发连接数并从 EC2 实例重新运行。
aws configure set default.s3.max_concurrent_requests 400
同步!
想要将存储桶中的文件夹设为公开?像这样创建存储桶策略:
"Version": "2012-10-17",
"Statement": [
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::img.autoauctions.io/copart/*"
,
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::img.autoauctions.io/iaai/*"
]
现在图像通过 Cloudflare 的缓存从 img.autoauctions.io
加载。
希望这对某些人有所帮助!
【讨论】:
【参考方案3】:2019 年更新:S3 中的 AWS SUBDOMAIN 托管
截至今天,以下步骤已使 AWS S3 托管的静态网站的子域成功运行:
-
创建带有子域名的存储桶。在这个例子中 www.subtest.mysite.com
注意:确保在存储桶的“权限”选项卡上:
1.阻止公共访问(存储桶设置) 2.访问控制列表& 3.桶策略 适当设置以确保存储桶是公开的。 (假设您已经为您的根域存储桶执行此操作,这些设置可以镜像到此子域存储桶上)
-
上传存储桶中的index.html文件
-
使用您的域提供商创建 CNAME 记录
【讨论】:
以上是关于如何为 s3 存储桶指定子域?的主要内容,如果未能解决你的问题,请参考以下文章
我们如何为 Amazon S3 存储桶中的文件夹设置 CORS
如何为多个 IAM 用户设置 S3 策略,以便每个人只能访问他们的个人存储桶文件夹?