应用程序
在Spring中提供简单的REST注册服务,在发送适当的POST请求后,在数据库中创建新用户,Amazon发送带有注册链接的电子邮件进行验证。
问题
在我的操作系统(Windows)应用程序中设置局部变量(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY和AWS_DEFAULT_REGION)后,在本地工作正常,但问题在部署之后就开始了。我在AWS上有一个带有的EC2实例:
{
"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/]"
}代码段(在本地工作良好):
AmazonSimpleEmailService client =
AmazonSimpleEmailServiceClientBuilder
.standard()
.withCredentials(DefaultAWSCredentialsProviderChain.getInstance())
.withRegion(Regions.EU_CENTRAL_1)
.build();我完全是Linux新手,在简单的命令上有问题,所以请温和地处理需要一些控制台命令的解决方案。
发布于 2020-04-26 17:38:56
如果你在EC2上运行应用程序,不要使用IAM用户。
相反,使用相同的权限创建IAM 角色,并将该角色分配给实例。如果应用程序使用AWS,它将能够在没有任何问题的情况下获得凭证。
在您的情况下,问题可能是应用程序的环境与您的不同,如果您在bash会话中导出凭据,如果它在不同的用户或bash会话下加载,它将不会传递给app。
发布于 2020-04-26 17:46:35
https://stackoverflow.com/questions/61445011
复制相似问题