早上好,
我使用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。还需要为子域配置它吗?
谢谢
答案 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可以缓存其内容。
现在,由于无法重命名存储桶,因此您需要复制所有对象。使用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)