AWS Amazon S3 存储桶配置自定义域名访问
Contents
在使用AWS S3存储桶时,当您将存储桶配置为静态网站时,先将AWS Amazon S3 存储桶设置开放外部访问。
然后在存储桶属性中,开启托管静态网站。
S3存储桶会默认分配访问桶资源对象的域名,域名格式:
- s3-website 短横线 (-) 区域 ‐ http://bucket-name.s3-website-Region.amazonaws.com
- s3-网站 点 (.) 区域 ‐ http://bucket-name.s3-website.Region.amazonaws.com
Amazon S3 网站端点不支持 HTTPS 或接入点。如果要使用 HTTPS,则可以使用 Amazon CloudFront 为 Amazon S3 上托管的静态网站提供服务。有关更多信息,请参阅如何使用 CloudFront 为我的 Amazon S3 存储桶提供 HTTPS 请求? 要使用自定义域的 HTTPS,请参阅使用注册到 Route 53 的自定义域配置静态网站。
此时上传资源到s3桶中,则可通过域名+资源路径来访问桶对象资源。
如果不想使用默认域名访问,想用自定义的域名访问S3怎么办?
使用自定义域名访问 AWS S3 有两种实现方式,一种是直接将域名和 S3 关联,另一种是使用 CloudFront。
托管静态网站-网站端点-域名和S3关联
创建一个和域名名称相同的存储桶,比如有一个域名:example-bucket.com,则创建一个名称为example-bucket.com的桶。
创建成功后,直接去域名托管商,比如:cloudflare,在DNS记录中配置CNAME类型记录,将域名指向桶默认分配的域名地址即可,示例如下:
添加 DNS 别名记录
如果您拥有已注册的域,则可以添加指向 Amazon S3 网站端点的 DNS CNAME 条目。例如,如果您注册了 www.example-bucket.com 域,则可以创建存储桶 www.example-bucket.com,并添加指向 www.example-bucket.com.s3-website.Region.amazonaws.com 的 DNS CNAME 记录。对 http://www.example-bucket.com 的所有请求都将路由到 www.example-bucket.com.s3-website.Region.amazonaws.com。
详情参见网站端点
在创建根域名访问后,如果想让子域名(www.example-bucket.com)也访问网站,可以创建一个子域名相同的桶,然后为子域存储桶(www.example.com)创建重定向请求。
为网站重定向配置子域存储桶
在为网站托管配置了根域存储桶后,可以将子域存储桶配置为将所有请求重定向到该域。在此示例中,对 www.example-bucket.com 的所有请求都重定向到 example-bucket.com。
配置重定向请求
- 在 Amazon S3 控制台上的 Buckets(存储桶)列表中,请选择您的子域存储桶名称(在本例中为 www.example-bucket.com)。
- 请选择属性。
- 在静态网站托管下,选择编辑。
- 请选择 Redirect requests for an object(重新导向对于对象的请求)。
- 在 Target bucket(目标存储桶)框中,输入您的根域(例如 example-bucket.com)。
- 对于 Protocol(协议),请选择 http。
- 选择保存更改。
使用CloudFront
在使用网站端点托管时,必须域名和桶名称相同,桶虽然可以重定向,但是如果是已有桶不方便进行迁移,
又或者就是不想泄露桶名称,这时就可以使用CloudFront来实现。
创建一个源为已创建的存储桶的CloudFront分配,创建成功后,会分配一个CloudFront.net子域名,
然后将您的DNS记录指向CloudFront即可。
创建 CloudFront 分配
使用 Amazon S3 源创建分配
- 通过 打开 CloudFront 控制台 https://console.aws.amazon.com/cloudfront/v4/home
- 选择 Create Distribution(创建分配)。
- 在 Create Distribution(创建分配)页面上的 Origin Settings(源设置)部分中,对于 Origin Domain Name(源域名),输入您的存储桶的 Amazon S3 网站端点,例如 example.com.s3-website.us-west-1.amazonaws.com。 CloudFront 将为您填写 Origin ID (源 ID)。
- 对于 Default Cache Behavior Settings (默认缓存行为设置),将值保留设置为默认值。
- 选择 Create Distribution。
- 要查看分配的状态,请在控制台中找到该分配,然后检查 Status 列。 InProgress (进行中) 状态表示分配尚未完成部署。 分配部署完毕后,您可以使用新的 CloudFront 域名来引用您的内容。
- 记录 CloudFront 控制台中显示的 Domain Name (域名) 值,例如 dj4p1rv6mvubz.cloudfront.net。
- 要验证您的 CloudFront 分配是否正常运行,请在 Web 浏览器中输入该分配的域名。
- 如果您的网站是可见的,则 CloudFront 分配正常工作。如果您的网站具有向 Amazon Route 53 注册的自定义域,您将需要 CloudFront 域名来在下一步更新记录集。
详情参见使用 Amazon CloudFront 为网站提速