目标:通过命令行以编程方式从aws ec2实例上的secretsmanager中检索秘密。
我创建了一个IAM角色,该策略具有对AWSSecretsManager和AWSEC2instance授予完全访问权限的策略,还可以承担该角色并修改任何AWS ec2实例的角色。 我创建了一个aws实例,并将IAM角色附加到该实例,并执行以下步骤: -AWS Secretsmanager列表秘密 调用ListSecrets操作时发生错误(UnrecognizedClientException):请求中包含的安全令牌无效。
我得到一个错误。我能够使用实例的元数据来检索安全凭证。 -我在这里想念东西吗?我基本上想以安全的方式在aws实例中检索秘密。 -当我尝试运行以上命令列出秘密信息时。 cli抱怨它需要一个区域。我的ec2实例和秘密都在us-east-2中。因此,我使用相同的区域。而且仍然无法正常工作。
任何建议/指针将不胜感激。谢谢!
答案 0 :(得分:0)
您是否在实例上运行“ 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(“使用默认凭据提供程序链”)
答案 1 :(得分:0)
这是我要进行故障排除的方式。
检查实例是否知道与其关联的IAM角色。
aws sts get-caller-identity
尝试将区域传递给命令
aws secretsmanager list-secrets --region us-east-2
我将检查AWS_REGION
还是AWS_DEFAULT_REGION
,但是即使设置了这些值,传递--region
也会覆盖它。
希望这对您有所帮助。