我在使用 AWS 开发工具包时遇到了一个小问题。
我正在使用 EC2 机器上的 AWS 开发工具包来提取我需要的有关我们服务的数据。
我通过密钥和 ID 密钥传递凭证,但是当它尝试提取我想要的数据时,它使用的是分配给盒子的 IAM 角色而不是凭证。
问题是,这在我们的一个环境中工作得很好,但在这个环境中表现不同,这是怎么回事?
最新的 Ruby SDK 按以下顺序检查凭据:
static_credentials -> env_credentials -> shared_credentials -> instance_profile_credentials
因此,如果您使用的是静态凭据,您应该没问题,但是如果您将密钥和密钥导出为 ENV var,请确保没有使用其他名称设置任何密钥和密钥。
SDK 按以下顺序查找 Env 变量:
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,请尝试查看 SDK 源,了解所用版本的评估顺序。