CloudFront 不能使用 S3 网站来源,只能使用 REST 来源 Cloudformation

Posted

技术标签:

【中文标题】CloudFront 不能使用 S3 网站来源,只能使用 REST 来源 Cloudformation【英文标题】:CloudFront can't use S3 Website origin, only REST origin Cloudformation 【发布时间】:2017-08-08 01:43:24 【问题描述】:

我正在尝试使用 S3 源自动启动 CloudFront 分配。我想将来源设置为 S3 网站 URL,例如mysite.com.s3-website-us-east-1.amazonaws.com。所以,我认为我的 Cloudformation 模板应该是这样的:


"AWSTemplateFormatVersion" : "2010-09-09",
"Resources" : 
    "myDistribution" : 
        "Type" : "AWS::CloudFront::Distribution",
        "Properties" : 
            "DistributionConfig" : 
                "Origins" : [ 
                    "DomainName" : "mysite.com.s3-website-us-east-1.amazonaws.com",
                    "Id" : "myS3Origin",
...

但是,这会产生以下错误:

参数 Origin DomainName 未引用有效的 S3 存储桶。

这是真的,所以我可以指定 S3 存储桶。但我希望我的来源是网站端点。我的非自动化解决方法是使用 S3 REST 端点进行部署,然后在 UI 中更新源。


"AWSTemplateFormatVersion" : "2010-09-09",
"Resources" : 
    "myDistribution" : 
        "Type" : "AWS::CloudFront::Distribution",
        "Properties" : 
            "DistributionConfig" : 
                "Origins" : [ 
                    "DomainName" : "mysite.com.s3.amazonaws.com",
                    "Id" : "myS3Origin",
...

根据文档:

Amazon Simple Storage Service (S3) 存储桶的 DNS 名称或您希望 CloudFront 从中获取此源的对象的 HTTP 服务器。

我找不到有关网站端点来源的任何信息。 http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-origin.html#cfn-cloudfront-origin-originpath

【问题讨论】:

【参考方案1】:

我认为您并未包含配置的所有相关部分。

这里的问题是,作为 S3 网站托管端点的源不是 S3 源——它是一个自定义源

存储桶的 REST 端点以外的任何内容始终是自定义来源。

【讨论】:

谢谢!这使我得到了最终的答案,对格式感到抱歉;你值得称赞。 “资源”:“CloudFrontDistribution”:“类型”:“AWS::CloudFront::Distribution”,“DependsOn”:“S3RedirectBucket”,“属性”:“DistributionConfig”:“起源”:[“域名” “:“mysite.s3-website-us-east-1.amazonaws.com”,“Id”:“MyWebsiteOrigin”,“CustomOriginConfig”:“HTTPPort”:80,“HTTPSPort”:443,“OriginProtocolPolicy”:“ http"

以上是关于CloudFront 不能使用 S3 网站来源,只能使用 REST 来源 Cloudformation的主要内容,如果未能解决你的问题,请参考以下文章

没有 S3 的 Cloudfront

AWS S3+Cloudfront 静态网站子目录不起作用

通过 S3 从 Amazon CloudFront 提供 gzip 后的 CSS 和 JavaScript

在 CloudFront/S3 中托管 Angular 应用程序 *无需* S3 静态网站托管

使用 S3/CloudFront 将 www 重定向到非 www,无需单独的存储桶

使用 S3、CloudFront 和源路径的静态网站托管的子文件夹重定向问题