如何为 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 存储桶指定子域?的主要内容,如果未能解决你的问题,请参考以下文章

如何为“无服务器”部署创建一个 s3 存储桶?

如何为 Amazon S3 存储桶配置 SSL

我们如何为 Amazon S3 存储桶中的文件夹设置 CORS

如何为多个 IAM 用户设置 S3 策略,以便每个人只能访问他们的个人存储桶文件夹?

静态网站托管中子域的 AWS S3 存储桶重定向与 DNS CNAME

如何为 spectrify python 包指定 s3 配置?