使用Java 实现AWS 转移域名到另一个AWS账户
前言
记录通过aws sdk java 实现转移域名.
环境准备
引入maven坐标
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>route53domains</artifactId>
<version>2.20.110</version>
</dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>route53</artifactId>
<version>2.20.111</version>
</dependency>
工具类
public class Route53Service {
private Route53DomainsClient transferRoute53DomainsClient;
private Route53DomainsClient acceptRoute53DomainsClient;
private Route53Client route53Client;
public Route53Service(String fromAccessId, String secretAccessKey, String toAccessId, String toSecretAccessKey) {
AwsCredentialsProvider transferCredentials = () -> AwsBasicCredentials.create(fromAccessId, secretAccessKey);
AwsCredentialsProvider acceptCredentials = () -> AwsBasicCredentials.create(toAccessId, toSecretAccessKey);
transferRoute53DomainsClient = Route53DomainsClient.builder()
.region(Region.US_EAST_1)
.credentialsProvider(transferCredentials)
.build();
acceptRoute53DomainsClient = Route53DomainsClient.builder()
.region(Region.US_EAST_1)
.credentialsProvider(acceptCredentials)
.build();
//创建route53客户端对象
route53Client = Route53Client.builder()
.region(Region.US_EAST_1)
.credentialsProvider(acceptCredentials)
.build();
}
public void transferDomain(String toAccountID, String domainName) {
//创建转移域名请求对象
TransferDomainToAnotherAwsAccountRequest transfer = TransferDomainToAnotherAwsAccountRequest.builder()
.accountId(toAccountID) //目的账户id
.domainName(domainName)//转移域名
.build();
//执行转移域名
TransferDomainToAnotherAwsAccountResponse transferDomainToAnotherAwsAccountResponse = transferRoute53DomainsClient.transferDomainToAnotherAwsAccount(transfer);
//输出接口响应
System.out.println(transferDomainToAnotherAwsAccountResponse.toString());
//获取密码
String password = transferDomainToAnotherAwsAccountResponse.password();
//创建接收域名请求对象
AcceptDomainTransferFromAnotherAwsAccountRequest accept = AcceptDomainTransferFromAnotherAwsAccountRequest.builder()
.domainName(domainName)//接收域名
.password(password)//从上个接口执行结果获取的密码
.build();
//执行接收域名
AcceptDomainTransferFromAnotherAwsAccountResponse acceptDomainTransferFromAnotherAwsAccountResponse = acceptRoute53DomainsClient.acceptDomainTransferFromAnotherAwsAccount(accept);
//输出接口响应
System.out.println(acceptDomainTransferFromAnotherAwsAccountResponse.toString());
}
public void transferHostedZone(String hostedZoneName) {
//创建新托管区域
CreateHostedZoneRequest request = CreateHostedZoneRequest.builder()
.name(hostedZoneName)//名称
.callerReference(System.currentTimeMillis()+"")
// .delegationSetId()
.build();
CreateHostedZoneResponse hostedZone = route53Client.createHostedZone(request);
//输出接口响应
System.out.println(hostedZone.toString());
//获取新托管区域名称服务器
List<String> nameServers = hostedZone.delegationSet()
.nameServers();
nameServers.forEach(System.out::println);
List<Nameserver> names = new ArrayList<>();
nameServers.forEach(e -> names.add(Nameserver
.builder()
.name(e)
.build()));
//更改域名名称服务器
UpdateDomainNameserversResponse updateDomainNameserversResponse = acceptRoute53DomainsClient.updateDomainNameservers(UpdateDomainNameserversRequest.builder()
.domainName(hostedZoneName)
.nameservers(names)//默认有四个名称服务器
.build());
//输出接口响应
System.out.println(updateDomainNameserversResponse.toString());
}
}
直接使用即可