如何为s3存储桶指定子域?

时间:2013-09-12 13:40:00

标签: amazon-web-services nginx amazon-s3 amazon-ec2 amazon-route53

早上好,

我使用amazon s3 bucket作为图像服务器。 我想使用我的网站的子域名,如何解决这个问题。 例如:图片现在位于:https://s3-sa-east-1.amazonaws.com/nomeBucket/pasta/imag.png,我通过同一链接访问它。

就是这样:imagens.mydomain.com.br / folder / imag.png 有什么方法可以做到这一点吗?为存储桶指定子域地址? 我尝试过亚马逊路线53,作为CNAME。我试过这个:https://s3-sa-east-1.amazonaws.com/nomeBucket/

我昨天参加了测试,但显然它没有用。 有人已经做了类似的事情,和/或知道如何帮助我?

注意:我正在使用nginx。还需要为子域配置它吗?

谢谢

3 个答案:

答案 0 :(得分:33)

您需要重命名您的存储分区以匹配自定义域名(例如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

答案 1 :(得分:0)

为了完整性,我将在此处基于其他答案。

我已将存储桶移至子域,以便Cloudflare可以缓存其内容。

  • 旧S3存储桶名称:自动拍卖
  • 新S3存储桶名称: img.autoauctions.io
  • CNAME记录: img.autoauctions.io.s3.amazonaws.com

现在,由于无法重命名存储桶,因此您需要复制所有对象。使用AWS CLI的方法如下:

pip install awscli
aws configure

现在,您将旧存储桶中的内容复制到新存储桶中。

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加载。

希望这对某些人有帮助!

答案 2 :(得分:0)

更新2019:在S3中托管AWS SUBDOMAIN

从今天开始,以下步骤一直在努力使AWS S3托管的静态网站的子域成功运行:

  1. 使用子域名创建存储分区。在此示例中,www。 subtest .mysite.com

aws bucket

注意:请确保在存储桶的“权限”标签上:

1。阻止公共访问(存储桶设置) 2.访问控制列表和 3,桶装政策 进行适当设置以确保存储桶是公共的。 (假设您已经为根域存储桶执行了此操作,那么这些设置可以镜像到该子域存储桶上)

S3 bucket permissions

  1. 在存储桶中上传 index.html 文件

index aws bucket

    与您的域名提供商
  1. 创建 CNAME记录 CNAME record in namecheap