Какую конечную точку региона должен использовать AWS Java SDK v2 для маршрута 53? - PullRequest
0 голосов
/ 23 сентября 2019

В Windows 10 я использую AWS Java SDK v2 (software.amazon.awssdk:route53:2.8.3) и пытаюсь просто подключиться и перечислить все свои зоны Route 53, размещенные на хосте.В качестве региона по умолчанию указано us-west-1, указанное в моей пользовательской конфигурации (в моем файле .aws/config).

Я создаю Route53Client, используя следующее:

Route53Client route53Client = Route53Client.builder().build();

Обратите внимание, чтоЯ не указываю регион, потому что в онлайн-документации написано:

Когда вы отправляете запросы, используя CLS или SDK AWS, либо оставьте регион и конечную точку без указания,или укажите us-east-1 в качестве региона.

Затем я пытаюсь перечислить размещенные зоны, используя что-то вроде этого:

Set<HostedZone> hostedZones = client.listHostedZonesPaginator().stream()
  .flatMap(response -> response.hostedZones().stream())
  .collect(Collectors.toSet());

В журналах я вижу сообщение отладки, подобноеэто:

[DEBUG] Unable to load region from software.amazon.awssdk.regions.providers.SystemSettingsRegionProvider@...:Unable to load region from system settings. Region must be specified either via environment variable (AWS_REGION) or system property (aws.region).

Затем выдается java.net.UnknownHostException для route53.us-west-1.amazonaws.com.

Конечно, я нахожусь на пятнистом правом интернет-соединениив настоящее время.Это правильная конечная точка?Если это так, то почему эта конечная точка не указана в https://docs.aws.amazon.com/general/latest/gr/rande.html?Если это не так, почему он пытается подключиться к конечной точке us-west1, если я слежу за онлайн-документацией (как я цитировал выше), которая указывает, что не нужно указывать регион?Или проблема заключается просто в моем подключении к Интернету и поиске нечеткого DNS в данный момент?

1 Ответ

1 голос
/ 24 сентября 2019

Команда разработчиков AWS SDK решила потребовать, чтобы запросы Route53 явно указывали Region.AWS_GLOBAL, иначе запросы не будут работать, как кто-то отметил в Ошибка # 456 для SDK:

Для доступа к Route53 вам необходимо указать регион AWS_GLOBAL.Это было сделано для того, чтобы клиенты не пользовались глобальными услугами и не осознавали, что для этой услуги ваши звонки, вероятно, не находятся в регионе и потенциально могут охватывать весь мир.

К сожалению, Amazon не удосужилась документировать это.в SDK (который я смог найти) и не предоставил полезного сообщения об ошибке, вместо этого предполагая, что разработчики каким-то образом угадывают проблему, когда SDK пытается получить доступ к конечной точке, которая не существует, даже если SDK используется в соответствии сAPI и в соответствии с онлайн-документацией.

Короче говоря, клиент Route53 должен быть создан следующим образом:

route53Client = Route53Client.builder().region(Region.AWS_GLOBAL).build();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...