gpt4 book ai didi

java - 无法在 EC2 实例上加载 AWS 凭证

转载 作者:行者123 更新时间:2023-12-05 02:55:12 36 4
gpt4 key购买 nike

应用

Spring 中的简单 REST API 注册服务,在发送正确的 POST 请求后在数据库中创建新用户,并且 Amazon SES 发送一封包含注册链接的电子邮件以进行验证。

问题

在我的操作系统 (Windows) 应用程序中设置局部变量(AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_DEFAULT_REGION)后在本地运行正常,但问题是部署后启动。我在 AWS 上有一个带有 Amazon Linux AMI 的 EC2 实例:

  • 在 AWS Identity and Access Management (IAM) 创建用户,授予 AmazonSESFullAccess 角色
  • 使用带有私钥文件 *.pem 的 shh 通过 CMD 记录
  • Tomcat8服务启动
  • MySQL服务启动
  • 已部署应用 *.war 文件
  • 使用“export”命令创建了环境变量,我检查了“printenv”以确保一切正常
  • 发送 POST 请求后出现异常(如下),这意味着用户已创建但 Amazon SES 未发送电子邮件确认,因为无法进行身份验证
{
"timestamp": "2020-04-26T15:44:44.010+0000",
"message": "Unable to load AWS credentials from any provider in the chain: [EnvironmentVariableCredentialsProvider: Unable to load AWS credentials from environment variables (AWS_ACCESS_KEY_ID (or AWS_ACCESS_KEY) and AWS_SECRET_KEY (or AWS_SECRET_ACCESS_KEY)), SystemPropertiesCredentialsProvider: Unable to load AWS credentials from Java system properties (aws.accessKeyId and aws.secretKey), WebIdentityTokenCredentialsProvider: To use assume role profiles the aws-java-sdk-sts module must be on the class path., com.amazonaws.auth.profile.ProfileCredentialsProvider@23fac1a3: profile file cannot be null, com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper@68aa5a98: The requested metadata is not found at http://169.254.169.254/latest/meta-data/iam/security-credentials/]"
}
  • 我再次检查了我的 EC2 实例上的本地环境变量,它看起来不错,但为了确保我使用“aws configure”命令重新配置了它

  • 异常一直显示,不知怎么的应用程序无法获取环境变量,我已经为此奋斗了5个多小时,希望有人能来救我...

一段代码(在本地运行良好):

        AmazonSimpleEmailService client =
AmazonSimpleEmailServiceClientBuilder
.standard()
.withCredentials(DefaultAWSCredentialsProviderChain.getInstance())
.withRegion(Regions.EU_CENTRAL_1)
.build();

我完全是 Linux 菜鸟,在使用简单的命令时遇到问题,所以请谨慎对待需要一些控制台命令的解决方案。

最佳答案

如果您在 EC2 上运行应用程序,请不要使用 IAM 用户。

而是创建具有相同权限的 IAM 角色,并将该角色分配给实例。如果应用程序使用 AWS SDK,它将能够毫无问题地获取凭证。

在您的情况下,问题可能是应用程序的环境与您的环境不同,如果您在 bash session 中导出凭据,如果它在不同的用户或 bash session 下加载,它将不会传递给应用程序。

关于java - 无法在 EC2 实例上加载 AWS 凭证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61445011/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com