使用Amazon Route 53为S3桶设置CNAME记录

8
3个回答

23

S3 CNAME需要将存储桶名称与主机名匹配。 如果您想让S3从imgs.langpai.me提供服务,则需要创建一个名为imgs.langpai.me的存储桶。 有关更多信息,请参见S3文档

您可以创建一个CloudFront分配以响应imgs.langpai.me(请参见 CloudFront CNAME支持 ),并将请求转发到langpai.s3.amazonaws.com。 当然,这也会产生CloudFront的费用。


6

方法一:使用存储桶名称创建S3直接CNAME

按照以下步骤可以通过存储桶名称创建CNAME记录。

  1. 使用与DNS条目相同的名称创建存储桶名称。例如:subdomain.mydomain.net

  2. subdomain.mydomain.net创建一个CNAME记录,指向s3.amazonaws.com

  3. 根据您计划授予的访问权限设置存储桶的权限

方法二:在S3上创建静态网站

如果您正在提供静态内容(如图像、文件等),则可以使用“静态网站托管”为您的S3存储桶

通过单击存储桶图标(enter image description here)选择您的存储桶,然后在右侧选择“属性”选项卡并展开“静态网站托管”。在静态网站托管面板中,选择“启用网站托管”单选按钮,并设置索引和错误文档。此时,在此面板中会看到一个“终端节点”名称。只需创建一个DNS CNAME记录,将其值设置为终端节点即可。您可以在此处阅读整个Amazon Walkthrough

enter image description here


嗨@Vyke,我能把我的子域名“download.abc.com”指向一个名为download.abc.com的存储桶吗?我还没有开启静态网站托管,因为它只是用于下载可执行文件。为此创建CName记录不起作用-这是否意味着我必须将其配置为静态网站才能使其工作-有什么想法吗?您在方法-1上的答案说我需要将其指向s3.amazonaws.com-如果还有其他存储桶,它会起作用吗? - Jaya
1
似乎仅仅在启用静态网站后,向S3存储桶的终端添加CNAME并不能起作用。结果是:NoSuchBucket。 看起来willglynn所说的需要与CNAME记录相同的存储桶名称是正确的。 - Maksim Luzik

1
尝试一下
使用自己的存储桶 CNAME:
echo S3::getAuthenticatedURL("s3bucket.mydomain.com", $uri, 3600, true);

但是你将文件检查为每个人的读取权限

S3::ACL_PUBLIC_READ

$s3->putObjectFile($tmp, $bucketname , $path.$filename, S3::ACL_PUBLIC_READ)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接