首页 > 解决方案 > 列出来自 route53 中托管区域的资源记录集,给出一个非常奇怪的错误

问题描述

我的目的是列出所有托管区域中可用的所有记录。我创建了一个 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]

我提前感谢您的帮助!

标签: amazon-web-servicesgroovyamazon-route53

解决方案


您使用的是什么 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);
        }
    }
}

推荐阅读