如何使用自己的域名访问 Amazon 的 S3 资源文件? 今天尝试了半天,终于成功,特此记录一下。
本文假设你的域名为 your-domain.com,你的图片是放到了S3上并计划使用 image.your-domain.com 来访问你的图片资源。
具体步骤如下:
(1)在 S3 中创建桶(Bucket),我之前使用S3的时候都是随便创建的 Bucket 名字,如果要使用自己的域名访问 S3 的话,桶的名称一定要与你的域名匹配上,因此这里的桶名字为:image.your-domain.com,至于在桶里面是否创建目录随你,并不影响域名的访问。
(2)在 your-domain.com 的域名注册机构或者自己的 DNS 上解析 image 域名,增加 CNAME 记录,使 image.your-domain.com 指向(CNAME)到 image.your-domain.com.s3.amazonaws.com.
(3)上传图片文件到S3的 bucket 中,如上传图片img.png,并设置允许 public 访问。当DNS的TTL生效后,就已经可以使用URL访问到图片文件了,访问地址为:http://image.your-domain.com/img.png。
不过目前的测试结果显示 Amazon 会把访问 image.your-domain.com 的http请求URL rewrite 到 image.your-domain.com.s3.amazonaws.com上,我对这点表示很费解。
最最最最值得注意的是,给桶起名字的时候一定要小心,千千万万要小心,我就是因为把桶名为 www.sudops.com 创建到了错误的 Region 上,当发现错误时想要更正,于是删除了S3上的 www.sudops.com 桶,并计划在正确的 Region 上重新创建同样名字的桶的时候,Amazon 会告诉你:“A conflicting conditional operation is currently in progress against this resource. Please try again.”
关于这一点Amazon官方给出的解释为:
I strongly recommend against deleting a bucket that you want to keep. There’s never any guarantee that you will be able to create a new bucket with the same bucket name.
仍在郁闷无比中,苦苦在网上寻找解决办法。有的说需要等到8-10小时,Amazon 各个 Region 的cache全部过期后就可以了,有的说换一个域名/桶名(难道这也叫解决方法?),有的说可以联系 Amazon 技术支持,或许能够帮助你解决。看来只能明天再试一下运气了,如果还不行,将果断跟 Amazon 联系。
Pingback: 阿里云OSS上使用自己的域名 | 运维·速度