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