无法使用 IAM 角色从 aws-ec2 上的 secretsmanager 检索机密

Unable to retrieve secret from secretsmanager on aws-ec2 using an IAM role

目标:通过命令行以编程方式从 aws ec2 实例上的 secretsmanager 检索秘密。

我已经创建了一个 IAM 角色,其策略授予对 AWSSecretsManager 和 AWSEC2instance 的完全访问权限,还可以承担该角色并修改任何 aws ec2 实例的角色。 我创建了一个 aws 实例并将 IAM 角色附加到它并执行了以下步骤: -aws secretsmanager 列表秘密 调用 ListSecrets 操作时发生错误(UnrecognizedClientException):请求中包含的安全令牌无效。

我收到一个错误。我能够使用实例的元数据检索安全凭证。 - 我在这里遗漏了什么吗?我基本上想以安全的方式检索 aws 实例中的秘密。 - 当我尝试 运行 上面的命令来列出机密时。 cli 抱怨它需要一个区域。我的 ec2-instance 和 secret 都在 us-east-2 中。所以,我使用相同的区域。而且还是不行。

任何 suggestions/pointers 将不胜感激。谢谢!

您 运行 "aws configure" 在实例上了吗?听起来它可能在那里使用令牌而不是 EC2 实例角色。请参阅下面的参考资料以了解它检查的顺序,但基本上,EC2 角色是它查找的最后一个地方,如果它更早获得凭据,它将使用它们。

priority/sequence 见此处:https://docs.aws.amazon.com/amazonswf/latest/awsrbflowguide/set-up-creds.html https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html ("Using the Default Credential Provider Chain")

以下是我将如何进行故障排除。

  1. 检查实例是否知道附加到它的 IAM 角色。

    aws sts get-caller-identity
    
  2. 尝试将区域传递给命令

    aws secretsmanager list-secrets --region us-east-2
    
  3. 我会检查 AWS_REGIONAWS_DEFAULT_REGION,但即使设置了这些值,传递 --region 也应该覆盖它。

希望这对您有所帮助。