AWS CDK:如何在同一托管区域中创建记录的别名?

AWS CDK: How can I create an alias of a record in the same hosted zone?

我正在尝试在我的托管区域中为非 www 创建别名以指向 www 记录。

在控制台中,我只是创建了一条 A 记录,将其设置为别名,然后选择 Alias to another record in this hosted zone,但我在 CDK 中看不到执行此操作的方法。

这将不起作用,因为它不是 IP 地址:

    // Add non-www alias for domain
    const _nonWwwARecord = new ARecord(this, 'non-www-to-www', {
      zone: _prodHostedZone,
      target: RecordTarget.fromValues(`www.${DOMAIN}`),
      ttl: Duration.minutes(5),
    });

我得到:

[Invalid Resource Record: 'FATAL problem: ARRDATAIllegalIPv4Address (Value is not a valid IPv4 address)

如果我尝试使用 @aws-cdk/aws-route53-targets 中的 RecordTarget,我在同一托管区域中看不到记录的任何选项。

不知道为什么这么混乱,但我似乎无法克服这个问题...

可能有助于理解www记录是由ApplicationLoadBalancedFargateService设置的。

@aws-cdk/aws-rout53-targets 目前不包含另一个 Route 53 记录的目标。

与此同时,您可以使用 bind() 的自定义实现解锁自己:

// Create a A record that is an alias for `otherRecord`
new ARecord(this, 'Alias', {
  zone: myZone,
  target: RecordTarget.fromAlias({
    bind: () => ({
      dnsName: otherRecord.domainName,
      hostedZoneId: myZone.hostedZoneId,
    }),
  }),
});