微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS Java SDK:使用新的 RDS 实例信息更新 Route53 区域记录 更新

如何解决AWS Java SDK:使用新的 RDS 实例信息更新 Route53 区域记录 更新

此处使用 AWS Java SDK 的 Java 8。我有一个私有托管区域 (PHZ),例如 myapp.example.com,并且我在该区域中有一个 A 记录,名为 db.myapp.example.com,它指向一个 RDS 实例。

我现在正在编写一个 Lambda (Java),它将创建一个新的 RDS 实例,并更新 db.myapp.example.com 区域记录以指向新的 RDS 实例。

到目前为止,我的代码的要点如下:

CreateDBInstanceRequest createDbRequest = getSomehow();
DBInstance rdsInstance = amazonRDS.createDBInstance(createDbRequest);

ListHostedZonesResult hostedZonesResult = amazonRoute53.listHostedZones();
Optional<HostedZone> hostedZoneOpt = hostedZonesResult.getHostedZones().stream()
    .filter(zone -> "db.myapp.example.com".equals(zone.getName())).findFirst();
if (hostedZoneOpt.isPresent()) {

    // Todo: how to update the record so that it points to 'rdsInstance'?
    ResourceRecordSet alias = new ResourceRecordSet(aliasName,"A");
    
    Change updatealias = new Change(ChangeAction.UPSERT,alias);
    List<Change> changes = Collections.singletonList(updatealias);
    ChangeBatch changeBatch = new ChangeBatch(changes);

    ChangeResourceRecordSetsRequest changeRecordRequest =
        new ChangeResourceRecordSetsRequest(hostedZoneOpt.get().getId(),changeBatch);
    amazonRoute53.changeResourceRecordSets(changeRecordRequest);
    
} else {
  // handle
}

我认为这在很大程度上是正确的。但是,在搜索 Route53 SDK API docs 之后,我终生无法弄清楚如何/在何处使用新的 RDS (alias : ResourceRecordSet) 信息配置 rdsInstance 实例db.myapp.example.com 现在指向它。

有任何想法吗?提前致谢!

更新

我看到 Route53 中有 TrafficPolicy 的概念,显然我可以将 JSON 文档发送到 AWS 并为我的 A 记录配置流量策略,所以也许这是正确的方法。但是查看 Traffic Policy document definition,我需要能够在其 Value 字段中指定 IP 地址,而且我认为 AWS 开发工具包不会在任何地方公开 IP 地址!

解决方法

根据别名路由上的 AWS docs,您无法创建指向 RDS 实例的别名 DNS 记录。但是,您可以做的是在 Route 53 中创建一个常规的 CNAME 记录,指向 RDS 实例的域名。您的记录类型为 CNAME,名称为 db.myapp.example.com,值为 RDS 实例的域名,即 some-instance.cxu5ec943k5u.us-east-1.rds.amazonaws.com。您可以从 rdsInstance.getEndpoint().getAddress() 获得。

,

一般来说,DNS A 记录只能指向 IP 地址(或者在 Route 53 的情况下,指向某些 AWS 资源的 AWS 别名 - 不包括 RDS)。 CNAME记录可以指向其他子域(包括RDS实例的域名)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。