我想在amazon.com上使用子域而不是直接url到我的s3桶。因此,我不想通过http://bucket-images.s3-eu-west-1.amazonaws.com/path/to/image.png
这样的网址下载图片,而是使用http://assets.domain.com/path/to/image.png
。我尝试像这样设置一个CNAME:
CNAME assets domain.com bucket-images.s3-eu-west-1.amazonaws.com
但在设置此CNAME后,当我访问域名时,我从亚马逊收到此类错误:
<Error>
<Code>NoSuchBucket</Code>
<Message>The specified bucket does not exist</Message>
<BucketName>assets.domain.com</BucketName>
<RequestId>45646DFSDFSFASDF</RequestId>
<HostId>
dfasdcvcvd546456454ds5fasdf4ad5f64asdfasdfccdfgvggtg
</HostId>
</Error>
在这里,他们会告诉他们更改广告名称:https://forums.aws.amazon.com/message.jspa?messageID=237562 但这没有意义。我之前曾参与过一个项目,他使用了一个与子域完全不同的桶名。所以必须有办法...任何可以帮助我的人?
答案 0 :(得分:19)
对于S3,您需要匹配CNAME和存储桶名称:
存储桶名称必须与CNAME相同。因此,如果创建CNAME以将images.johnsmith.net映射到images.johnsmith.net.s3.amazonaws.com,那么http://images.johnsmith.net/filename将与http://images.johnsmith.net.s3.amazonaws.com/filename相同
因此,在您的具体示例中,您需要命名存储桶assets.domain.com
。
http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingCustomURLs
如果您需要更多灵活性,可以为S3存储桶创建CloudFront分配,并为您的CloudFront分配分配CNAME。
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html
答案 1 :(得分:0)
@Samuel Neff的信息:
请记住将您的AWS S3存储桶命名为与Cloudflare CNAME记录相同的名称。否则它将无法工作。
我在这里尝试并为我工作:
转换 https://s3-eu-west-2.amazonaws.com/cdn.domain.com 至 http://cdn.domain.com