Необходимо указать явный регион в среде компоновщика или настройки, чтобы предоставить регион - PullRequest
0 голосов
/ 20 мая 2018

Я попытался настроить пользователя следующим образом:

aws configure --profile MyUser

и активировать его с помощью:

export AWS_PROFILE=MyUser

Однако я получаю следующее исключение:

20 мая 2018 г. 15:09:02 com.amazonaws.auth.profile.internal.BasicProfileConfigLoader loadProfiles

ПРЕДУПРЕЖДЕНИЕ. Унаследованный формат профиля требует префикса «profile» перед именем профиля.Последний код не требует такого префикса и будет рассматривать его как часть имени профиля.Пожалуйста, удалите префикс, если вы видите это предупреждение.

Исключение в потоке "main" com.amazonaws.SdkClientException: Невозможно найти регион через цепочку поставщиков региона.Необходимо указать явный регион в среде компоновщика или установки для предоставления региона.

Странно, что если я настрою его с пользователем по умолчанию, то все будет работать нормально:

aws configure

Почему конфигурация с определенным именем пользователя не работает выше?


Я также знаю, что мы можем настроить учетные данные в коде, подобном этому SO или это SO .

AmazonS3 amazonS3 = AmazonS3Client.builder()
    .withRegion("us-east-1")
    .withCredentials(new AWSStaticCredentialsProvider(creds))
    .build();

Это работает, но я просто считаю плохой идеей помещать учетные данные в исходный код и проверять их с помощью git.


Также из сообщения об ошибке похоже, что я использую старый формат с profile в имени префикса (как описано в этом SO . Я дважды проверилaws-cli версии и убедитесь, что она обновлена, а также дважды проверьте, что у меня нет префикса в имени профиля.

Вот о версии:

aws --version
aws-cli/1.11.129 Python/3.6.2 Darwin/17.5.0 botocore/1.5.92

А вот и файл конфигурации:

cat ~/.aws/credentials             
[default]
aws_access_key_id = A***
aws_secret_access_key = I***
[MyUser]
aws_access_key_id = A***
aws_secret_access_key = D***

1 Ответ

0 голосов
/ 20 мая 2018

Просто разберись, что не так.Есть два файла, сгенерированные с aws configure --profile MyUser.

  • ~ / .aws / config
  • ~ / .aws / credential

Я заметил, что сгенерированный файл конфигурации имеет profile впрефикс

$ cat ~/.aws/config 
[default]
region = us-east-1
output = json
[profile MyUser]
region = us-west-1
output = json

После удаления все работает отлично:

[MyUser]
region = us-west-1
output = json

В качестве альтернативы, мы можем явно указать файл конфигурации учетных данных и пользователя.Например, в Scala:

private lazy val credential =
    new ProfileCredentialsProvider("/Users/yuchen/.aws/credentials", "MyUser")

private lazy val lambda = AWSLambdaClientBuilder.standard()
    .withCredentials(credential)
    .withRegion(Regions.US_WEST_1)
    .build()
...