Я попытался настроить пользователя следующим образом:
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***