尝试将别名目标从 Route 53 设置为 S3 时没有可用的目标

尝试将别名目标从 Route 53 设置为 S3 时没有可用的目标

我正在尝试建立一个简单的基于 Amazon AWS S3 的网站,如下所述这里

我已经设置了 S3 存储桶(simples3websitetest.com),并赋予了它(希望)正确的权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::simples3websitetest.com/*"
            ]
        }
    ]
}

我上传了 index.html,设置了网站访问,可以通过以下方式访问http://simples3websitetest.com.s3-website-us-west-2.amazonaws.com/index.html

到目前为止一切顺利,现在我想设置 Amazon Route53 访问,但我遇到了困难。

我已经在我拥有的域(resourcesbox.net)上设置了一个托管区域,然后单击“创建记录集”,然后进入“设置别名”步骤,但是当我尝试设置别名目标时,S3 网站端点下出现“没有可用目标”。

我错过了什么??

答案1

您创建的 A 记录别名必须与存储桶的名称相同,因为 S3 中存储桶的虚拟托管要求Host:浏览器发送的标头与存储桶名称匹配。实际上没有其他可行的方法可以实现存储桶的虚拟托管...存储桶必须通过某种机制来识别,而这种机制就是 http 标头。

为了在“example.com”域内创建存储桶的别名,存储桶名称还必须是您可以在该域内合法声明的主机名……例如,Route 53 A 记录“testbucket.example.com”可以仅有的将其别名为“testbucket.example.com”的存储桶...并且没有其他存储桶。

在您的问题中,您打破了这个限制......但您只能在“simples3websitetest.com”域内(和顶点)为名为“simples3websitetest.com”的存储桶创建一个别名。

这是设计使然,并非 Route 53 或 S3 的局限性。它们只是阻止您做一些不可能成功的事情。Web 服务器不知道任何别名或 CNAME 或 DNS 中所做的任何其他操作 - 它们只接收浏览器认为它正在尝试连接的原始主机名,在浏览器发送的 http 标头中...并且 S3 使用此信息来识别虚拟托管请求适用的存储桶的名称。

Amazon S3 要求您为存储桶指定与域名相同的名称。这样,当用户从您的网站请求内容时,Amazon S3 才能正确解析 Web 浏览器发送的主机标头。因此,我们建议您在支付注册域名费用之前,在 Amazon S3 中为您的网站创建存储桶。

http://docs.aws.amazon.com/gettingstarted/latest/swh/getting-started-create-bucket.html#bucket-requirements

但请注意,此限制仅当您未在存储桶前使用 CloudFront 时才适用。

使用 CloudFront,灵活性更高,因为Host:在请求传递到 S3 之前,可以重写标头(由 CloudFront 本身重写)。您可以在 CloudFront 分发中配置“原始主机”,其中your-bucket.s3-website-xx-yyyy-n.amazonaws.comxx-yyyy-n 是创建存储桶的 S3 AWS 区域。此端点显示在每个存储桶的 S3 控制台中。

答案2

假设您有一个托管区域 abc.com。并且您创建了一个存储桶 abc.com(它不会显示在路由别名列表中)——您可能认为是名称后面的 .——您不能用它来命名存储桶

也试试这个。因为我第一次用正确的名称创建存储桶时仍然没有成功。相信我,我有强迫症,所以我没有漏掉一个句号或逗号。

  1. 创建另一个同名的托管区域 abc.com
  2. 现在您将看到 2 个相同的托管区域 (abc.com. 和 abc.com.)
  3. 删除新的
  4. 返回旧托管区域 abc.com
  5. 您可能能够看到 s3 端点出现 - 这可能是 Route53 中的一个问题

这对我很有用,我尝试了几乎所有的方法 - 我看到的一些建议是注销并登录以清除某种缓存 - 不确定

相关内容