在 AWS Elastic BeanStalk 上运行的 Spring Boot 应用程序中配置 AWS RDS

Posted

技术标签:

【中文标题】在 AWS Elastic BeanStalk 上运行的 Spring Boot 应用程序中配置 AWS RDS【英文标题】:Configuring AWS RDS in a Spring Boot Application running on AWS Elastic BeanStalk 【发布时间】:2016-07-01 22:43:57 【问题描述】:

我正在尝试学习使用 AWS Elastic Beanstalk 基础设施通过 Spring Boot 框架开发 REST 应用程序的方法。在将应用程序部署到 AWS Elastic BeanStalk 服务器之前,我正在使用 IntelliJ IDE 在本地机器上开发和测试应用程序。我正在尝试与我的应用程序中的 AWS RDS 实例交谈。使用以下代码 sn-ps,我的应用程序能够在部署时与 RDS 实例通信并在我的本地机器上运行,但在部署在 AWS 服务器上时给了我 http 404,我猜这是因为由于连接失败而导致部署失败来自 AWS 的 RDS 实例。

Project POM file

Application Properties file

User Repository file

我正在寻找一种正确的方法来配置这些秘密,以便它们不存在于 git 中。理想情况下,从为实例定义的 AWS 环境变量中获取它,但我无法弄清楚 Spring Boot 应用程序属性文件如何访问 AWS Elastic BeanStalk 环境配置变量。

我已经阅读了一些文档和教程,但不能完全弄清楚这一点。喜欢Spring Cloud SDK、Sample Spring Boot AWS App

[编辑 1] 为了提供更多信息,我可以通过 ssh 进入盒子并观察日志。兴趣点是:

引起:com.amazonaws.AmazonServiceException:用户:arn:aws:sts::486695215273:assumed-role/aws-elasticbeanstalk-ec2-role/i-dc86381f 无权执行:cloudformation:DescribeStackResources(服务: AmazonCloudFormation;状态代码:403;错误代码:AccessDenied;请求 ID:1ee8c03b-ecd4-11e5-9fe1-378ce4cb26d3)

[编辑 2] 在所需策略中添加 AWSCloudFormationReadOnlyAccess 安全策略后, i-dc86381f 的堆栈不存在(服务:AmazonCloudFormation;状态代码:400;错误代码:ValidationError;请求 ID:f579cc15-ecd4-11e5-a20b-114992e25084)

AWSCloudFormation 中提到的我的模板文件是My Template File

【问题讨论】:

【参考方案1】:

可以通过 cli 或 GUI 配置 Elastic Beanstalk“秘密”或环境变量。对于 cli 使用:

eb setenv ExampleVar=ExampleValue

这很简单。文档在这里:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-setenv.html

要通过 GUI 进行操作,您将导航到您的应用程序和所需的环境,单击左侧菜单中的配置。单击“软件配置”面板上的齿轮图标,您将进入配置页面,您可以在其中设置“环境属性”,即键/值对...您可以设置属性名称,然后属性值,当您单击“应用”时,它们将应用于您的环境,然后您的应用程序可以访问它们,但它通常会访问生产环境变量。

【讨论】:

以上是关于在 AWS Elastic BeanStalk 上运行的 Spring Boot 应用程序中配置 AWS RDS的主要内容,如果未能解决你的问题,请参考以下文章

在 AWS Elastic Beanstalk 上扩展 Magento

如何在 AWS Elastic Beanstalk 上设置 HTTPS

如何在 AWS Elastic Beanstalk 上设置 HTTPS

在 AWS Elastic Beanstalk 上运行节点和反应

如何使用 aws cli 在 Elastic Beanstalk 上上传和部署?

在aws elastic beanstalk上上传文件?