时间:2021-07-01 10:21:17 帮助过:5人阅读
对于生产环境,您可以在您的环境之外启动一个数据库实例并将应用程序配置为在 Elastic Beanstalk 提供的功能范围之外连接到该实例。要使用环境外部的数据库实例,需要其他安全组和连接字符串配置。但是,这也使您能够从多个环境连接到数据库、使用集成数据库不支持的数据库类型、执行蓝/绿部署以及停用您的环境,而不会影响数据库实例。
在启动数据库实例并配置安全组后,您可以使用环境属性将连接信息(终端节点、密码等)传递到应用程序。这是当您在环境中运行数据库实例时,Elastic Beanstalk 使用的相同机制。
在环境属性部分中,定义应用程序读取的用于构建连接字符串的变量。为了与具有集成 RDS 数据库实例的环境兼容,请使用以下内容。
RDS_HOSTNAME – 数据库实例的主机名。
Amazon RDS 控制台标签 – 终端节点(这是主机名)
RDS_PORT – 数据库实例接受连接的端口。默认值因数据库引擎而异。
Amazon RDS 控制台标签 – 端口
RDS_DB_NAME – 数据库名称,ebdb。
Amazon RDS 控制台标签 – 数据库名称
RDS_USERNAME – 您为数据库配置的用户名。
Amazon RDS 控制台标签 – 用户名
RDS_PASSWORD – 您为数据库配置的密码。
为了提高安全性,您可以将连接信息存储在 Amazon S3 中,并将 Elastic Beanstalk 配置为在部署期间检索该信息。利用配置文件 (.ebextensions),您可以在部署应用程序时配置环境中的实例以从 Amazon S3 安全地检索文件。
使用环境属性向应用程序提供连接信息是将密码置于代码外的好方法,但这不是完美解决方案。环境属性可在环境管理控制台中发现,并且可由有权在环境上描述配置设置的任何用户查看。根据平台,环境属性还可能显示在实例日志中。
您可以通过在控制的 Amazon S3 存储桶中存储连接信息来锁定该信息。基本步骤如下所示:
将包含连接字符串的文件上传到 Amazon S3 存储桶。
向 EC2 实例配置文件授予读取该文件的权限。
将您的应用程序配置为在部署期间下载该文件。
在应用程序代码中读取该文件。
首先,创建存储桶来存储包含连接字符串的文件。在本示例中,我们将使用具有单个键和值的 JSON 文件。该值是 Amazon RDS 中的 PostgreSQL 数据库实例的 JDBC 连接字符串。
beanstalk-database.json
{ "connection": "jdbc:postgresql://mydb.b5uacpxznijm.us-west-2.rds.amazonaws.com
:5432
/ebdb
?user=username
&password=mypassword
" }
------------------------------------------------------------------------------------------------------------
~/my-app/.ebextensions/database.config
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth:
type: "s3"
buckets: ["my-secret-bucket-123456789012
"]
roleName: "aws-elasticbeanstalk-ec2-role
"
files:
"/tmp/beanstalk-database.json
" :
mode: "000644"
owner: root
group: root
authentication: "S3Auth"
source: https://s3-us-west-2
.amazonaws.com/my-secret-bucket-123456789012
/beanstalk-database.json
向 Elastic Beanstalk 环境中添加数据库
标签:amp replace 方法 service 利用 nal 相同 span 端口