问题
当你试图访问AWS资源像S3, SQS或红移,操作失败,错误:
com.amazonaws。SdkClientException:无法加载AWS凭证链中的任何提供者:[BasicAWSCredentialsProvider:访问密钥或密钥为空,com.amazonaws.auth。InstanceProfileCredentialsProvider@a590007a:请求的元数据不是最新发现https:// < ip地址> / /元数据/我/安全凭据)
导致
- 场景1:访问AWS资源如S3, SQS,或红移,访问权限必须提供通过一个我的角色或AWS凭证。如果这些凭证不提供的话,就可能发生上述错误。
- 场景2:启动集群,提供了我的角色,但由于一些错误配置,作用是无法正确连接。调试,运行下面的Bash命令从一个连接到集群的笔记本:
curl https:// < ip地址> /最近/元数据/我/安全凭证/ < role_name >
你应该得到这样的结果:“代码”:“AssumeRoleUnauthorizedAccess”、“消息”:“EC2 < role_name >不能承担的角色。请参阅文档:https://docs.amazonwebservices.com/IAM/latest/UserGuide/RolesTroubleshooting.html。”、“lastupdate”:“2019 - 05 - 03 - t15:36:26z”
解决方案
附上正确的我的角色集群。我的信任关系角色应该有以下政策:
{“版本”:“2012-10-17”,“声明”:[{“效应”:“允许”、“主要”:{“服务”:“ec2.amazonaws.com”},“行动”:“sts: AssumeRole”}]}