AWS - STS, как использовать AWSSecurityTokenServiceClientBuilder с глобальным регионом

Я использовал

AWSSecurityTokenServiceClient sts_client = new AWSSecurityTokenServiceClient(), 

и регион по умолчанию (Глобальный) был установлен автоматически. Но этот конструктор не рекомендуется, и рекомендуется использовать:

AWSSecurityTokenServiceClientBuilder.

Я также хочу использовать регион по умолчанию. Я написал:

AWSSecurityTokenService stsClient = AWSSecurityTokenServiceClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCredentials)).build();

но я получил исключение:

com.amazonaws.SdkClientException: Unable to find a region via the region provider chain. Must provide an explicit region in the builder or setup environment to supply a region.

at com.amazonaws.client.builder.AwsClientBuilder.setRegion(AwsClientBuilder.java:371)
at com.amazonaws.client.builder.AwsClientBuilder.configureMutableProperties(AwsClientBuilder.java:337)
at com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:46)
at co.softimize.STSManager.<init>(STSManager.java:31)
at co.softimize.sts.STSManagerTests.setup(STSManagerTests.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

Спасибо!

1 ответ

Я никогда не слышал о Глобальном регионе, но чтобы указать регион по умолчанию с помощью нового неосуждаемого метода Builder, вы можете использовать:

.withRegion(Regions.DEFAULT_REGION)

Итак, ваша команда будет:

AWSSecurityTokenService stsClient = AWSSecurityTokenServiceClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(awsCredentials)) .withRegion(Regions.DEFAULT_REGION.getName()) .build();

К вашему сведению - в моей версии перечисления регионов, DEFAULT_REGION является US_WEST_2, Не забудь

import com.amazonaws.regions.Regions;

РЕДАКТИРОВАТЬ: Может быть полезно знать, что не имеет значения, какой регион вы указали. Сгенерированные учетные данные STS могут использоваться во всех регионах (в некотором смысле они являются "глобальными").

Другие вопросы по тегам