首页 > 解决方案 > 如何在 Elastic Beanstalk 上为 Amazon SES 传递 AWS_ACCESS_KEY_ID?

问题描述

我在本地计算机中将AWS_ACCESS_KEY_IDand设置AWS_SECRET_ACCESS_KEY为环境变量,它工作正常。当我部署到 Elastic Beanstalk 时,我设置了“环境属性”,但它们作为-DJava 系统属性传递,而不是设置为环境变量,并且会产生错误。

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

而 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 应用程序?

标签: javaamazon-web-servicesspring-bootamazon-elastic-beanstalkamazon-ses

解决方案


您可以使用 SSM(Systems Manager Service)参数存储来保留您的环境变量并通过任何具有 IAM 权限的服务访问它。在这种情况下,由于您需要访问密钥,因此不需要保留任何环境变量。您可以在弹性 beantalk 中使用您的实例配置文件,它将为您提供弹性 beantalk 的分配 IAM 的访问密钥和秘密访问密钥。请参考本文档


推荐阅读