java - 如何在 Elastic Beanstalk 上为 Amazon SES 传递 AWS_ACCESS_KEY_ID?
问题描述
我在本地计算机中将AWS_ACCESS_KEY_ID
and设置AWS_SECRET_ACCESS_KEY
为环境变量,它工作正常。当我部署到 Elastic Beanstalk 时,我设置了“环境属性”,但它们作为-D
Java 系统属性传递,而不是设置为环境变量,并且会产生错误。
而 Tomcat 平台设置您使用 System.getProperty 检索的 Java 系统属性。
错误
2018-08-03 02:34:37.001 INFO 32073 --- [nio-8080-exec-9] csxxxxx.apis.XxxxxxxApiController:未发送电子邮件。错误:用户 'arn:aws:sts::849611986161:assumed-role/aws-elasticbeanstalk-ec2-role/i-0f447c52c84e1fd93' 无权对资源 'arn:aws:ses:us- 执行 'ses:SendEmail' east-1:849611986161:identity/xxxxxx@xxxxx.com'(服务:AmazonSimpleEmailService;状态代码:403;错误代码:AccessDenied;请求 ID:c3835dda-96c5-11e8-8a21-67774160691b)
Amazon SES 仅需要环境变量(或您的主目录中的“共享凭证文件”)。那么,如何将 AWS 密钥传递给 Elastic Beanstalk 中的 Amazon SES,以便使用该环境的 Java Spring Boot 应用程序?
解决方案
您可以使用 SSM(Systems Manager Service)参数存储来保留您的环境变量并通过任何具有 IAM 权限的服务访问它。在这种情况下,由于您需要访问密钥,因此不需要保留任何环境变量。您可以在弹性 beantalk 中使用您的实例配置文件,它将为您提供弹性 beantalk 的分配 IAM 的访问密钥和秘密访问密钥。请参考本文档。
推荐阅读
- jenkins-plugins - Jenkins 插件监控卡住的工作
- javascript - 日期时间与 t 格式转换 dd mmm yyyy hh mm ss 在 java 或 javascript
- mysql - SQL 查询语法错误,带有 INNER JOIN 的 UPDATE 语句
- ios - XCode 9.4.1 上的 Swift + Objective C 框架的问题
- android - 如何使用内部 PendingIntent 序列化对象
- javascript - 繁忙的图像不断加载,不考虑响应
- reactjs - 如何指定比指定的 material-ui 最大空间更多的空间?
- xamarin - OnBackButtonPressed() 没有第二次被触发
- c++ - 声明具有两种类型的变量:“int char”
- java - 从 Java 读取来自 MQ 的所有消息的问题