向 Python 应用程序环境中添加 Amazon RDS 数据库实例 - Amazon Elastic Beanstalk
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

向 Python 应用程序环境中添加 Amazon RDS 数据库实例

您可以使用 Amazon Relational Database Service(Amazon RDS)数据库实例来存储由应用程序收集和修改的数据。数据库可以耦合到您的环境并由 Elastic Beanstalk 进行管理,也可以被创建为解耦数据库并由另一项服务进行外部管理。本主题提供使用 Elastic Beanstalk 控制台创建 Amazon RDS 的说明。数据库将耦合到您的环境并由 Elastic Beanstalk 进行管理。有关将 Amazon RDS 与 Elastic Beanstalk 集成的更多信息,请参阅 将数据库添加到 Elastic Beanstalk 环境

向环境中添加数据库实例

向环境添加数据库实例
  1. 打开 Elastic Beanstalk 控制台,然后在 Regions(区域)列表中选择您的 Amazon Web Services 区域。

  2. 在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。

    注意

    如果您有多个环境,请使用搜索栏筛选环境列表。

  3. 在导航窗格中,选择 Configuration (配置)

  4. Database(数据库)配置类别中,选择 Edit(编辑)。

  5. 选择数据库引擎,然后输入用户名和密码。

  6. 要保存更改,请选择页面底部的 Apply(应用)。

添加一个数据库实例大约需要 10 分钟。环境更新完成后,您的应用程序就可以通过以下环境属性访问数据库实例的主机名和其他连接信息:

属性名称 描述 属性值

RDS_HOSTNAME

数据库实例的主机名。

在 Amazon RDS 控制台的 Connectivity & security(连接和安全)选项卡上:Endpoint(端点)。

RDS_PORT

数据库实例接受连接的端口。默认值因数据库引擎而异。

在 Amazon RDS 控制台的 Connectivity & security(连接和安全)选项卡上:Port(端口)。

RDS_DB_NAME

数据库名称 ebdb

在 Amazon RDS 控制台的 Configuration(配置)选项卡上:DB Name(数据库名称)。

RDS_USERNAME

您为数据库配置的用户名。

在 Amazon RDS 控制台的 Configuration(配置)选项卡上:Master username(主用户名)。

RDS_PASSWORD

您为数据库配置的密码。

在 Amazon RDS 控制台中不可供参考。

有关与 Elastic Beanstalk 环境耦合的数据库实例配置的更多信息,请参阅 将数据库添加到 Elastic Beanstalk 环境

下载驱动程序

向项目的需求文件中添加数据库驱动程序。

例 requirements.txt - 使用 MySQL 的 Django
Django==2.2 mysqlclient==2.0.3
Python 的常见驱动程序包
  • MySQLmysqlclient

  • PostgreSQLpsycopg2

  • Oraclecx_Oracle

  • SQL Serveradodbapi

有关更多信息,请参阅 Python DatabaseInterfacesDjango 2.2 - 支持的数据库

连接到数据库

Elastic Beanstalk 在环境属性中提供所连数据库实例的连接信息。使用 os.environ['VARIABLE'] 可读取这些属性并配置数据库连接。

例 Django 设置文件 - 数据库词典
import os if 'RDS_HOSTNAME' in os.environ: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': os.environ['RDS_DB_NAME'], 'USER': os.environ['RDS_USERNAME'], 'PASSWORD': os.environ['RDS_PASSWORD'], 'HOST': os.environ['RDS_HOSTNAME'], 'PORT': os.environ['RDS_PORT'], } }