Как использовать переменные среды и роли IAM в докере, работающем под управлением AWS SDK для Java?
Я не могу использовать временные учетные данные, полученные при назначении роли IAM экземпляру с переменной среды в контейнере Docker. Пример, следующий не работает:
[root@ip-172-xx-xx-xx ec2-user]# aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************ABCD iam-role
secret_key ****************12a3 iam-role
region <not set> None None
а также docker run -e AWS_REGION=us-east-1 <some-java-image>
AWS_REGION
var есть внутри докера, но SDK не выбирает, так что AmazonSQSClientBuilder.defaultClient()
не удается с Exception in thread "main" 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.
,
Это работает локально на моем ноутбуке, вероятно, потому что у меня есть набор постоянных учетных данных.
Также, aws sqs list-queues
прекрасно работает внутри докера, мне не нужно указывать регион, потому что он выбирает из переменной env, которую я передал. Работает также с Go SDK AWS внутри докера. Итак, awscli работает, но не SDK.
Это также мешает мне использовать роли экземпляров в AWS Batch.