Java 8 在此处使用 AWS Java 开发工具包。例如,我有一个私有托管区域 (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 文档之后,我终生无法弄清楚如何/在何处alias : ResourceRecordSet
使用新的 RDS ( rdsInstance
) 信息配置实例,以便db.myapp.example.com
现在指向它。
有任何想法吗?提前致谢!
更新
TrafficPolicy
我看到Route53 中有一个概念,显然我可以将 JSON 文档发送到 AWS 并为我的 A 记录配置流量策略,所以也许这是正确的方法。但是查看Traffic Policy 文档定义,我需要能够在其Value
字段中指定 IP 地址,而且我不相信 AWS 开发工具包会在任何地方公开 IP 地址!