Cloudformation 模板:Cloudfront 域名 WebsiteURL returns 错误
Cloudformation template: Cloudfront DomainName WebsiteURL returns Error
我已经为 S3 静态站点部署创建了一个 Cloudformation 模板。
在云端部分必须指定域名。首先我创建了这样的模板并尝试了一下:
...
"DomainName": {
"Fn::GetAtt": [
"S3BucketRoot",
"DomainName"
]
},
...
所以到目前为止一切都正确。只有一个 Origin 域没有被正确使用。返回的是 Amazon S3 bucket
原始域名,而不是 Amazon S3 bucket configured as a website
。这导致对域的请求无法正确加载。
然后我在cloudfront中手动输入了Amazon S3 bucket configured as a website
源域名。
正常工作后,我想在模板中更改它,所以我调整了它:
...
"DomainName": {
"Fn::GetAtt": [
"S3BucketRoot",
"WebsiteURL"
]
},
...
更新堆栈时,我现在收到域名中不能有冒号的错误。这来自 http://...
所以我现在的问题是,如何才能获得正确的域名或如何从 WebsiteURL 中删除 http://
?
我的 S3 配置如下所示:
"S3BucketRoot": {
"Type": "AWS::S3::Bucket",
"DeletionPolicy": "Delete",
"Properties": {
"AccessControl": "PublicRead",
"BucketName": {
"Fn::Sub": "${AWS::StackName}-root"
},
"WebsiteConfiguration": {
"ErrorDocument": "404.html",
"IndexDocument": "index.html"
}
}
},
我用一点技巧解决了它
...
"DomainName": {
"Fn::Select": [
"1",
{
"Fn::Split": [
"http://",
{
"Fn::GetAtt": [
"S3BucketRoot",
"WebsiteURL"
]
}
]
}
]
},
...
如果有人找到更好的方法,请告诉我。现在,这有效。
不要搞得太复杂
!Sub ${S3BucketRoot}.s3-website-${AWS::Region}.amazonaws.com
我已经为 S3 静态站点部署创建了一个 Cloudformation 模板。
在云端部分必须指定域名。首先我创建了这样的模板并尝试了一下:
...
"DomainName": {
"Fn::GetAtt": [
"S3BucketRoot",
"DomainName"
]
},
...
所以到目前为止一切都正确。只有一个 Origin 域没有被正确使用。返回的是 Amazon S3 bucket
原始域名,而不是 Amazon S3 bucket configured as a website
。这导致对域的请求无法正确加载。
然后我在cloudfront中手动输入了Amazon S3 bucket configured as a website
源域名。
正常工作后,我想在模板中更改它,所以我调整了它:
...
"DomainName": {
"Fn::GetAtt": [
"S3BucketRoot",
"WebsiteURL"
]
},
...
更新堆栈时,我现在收到域名中不能有冒号的错误。这来自 http://...
所以我现在的问题是,如何才能获得正确的域名或如何从 WebsiteURL 中删除 http://
?
我的 S3 配置如下所示:
"S3BucketRoot": {
"Type": "AWS::S3::Bucket",
"DeletionPolicy": "Delete",
"Properties": {
"AccessControl": "PublicRead",
"BucketName": {
"Fn::Sub": "${AWS::StackName}-root"
},
"WebsiteConfiguration": {
"ErrorDocument": "404.html",
"IndexDocument": "index.html"
}
}
},
我用一点技巧解决了它
...
"DomainName": {
"Fn::Select": [
"1",
{
"Fn::Split": [
"http://",
{
"Fn::GetAtt": [
"S3BucketRoot",
"WebsiteURL"
]
}
]
}
]
},
...
如果有人找到更好的方法,请告诉我。现在,这有效。
不要搞得太复杂
!Sub ${S3BucketRoot}.s3-website-${AWS::Region}.amazonaws.com