amazon-web-services - Cloudformation 模板:Cloudfront DomainName WebsiteURL 返回错误
问题描述
我为 S3 静态站点部署创建了 Cloudformation 模板。
在云端部分,必须指定域名。首先,我创建了这样的模板并进行了尝试:
...
"DomainName": {
"Fn::GetAtt": [
"S3BucketRoot",
"DomainName"
]
},
...
所以到目前为止一切都正确。只有一个 Origin 域未正确获取。返回的Amazon S3 bucket
是 Origin 域名,而不是Amazon S3 bucket configured as a website
. 这导致对域的请求无法正确加载。
然后我在 cloudfront 中手动输入了Amazon S3 bucket configured as a website
Origin 域名。在此工作正常之后,我想在模板中更改它,因此我对其进行了调整:
...
"DomainName": {
"Fn::GetAtt": [
"S3BucketRoot",
"WebsiteURL"
]
},
...
更新堆栈时,我现在收到域名中不能有冒号的错误。这来自于http://...
所以我现在的问题是,我怎样才能获得正确的域名或如何http://
从网站 URL 中删除?
我的 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"
]
}
]
}
]
},
...
如果有人找到更好的方法,请告诉我。目前,这行得通。
推荐阅读
- android - 如何创建新的 Fabric crashlytics Instant 应用程序?
- python - 从 Linux 上的 Web 服务器在 Windows 上运行任务的最佳方式
- python - 如何使用多个计数来制作字典
- javascript - 如何在 mxGraph 中通过 mouseEvent 更改单元格样式使用 Obect(cell)?
- microsoft-graph-api - 替换操作会破坏表格 OneNote 中的图像(图形 API)
- reactjs - 如何使用来自 Antd Design 的 Link to with Tabs 组件 React
- java - Spring Batch - 初始运行后处理器未运行
- codeigniter - Codeigniter,创建目录
- javascript - Javascript - 在引号和直接写入属性名称有什么区别吗?
- detekt - detekt NoUnusedImports 未报告