How do I pass AWS_ACCESS_KEY_ID for Amazon SES on

2019-11-05 01:59发布

我设置了AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY在我的本地计算机的环境变量,它工作正常。 当我部署到弹性魔豆,我设置了“环境性”,但它们是作为传递-D Java系统属性,而不是设置环境变量,并产生一个错误。

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-cfg-softwaresettings.html?icmpid=docs_elasticbeanstalk_console

而Tomcat的平台设置,你用System.getProperty获取Java系统属性。

错误

2018年8月3日02:34:37.001 INFO 32073 --- [NIO-8080-EXEC-9] csxxxxx.apis.XxxxxxxApiController:未发送的电子邮件。 错误:用户 '阿尔恩:AWS:STS :: 849611986161:假设角色/ AWS-elasticbeanstalk-EC2角色/ I-0f447c52c84e1fd93' 没有授权执行 'SES:SendEmail' 资源“阿尔恩:AWS:SES:我们 - 东-1:849611986161:identity/xxxxxx@xxxxx.com”(服务:AmazonSimpleEmailService;状态码:403;错误代码:存取遭拒;请求ID:c3835dda-96c5-11e8-8a21-67774160691b)

亚马逊SES只期待环境变量(或你的home目录下的“共享凭据文件”)。 那么,如何传递弹性魔豆AWS键亚马逊SES使用环境设计的Java春季启动应用程序?

Answer 1:

您可以使用SSM(系统管理器服务)参数储存,让您的环境变量,并通过具有IAM权限的任何服务访问它。 在这种情况下,因为你需要访问密钥,它不需要任何的环境变量来保持。 你可以用你的实例简介弹性豆茎内,它会为您提供访问密钥和弹性魔豆你分配的IAM的秘密访问密钥。 请参考本文件 。



Answer 2:

据https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default

Java系统属性 - aws.accessKeyId和aws.secretKey。 在AWS SDK for Java使用SystemPropertiesCredentialsProvider加载这些凭据。

因此,而不是AWS_ACCESS_KEY_ID ,设置aws.accessKeyId ,然后将其设置为命令行,这是由亚马逊SES SDK拿起Java系统属性。



文章来源: How do I pass AWS_ACCESS_KEY_ID for Amazon SES on Elastic Beanstalk?