目标:通过命令行以编程方式从 aws ec2 实例上的secretsmanager检索密钥。
我创建了一个 IAM 角色,其中包含授予对 AWSSecretsManager 和 AWSEC2instance 的完全访问权限的策略,以代入该角色并修改任何 aws ec2 实例的角色。 我创建了一个 aws 实例并将 IAM 角色附加到该实例并执行了以下步骤: - AWS 密钥管理器列表-密钥 调用 ListSecrets 操作时发生错误(无法识别的客户端异常(:请求中包含的安全令牌无效。
我收到一个错误。我能够使用实例的元数据检索安全凭证。 - 我在这里错过了什么吗?我基本上想以安全的方式在 aws 实例中检索密钥。 - 当我尝试运行上述命令以列出机密时。cli 抱怨它需要一个区域。我的 ec2 实例和秘密都在 us-east-2 中。因此,我使用相同的区域。它仍然不起作用。
任何建议/指示将不胜感激。谢谢!
这是我的故障排除方法。
-
检查实例是否知道附加到该角色的 IAM 角色。
aws sts get-caller-identity
-
尝试将区域传递给命令
aws secretsmanager list-secrets --region us-east-2
-
我会检查是
AWS_REGION
还是AWS_DEFAULT_REGION
,但即使设置了这些值,传递--region
也应该覆盖它。
希望这能帮助你到达某个地方。
您是否在实例上运行了"aws configure"?听起来它可能在那里使用令牌,而不是 EC2 实例角色。请参阅下面的参考资料,了解它检查的序列,但基本上,EC2 角色是它最后查找的地方,如果它更早地获得凭证,它将使用它们。
有关优先级/顺序,请参阅此处: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("使用默认凭据提供程序链"(