首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在EC2实例上加载AWS凭据

问无法在EC2实例上加载AWS凭据
EN

Stack Overflow用户
提问于 2020-04-26 17:23:33
回答 2查看 8.4K关注 0票数 3

应用程序

在Spring中提供简单的REST注册服务,在发送适当的POST请求后,在数据库中创建新用户,Amazon发送带有注册链接的电子邮件进行验证。

问题

在我的操作系统(Windows)应用程序中设置局部变量(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY和AWS_DEFAULT_REGION)后,在本地工作正常,但问题在部署之后就开始了。我在AWS上有一个带有的EC2实例:

  • 在AWS标识和访问管理(IAM)上创建用户,授予AmazonSESFullAccess角色
  • 使用shh对私钥文件*.pem进行CMD日志记录
  • Tomcat8服务启动
  • MySQL服务启动
  • 部署应用程序*.war文件
  • 使用“export”命令创建环境变量,我选中了“printenv”,以确保一切正常
  • 在发送POST请求后,我得到了异常(下面),这意味着用户已经创建,但是Amazon没有发送电子邮件确认,因为无法进行身份验证
代码语言:javascript
复制
{
    "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配置‘命令重新配置了它。
  • 异常不断地显示,不知何故应用程序无法获得环境变量,我与此斗争了超过5个小时,所以希望有人会来救我……

代码段(在本地工作良好):

代码语言:javascript
复制
        AmazonSimpleEmailService client =
                AmazonSimpleEmailServiceClientBuilder
                        .standard()
                        .withCredentials(DefaultAWSCredentialsProviderChain.getInstance())
                        .withRegion(Regions.EU_CENTRAL_1)
                        .build();

我完全是Linux新手,在简单的命令上有问题,所以请温和地处理需要一些控制台命令的解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-26 17:38:56

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

相反,使用相同的权限创建IAM 角色,并将该角色分配给实例。如果应用程序使用AWS,它将能够在没有任何问题的情况下获得凭证。

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

票数 4
EN

Stack Overflow用户

发布于 2020-04-26 17:46:35

DefaultAWSCredentialsProvider有多个位置,它将查找凭证。您可以设置凭据配置文件,而不是将凭据设置为环境变量。请参阅以下文档:使用AWS凭据。

确保您有安装AWS CLI,然后可以运行以下命令来配置您的配置文件:

单击这里获取aws配置命令上的文档。

如果您已经配置了aws配置文件,但它仍然无法工作,那么您很可能已经为错误的linux用户配置了配置文件。例如,如果名为tomcat8的linux用户是运行tomcat实例的用户,那么需要在/home/tomcat 8/..aws/凭据/上设置凭据配置文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61445011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档