如何在 AWS CloudFormation 中编写基于延迟的 Route 53 别名记录集资源

问题描述

根据此 AWS 文档 this AWS document,我可以创建别名为应用程序负载均衡器的基于延迟的资源记录,但在我可以定义延迟的语法中没有看到路由策略选项。

以下是我在 Route 53 控制台中来自同一应用程序的两个不同区域的示例记录集。由于它是别名记录,我的理解是我不需要使用健康检查配置。我可以改为启用评估目标健康

对于 us-east-1:

  • 记录名称 mywebsite.example.com
  • 记录类型: A
  • 别名:
  • 将流量路由到: 应用程序和 Classic Load Balancer 的别名
    美国东部(东弗吉尼亚州)[us-east-1]
    dualstack.internal-mywebsite-alb-1234567890.us-east-1.elb.amazonaws.com。
  • 路由政策:延迟
  • 区域:美国东部(东弗吉尼亚)
  • 健康检查:可选(无)
  • 评估目标健康状况:
  • 记录 ID: us-east-1-mywebsite-alb

对于 us-west-2:

  • 记录名称 mywebsite.example.com
  • 记录类型: A
  • 别名:
  • 将流量路由到: 应用程序和 Classic Load Balancer 的别名
    美国西部(俄勒冈)[us-west-2]
    dualstack.internal-mywebsite-alb-1234567890.us-west-2.elb.amazonaws.com。
  • 路由政策:延迟
  • 区域:美国西部(俄勒冈)
  • 健康检查:可选(无)
  • 评估目标健康状况:
  • 记录 ID: us-west-2-mywebsite-alb

如何将它们转换为 CloudFormation 资源?资源的完整片段将非常有用。

更新:

我尝试了以下但没有奏效:

Resources:
  TestDevALB:
    Type: AWS::ElasticLoadBalancingV2::LoadBalancer
    Properties:
      Type: application
      Scheme: internal
      # LoadBalancerAttributes:
      subnets:
        - subnet-1111abcd2222abcde
        - subnet-2222abcd3333abcde
      SecurityGroups:
        - sg-1111abcd2222abcde

AlbDnsRecordSet:
  Type: AWS::Route53::RecordSet
  Properties:
    HostedZoneId: ABCD1234EFGH5678IJKL
    Name: testdev.example.com
    Type: A
    AliasTarget:
      HostedZoneId: !GetAtt 'TestDevALB.CanonicalHostedZoneID'
      DNSName: !GetAtt 'TestDevALB.DNSName'
    Region: us-west-2

我收到错误An error occurred (ValidationError) when calling the CreateStack operation: Invalid template property or properties [AlbDnsRecordSet]

更新 2: 上述错误是由于缩进。我也添加了目标健康检查。以下工作。谢谢@marcin。

Resources:
  TestDevALB:
    Type: AWS::ElasticLoadBalancingV2::LoadBalancer
    Properties:
      Type: application
      Scheme: internal
      # LoadBalancerAttributes:
      subnets:
        - subnet-1111abcd2222abcde
        - subnet-2222abcd3333abcde
      SecurityGroups:
        - sg-1111abcd2222abcde

  AlbDnsRecordSet:
    Type: AWS::Route53::RecordSet
    Properties:
      HostedZoneId: ABCD1234EFGH5678IJKL
      Name: testdev.example.com
      Type: A
      AliasTarget:
        HostedZoneId: !GetAtt 'TestDevALB.CanonicalHostedZoneID'
        DNSName: !GetAtt 'TestDevALB.DNSName'
        EvaluateTargetHealth: true
      Region: us-west-2
      SetIdentifier: TestDev-uswest2

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)