访问 AWS Secrets Manager,并将 IMDSv2 设置为必需

问题描述 投票:0回答:1

我正在开发一个在 AWS 中的 EC2 实例上运行的 Java 应用程序。我的目标是使用适用于 Java 的 AWS 开发工具包和附加到 EC2 实例的 IAM 角色来访问 AWS Secrets Manager。

当 IMDSv2(实例元数据服务版本 2)可选时,一切都会顺利进行。但是,当按照建议将其设置为必需时,我遇到了问题。

具体来说,我收到错误

'software.amazon.awssdk.core.exception.SdkClientException: Unable to load credentials from any of the providers in the chain AwsCredentialsProviderChain'

如何解决此问题并在 IMDSv2 设置为必需的情况下成功访问 AWS Secrets Manager?

尝试附加不同的策略,创建一些自定义策略,但结果是相同的。

使用的java sdk版本:

<dependency>
     <groupId>software.amazon.awssdk</groupId>
     <artifactId>secretsmanager</artifactId>
     <version>2.25.7</version>
</dependency>
java amazon-web-services amazon-ec2 credentials aws-secrets-manager
1个回答
0
投票

我做了一些更多的研究并能够弄清楚这一点。 IMDSv2 网络请求存在问题,建议将 ec2 实例上的跃点限制增加到“2”。正如注意事项部分中所述 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html#imds-considerations

增加跳数限制: “使用modify-instance-metadata-options CLI命令并将http-put-response-hop-limit参数设置为所需的跳数。在以下示例中,跳数限制设置为2。请注意,指定http-put-response-hop-limit 的值,您还必须将 http-endpoint 设置为启用”

使用aws cli:

aws ec2 modify-instance-metadata-options \
--instance-id <instance-id> \
--http-put-response-hop-limit 2 \
--http-endpoint enabled
© www.soinside.com 2019 - 2024. All rights reserved.