无法使用 IAM 加载凭据
Unable to load credentials using IAM
我在使用 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 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
我在使用 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 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