尝试从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访问

到目前为止这么好,现在我想设置亚马逊Route53访问,这是我卡住的地方。

我已经在自己的域名(resourcesbox.net)上设置了一个托pipe区域,然后点击“创buildlogging集合”,进入“设置别名”步骤,但是我在S3网站端点下获得“无目标可用”尝试设置别名目标。

我错过了什么??

    您创build的Alogging别名必须与存储桶的名称相同,因为在S3中虚拟托pipe存储桶要求浏览器发送的Host:标头与存储桶名称匹配。 有没有真正的另一种实际的方式可以完成桶的虚拟托pipe…桶必须通过某种机制来识别,并且该机制是http头。

    为了在“example.com”域内创build一个别名到bucket,这个bucket名称也必须是一个你可以在该域内合法声明的主机名… Route 53 A-Record“testbucket.example .com“,例如, 只能被称为”testbucket.example.com“的存储桶…而没有其他存储桶。

    在你的问题中,你打破了这个约束……但是你只能在“simples3websitetest.com”域的内部(和顶点)创build一个名为“simples3websitetest.com”的桶的别名。

    这是在devise上,而不是53号公路和S3的限制。 他们只是阻止你做一些不可能工作的东西。 Web服务器不知道任何别名或CNAMEs或在DNS中完成的其他任何事情 – 它们只接收浏览器认为它正尝试连接的原始主机名,在浏览器发送的http头中…而S3使用此信息来标识虚拟主机请求适用的存储桶的名称。

    Amazon S3要求您为您的存储桶命名与您的域相同的名称。 这样,当用户从您的网站请求内容时,Amazon S3可以正确parsing由Web浏览器发送的主机头。 因此,我们build议您在付费注册域名之前,在Amazon S3中为您的网站创build存储桶。

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

    但请注意,此限制仅适用于您未在存储桶前使用CloudFront的情况。

    使用CloudFront可以提供更多的灵活性,因为在将请求传递到S3之前, Host:头可以被重写(通过CloudFront本身)。 您将CloudFront分配中的“原始主机”configuration为your-bucket.s3-website-xx-yyyy-n.amazonaws.com ,其中xx-yyyy-n是创build存储分区的S3的AWS区域。 这个端点显示在每个桶的S3控制台中。