【发布时间】:2015-04-24 21:35:33
【问题描述】:
我在使用 AWS 开发工具包时遇到了一点小问题。
我在 EC2 机器上使用 AWS 开发工具包来提取我需要的关于我们服务的数据。
我通过密钥和 ID 密钥向它传递凭据,但是当它尝试提取数据时,我希望它使用分配给框的 IAM 角色而不是凭据。
问题是,这在我们的一个环境中运行良好,但在这个环境中表现不同,这是怎么回事?
【问题讨论】:
标签: ruby amazon-ec2 amazon-iam aws-sdk
我在使用 AWS 开发工具包时遇到了一点小问题。
我在 EC2 机器上使用 AWS 开发工具包来提取我需要的关于我们服务的数据。
我通过密钥和 ID 密钥向它传递凭据,但是当它尝试提取数据时,我希望它使用分配给框的 IAM 角色而不是凭据。
问题是,这在我们的一个环境中运行良好,但在这个环境中表现不同,这是怎么回事?
【问题讨论】:
标签: ruby amazon-ec2 amazon-iam aws-sdk
最新的 Ruby SDK 按以下顺序检查凭据:
static_credentials -> env_credentials -> shared_credentials -> instance_profile_credentials
因此,如果您使用静态凭据应该没问题,但如果您将密钥和机密导出为 ENV 变量,请确保没有使用其他名称设置。
SDK 按以下顺序查找环境变量:
AWS_ACCESS_KEY_ID -> AMAZON_ACCESS_KEY_ID -> AWS_ACCESS_KEY
AWS_SECRET_ACCESS_KEY -> AMAZON_SECRET_ACCESS_KEY -> AWS_SECRET_KEY
AWS_SESSION_TOKEN -> AMAZON_SESSION_TOKEN
通过执行以下操作确保您同时导出 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY:
export AWS_ACCESS_KEY_ID=ASIAXXXXXXXXXXXXXXXX
export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
多年来,密钥的顺序和名称发生了多次更改,因此,如果您的环境运行不同版本的 SDK,遇到问题也就不足为奇了。如果您无法更新到最新的 SDK,也许 try taking a look at the SDK source 可以查看您使用的版本的评估顺序。
【讨论】: