无法使用IAM加载凭据

时间:2017-02-15 23:03:31

标签: amazon-web-services amazon-ec2 amazon-iam

我在使用IAM角色时遇到了问题。

我使用Cloudformation模板启动了实例,我在其中指定了我的角色和策略来访问s3存储桶和其他亚马逊资源。启动脚本 成功 后,从s3中获取所需的资源。

但是我已经启动了下载的脚本,使用boto3作为sdk,我收到了一个错误; Boto failed to load credentials(据我所知,它可以从aws凭据文件或IAM角色加载凭据。

然后我运行aws s3 ls来检查问题并且也遇到了同样的问题。我还使用policysimS3ListAllMyBucketsnotS3ListAllMyBucketsnot)测试了我的角色,并发现一切正常。

Amazon S3ListBucketnot required * allowed 1 matching statements. Amazon S3ListAllMyBucketsnot required * allowed 1 matching statements.

应该注意的是,我整天都玩过cloudformation并启动了非常必须的实例(但关闭它们)。这可能是一个限制问题吗?

任何解决方案?

1 个答案:

答案 0 :(得分:2)

要确认角色是否正确地向Amazon EC2实例提供凭据,请在实例上运行此命令:

curl http://169.254.169.254/latest/meta-data/iam/security-credentials/

它应显示分配给实例的角色的名称。

然后尝试这个,插入角色名称:

curl http://169.254.169.254/latest/meta-data/iam/security-credentials/<ROLE-NAME>/

您应该看到与此类似的临时凭证:

{
  "Code" : "Success",
  "LastUpdated" : "2017-04-26T16:39:16Z",
  "Type" : "AWS-HMAC",
  "AccessKeyId" : "AKIAIOSFODNN7EXAMPLE",
  "SecretAccessKey" : "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
  "Token" : "token",
  "Expiration" : "2017-04-27T22:39:16Z"
}

如果是,那么boto将能够自动访问这些凭据。

每当boto发生奇怪的事情时,确保将其更新到最新版本总是一个好主意。这会更新boto,boto3和AWS Command-Line Interface (CLI)

sudo /usr/local/bin/pip install boto --upgrade
sudo /usr/local/bin/pip install boto3 --upgrade
sudo /usr/local/bin/pip install awscli --upgrade