问题描述
我的目的是列出所有托管区域中可用的所有记录。我创建了一个 listResourceRecordSetsRequest 构建器对象,并通过响应方法将其传递以检索所有资源记录,但由于某种原因我收到错误消息。
以 def response = ....
开头的行是错误所在
ArrayList<ResourceRecordSet> getResourceRecords(HostedZone hostedZone){
def request = ListResourceRecordSetsRequest.builder().hostedZoneId(hostedZone.id()).maxItems("1000").build()
def response = route53Client.listResourceRecordSets(request as Consumer<ListResourceRecordSetsRequest.Builder>)
return response.resourceRecordSets()
}
错误:
groovy.lang.MissingMethodException: No signature of method: software.amazon.awssdk.services.route53.model.ListResourceRecordSetsRequest.accept() is applicable for argument types: (software.amazon.awssdk.services.route53.model.ListResourceRecordSetsRequest$BuilderImpl) values: [software.amazon.awssdk.services.route53.model.ListResourceRecordSetsRequest$BuilderImpl@56eafaa0]
我提前感谢您的帮助!
解决方法
您使用的是什么 AWS 开发工具包 - V2?我刚刚在 AWS Java V2 API 中对此进行了测试,效果很好。
完整的 Java V2 示例。
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.route53.Route53Client;
import software.amazon.awssdk.services.route53.model.*;
import java.util.List;
public class ListResourceRecordSets {
public static void main(String[] args) {
Region region = Region.AWS_GLOBAL;
Route53Client route53Client = Route53Client.builder()
.region(region)
.build();
listResourceRecord(route53Client);
route53Client.close();
}
public static void listResourceRecord(Route53Client route53Client) {
try {
ListResourceRecordSetsRequest request = ListResourceRecordSetsRequest.builder()
.hostedZoneId("XXXXX5442QZ69T8EEX5SZ")
.maxItems("12")
.build();
ListResourceRecordSetsResponse listResourceRecordSets = route53Client.listResourceRecordSets(request);
List<ResourceRecordSet> records = listResourceRecordSets.resourceRecordSets();
for (ResourceRecordSet record : records) {
System.out.println("The Record name is: " + record.name());
}
} catch (Route53Exception e) {
System.err.println(e.getMessage());
System.exit(1);
}
}
}