【问题标题】:Unable to load credentials using IAM无法使用 IAM 加载凭证
【发布时间】:2017-02-15 23:03:31
【问题描述】:

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

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

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

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

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

应该注意的是,我整天都在玩 cloudformation 并启动了非常必须的实例(但关闭了它们)。会不会是限制问题?

有什么解决办法吗?

【问题讨论】:

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


【解决方案1】:

要确认角色正确地向 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

【讨论】:

    猜你喜欢
    • 2020-02-01
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    相关资源
    最近更新 更多