如何在 cloudformation yaml 中配置路由规则?
Posted
技术标签:
【中文标题】如何在 cloudformation yaml 中配置路由规则?【英文标题】:How do I configure the routing rules in a cloudformation yaml? 【发布时间】:2017-08-14 16:51:27 【问题描述】:我正在尝试使用使用 cloudformation 的无服务器 yaml 为我的静态 s3 存储桶网站配置此网站路由规则。
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals/>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<Protocol>https</Protocol>
<HostName>foo.amazonaws.com</HostName>
<ReplaceKeyPrefixWith>prod/photos/resize?key=</ReplaceKeyPrefixWith>
<HttpRedirectCode>307</HttpRedirectCode>
</Redirect>
</RoutingRule>
</RoutingRules>
如何将其翻译成下面的 yaml?
resources:
Resources:
UploadBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: $file(./serverless.env.yml):$opt:stage.BucketName
AccessControl: PublicRead
WebsiteConfiguration:
IndexDocument: index.html
RoutingRule: //What's the format that goes here?
【问题讨论】:
【参考方案1】:RoutingRules
是Amazon S3 Website Configuration Routing Rules Property 的列表。
例如
RoutingRules:
- RedirectRule:
HostName: foo.amazonaws.com
HttpRedirectCode: "307"
Protocol: https
ReplaceKeyPrefixWith: prod/photos/resize?key=
RoutingRuleCondition:
HttpErrorCodeReturnedEquals: "404"
【讨论】:
应该像 HostName 这样的值在“引号”中,例如“foo.amazonaws.com”而不仅仅是纯文本? 您不是必需的。这个答案更好地解释了它:: ***.com/questions/19109912/…【参考方案2】:如果有人感兴趣,这里是相同设置的 JSON 表示
"WebsiteConfiguration" :
"IndexDocument": "index.html",
"ErrorDocument": "error.html",
"RoutingRules": [
"RedirectRule":
"HostName":
"foo.amazonaws.com"
,
"HttpRedirectCode": "307",
"ReplaceKeyPrefixWith": "prod/photos/resize?key="
,
"RoutingRuleCondition":
"HttpErrorCodeReturnedEquals": "404"
]
【讨论】:
以上是关于如何在 cloudformation yaml 中配置路由规则?的主要内容,如果未能解决你的问题,请参考以下文章
如何调试cloudformation模板?策略中的语法错误。 YAML 文件
如何在 AWS CloudFormation YAML 模板中转义策略变量
AWS Cloudformation-如何在 json/yaml 模板中处理字符串大写或小写
如何使用 cloudformation 或 yaml 将保留天数设置为日志流