如何在本地计算机上承担IAM角色的情况下运行docker Image?

时间:2019-07-04 18:56:08

标签: java amazon-web-services docker amazon-iam

我正在与docker合作 我提供了一个可以编译并正常运行的docker映像 该应用程序使用Amazon客户端与S3,SNS,SQS等服务进行交互。

应用程序尝试加载客户端时,它会因错误而失败

Caused by: com.amazonaws.SdkClientException: Unable to load AWS credentials from any provider in the chain: [EnvironmentVariableCredentialsProvider: Unable to load AWS credentials from environment variables (AWS_ACCESS_KEY_ID (or AWS_ACCESS_KEY) and AWS_SECRET_KEY (or AWS_SECRET_ACCESS_KEY)), SystemPropertiesCredentialsProvider: Unable to load AWS credentials from Java system properties (aws.accessKeyId and aws.secretKey), com.amazonaws.auth.profile.ProfileCredentialsProvider@17bf085: profile file cannot be null, com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper@24117d53: Unable to load credentials from service endpoint

我已在cli上测试了应用程序本地IAM配置正确 在控制台上获取呼叫者身份

aws sts get-caller-identity

输出

{
    "Account": "xxxxxxxxxxxx", 
    "UserId": "XXXXXXXXXXXXXXXXXXXXX:xxxxxxxx-session-1562266255", 
    "Arn": "arn:aws:sts::342484191705:assumed-role/abc-abc-abc-abc/xxxxxxxx-session-1562266255"
}

因此在本地计算机上可以正确承担IAM角色, 在本地计算机上运行单元测试和集成测试也完全可以发挥IAM的作用。

我正在通过命令运行docker映像

docker run -it --rm -e "JPDA_ADDRESS=*:8000" -e "JPDA_TRANSPORT=dt_socket" -p 5033:8000 -p 6060:6033 --memory 1300M --log-driver json-file --log-opt "max-size=1g" docker-image-arn dev

该图像可以运行,但无法执行所有必须承担IAM角色并与AWS服务进行交互的操作。

缺少什么?

如何使容器内的应用程序使用IAM角色?

0 个答案:

没有答案