beb*_*bbi 4 aws-cloudformation amazon-route53 serverless aws-serverless
我在如何将 route53 dns 记录与 serverless.yml 文件中的 S3 存储桶相关联上找到了这个。
我已经尝试将其调整到部署 Cloudfront 分发版的情况
DnsRecord:
Type: "AWS::Route53::RecordSet"
Properties:
AliasTarget:
DNSName: <cloudfrontdistribution id>
HostedZoneId: Z21DNDUVLTQW6Q
HostedZoneName: ${self:custom.appFQDN}.
Name:
Ref: WebAppCloudFrontDistribution
Type: 'CNAME'
Run Code Online (Sandbox Code Playgroud)
但我正在努力解决如何将分发 ID 作为参考而不是固定字符串获取。
我该怎么做?
要设置 AliasTarget,您实际上只需要为 DNSName 参数提供 CloudFront DNS 名称,而不是分配 ID。你可以这样做:
!GetAtt WebAppCloudFrontDistribution.DomainName
Run Code Online (Sandbox Code Playgroud)
我假设 WebAppCloudFrontDistribution 是模板中 AWS::CloudFront::Distribution 资源的逻辑 ID,而不是参数。如果这实际上是一个参数,只需将该参数的值设置为 CloudFront 的 AWS 控制台仪表板中为分配列出的 DNS 名称。
您还需要在模板中修复其他一些问题:
最后,请注意,为了使其正常工作,您还需要确保添加 FQDN 作为 CloudFront 分配资源的备用名称 - 您可以使用“DistributionConfig”属性的“别名”属性进行设置。分配资源,或者如果您不在此模板中创建资源,则通过在 AWS 控制台中为分配设置手动配置此资源。
我努力AWS::Route53::RecordSet使用 CloudFormation创建一个不特定的、无用的错误消息,类型为“资源无法创建”。我的关键是使用HostedZoneId而不是HostedZoneName指定父“托管区域”。这就是我最终的结果:
NaaaaaComDNSEntry:
Type: 'AWS::Route53::RecordSet'
DependsOn: NaaaaaComCloudFront
Properties:
AliasTarget:
DNSName: !GetAtt NaaaaaComCloudFront.DomainName
# For CloudFront, HostedZoneId is always Z2FDTNDATAQYW2, see:
# https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-aliastarget.html#cfn-route53-aliastarget-hostedzoneid
HostedZoneId: Z2FDTNDATAQYW2
# HostedZoneId is for ID for 'naaaaa.com.'; In theory its valid to use `HostedZoneName` OR `HostedZoneId`
# but in practice the recordset always failed to create if I used `HostedZoneName`
HostedZoneId: ZABCDEFGHIJK5M
Name: 'www.naaaaa.com.'
Type: 'A'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2838 次 |
| 最近记录: |