AWS Route 53 - Elastic Beanstalk EC2 和 S3 都在同一个域下?

Posted

技术标签:

【中文标题】AWS Route 53 - Elastic Beanstalk EC2 和 S3 都在同一个域下?【英文标题】:AWS Route 53 - Elastic Beanstalk EC2 and S3 all under the same domain? 【发布时间】:2014-01-22 12:58:55 【问题描述】:

我的 Route 53 设置如下

company.com A [EB 负载均衡器]

www.company.com A [S3 存储桶]

S3 设置 将所有请求重定向到另一个主机名:company.com

我知道我只是不理解某些东西,但我无法让所有 S3 链接都通过 company.com 而不是 company.com.s3-website-us-west-2.amazonaws.com

【问题讨论】:

答案将取决于这个问题:您在 S3 中存储了什么以及它与“company.com”网站的关系或使用方式...大概由弹性豆茎应用程序?到目前为止,根据现有问题,无法猜测您要完成的工作。 “让所有 S3 链接都通过 company.com”是什么意思? 都是同一个 AWS 账户,我将文件存储在 S3 中(所有网页都存储在 EC2 服务器上),所以只是来自 Django 的媒体文件(图像和视频)在一个名为公司.com。所有这些都由 beanstalk 创建的 EC2 实例访问。 我必须使用 CloudFront 来完成此任务吗?最终,所有这些都将通过 HTTPS/SSL 实现。 您应该考虑使用云端,它还有助于加快您的内容分发速度,从而使您的网站更具响应性 【参考方案1】:

如果您的目标是从 S3 存储桶中服务器资产(图像、JS、css 等),但使用自定义 DNS 主机名,您可以执行以下操作:

创建与您的预期主机名匹配的 S3 存储桶:assets.mycompany.com 在 Route 53 中为 assets.mycompany.com 设置 DNS CNAME 记录 => assets.mycompany.com.s3.amazonaws.com

这将允许您加载像http;//assets.mycompany.com/foo.jpg 这样的文件

可以在此处找到以这种方式使用 S3 的完整文档:http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html

如果您需要从 Apex 又名“裸”域 (mycompany.com) 提供 S3/CloudFront 内容,您可以在指向您的 S3 存储桶或 CloudFront 主机的 Route 53 中配置 ALIAS 记录。

http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingAliasRRSets.html

【讨论】:

那么没有子域就没有办法了吗? 不幸的是,DNS 不允许像“mycompany.com”这样的***或“裸”域提供 CNAME。它必须是A记录。这可以防止使用 CNAME 为裸域上的 S3 内容设置别名。 CloudFront 能否弥补原生 DNS 支持的差距? 谢谢你,回答了我的问题。

以上是关于AWS Route 53 - Elastic Beanstalk EC2 和 S3 都在同一个域下?的主要内容,如果未能解决你的问题,请参考以下文章

如何将域指向路径或路由? AWS Elastic BeanStalk 和 Route 53

为啥 AWS Route 53 主机重定向到 Elastic Beanstalk 服务器?

AWS Route 53 + Elastic Beanstalk + 证书管理器:通配符 (*) 不起作用

AWS Route 53 - Elastic Beanstalk EC2 和 S3 都在同一个域下?

为 Django 堆栈设置 Route 53->CloudFront->Elastic Beanstalk 基础设施

AWS Elastic Beanstalk HTTPS