how appoint a subdomain for a s3 bucket?

不羁的心 提交于 2019-11-28 19:22:45

You need to rename your bucket to match the custom domain name (e.g. imagens.mydomain.com.br) and set up that domain as a CNAME to

<bucket-name>.s3.amazonaws.com.

(in your case imagens.mydomain.com.br.s3.amazonaws.com.

The full instructions are available here:

http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html

I'm going to build on the other answers here for completeness.

I have moved my bucket to a subdomain so that the contents can be cached by Cloudflare.

  • Old S3 Bucket Name: autoauctions
  • New S3 Bucket Name: img.autoauctions.io
  • CNAME record: img.autoauctions.io.s3.amazonaws.com

Now you'll need to copy all of your objects since you cannot rename a bucket. Here's how to do that with AWS CLI:

pip install awscli
aws configure

Now you'll copy your old bucket contents to your new bucket.

aws s3 sync s3://autoauctions s3://img.autoauctions.io

I found this to be too slow for the 1TB of images I needed to copy, so I increased the number of concurrent connections and re-ran from an EC2 instance.

aws configure set default.s3.max_concurrent_requests 400

Sync it up!


Want to make folders within your bucket public? Create a bucket policy like this:

{
    "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/*"
        }
    ]
}

And now the image loads from img.autoauctions.io via Cloudflare's cache.

Hope this helps some people!

Update 2019 : AWS SUBDOMAIN hosting in S3

As of today following steps worked to have a successfully working subdomain for AWS S3 hosted static website:

  1. Create a bucket with subdomain name. In this example www.subtest.mysite.com

Note: Make sure on 'Permission' tab of bucket:

1.Block public access (bucket settings) 2.Access Control List & 3.Bucket policy are appropriately set to make sure bucket is public. ( Assuming you already did this for your root domain bucket, those settings can be mirrored on this subdomain bucket)

  1. Upload the index.html file in the bucket

  1. Create a CNAME record with your domain provider

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!