gpt4 book ai didi

database - 将 Heroku 应用程序指向 AWS RDS 数据库

转载 作者:太空狗 更新时间:2023-10-30 01:45:25 24 4
gpt4 key购买 nike

我需要将我的 Heroku 应用程序指向我的 AWS RDS 数据库。我的 RDS 数据库已启动并正在运行,并且有一个具有 0.0.0.0/0 访问权限的安全组。

目前,我已经删除了我的 Heroku postgreSQL 数据库,并试图将我的 Heroku 应用程序指向我的 RDS 数据库。由于某种原因,我的应用程序崩溃了。我相信我正在进行的步骤是在 Heroku 端设置我的 DATABASE_URL。

假设我的数据库凭据是:

数据库实例:mydb
数据库名称:mydb
用户:wcronyn
pass:密码

我试过:

heroku 配置:设置 DATABASE_URL=postgres://wcronyn:password@mydb.XXXXXXX.us-east-1.rds.amazonaws.com:5432/mydb

我尝试通过将 .pem 文件下载到我的配置文件夹然后引用它来设置权限:

DATABASE_URL=postgres://wcronyn:password@mydb.XXXXXXX.us-east-1.rds.amazonaws.com:5432/mydb?sslca=config/amazon-rds-ca-cert.pem&sslmode=require&encrypt=true

我已经尝试了这两个数据库 url,但我的应用程序总是崩溃。

有人可以概述成功托管我的 RDS 数据库并将我的应用程序指向它需要采取的步骤吗?

最佳答案

以下步骤对我有用(2017 年 2 月),设置如下:

  • AWS RDS 区域 eu-west-2(使用 VPC 安全组,而不是数据库安全组)
  • Postgres 9.6
  • Heroku,托管 Flask 应用程序(例如应用程序名称:heroku-app-stage)
  • 将远程添加到 Heroku 应用程序中的 Git(例如远程:stage)
  • postgresql://username:password@awsrdshost:5432/dbname 的 DATABASE_URL 值

这大致有四个步骤:

  1. 下载 Amazon RDS SSL 根证书并将其安装到您的 Heroku 应用中
  2. 将您的 Heroku 应用配置为引用所述根证书
  3. 在您的 RDS 实例上启用 SSL
  4. 配置您的 RDS 安全组以允许传入流量的所有 IP 地址范围

下载并安装 Amazon RDS SSL 根证书

  1. 从下面的 Amazon RDS 链接下载 .pem 证书文件。
  2. 将文件放入您的应用程序文件夹(记下位置,我已将它与我的 .py 文件放在我的根文件夹中)
  3. 将该文件提交到您的 git 存储库,并将所述提交推送到 Heroku 远程(git push stage master)
  4. 验证证书是否已上传到预期路径(您可以执行 heroku run bash --app heroku-app-stage 以在 dyno 中查看您的文件)

配置 Heroku 以引用根证书

  1. 通过 Heroku 仪表板,导航到 heroku-app-stage,转到“设置”选项卡,然后单击“显示配置变量”
  2. 通过添加 ?sslrootcert=rds-combined-ca-bundle.pem&sslmode=require 更新您的 DATABASE_URL 变量。新值现在应该是 postgresql://username:password@awsrdshost:5432/dbname?sslrootcert=rds-combined-ca-bundle.pem&sslmode=require

请注意,此答案使用根证书;可能还有其他选项可能是您想要的,在这种情况下请引用以下 SO:

How to connect to a remote PostgreSQL database with Python

在您的 RDS 实例上启用 SSL

  1. 通过您的 RDS 控制台,导航到您的实例详细信息并记下它正在使用的参数组
  2. 转到仪表板上的参数组屏幕
  3. 如果您使用的是默认参数组,则需要创建另一个参数组,因为您将无法编辑默认参数组。
  4. 将force_ssl 参数修改为1 并保存。
  5. 验证您的 RDS 实例现在是否启用了 SSL。如果您运行 psql postgres -h awsrdshost -p 5432 -U username,您应该会在连接详细信息中看到 SSL

配置 RDS 安全组以允许所有传入 IP 范围

  1. 通过您的 RDS 控制台,检查您的实例的事件安全组
  2. 导航到 EC2 控制台(在计算 > EC2 下),然后选择安全组
  3. 选择相关的安全组(来自第 1 步)并转到底部的“入站”选项卡。您应该会看到那里列出了一个 PostgreSQL 项目。如果您点击“编辑”,您应该可以选择将“来源”更改为“任何地方”。

注意:仅当您使用使用 VPC 安全组的 RDS 设置时,说明才相关

就是这样!

所用引用页面的链接:

Amazon 的 Postgres SSL 指南 http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.SSL

Heroku 的(非常简短的)Amazon RDS 指南 https://devcenter.heroku.com/articles/amazon-rds

关于database - 将 Heroku 应用程序指向 AWS RDS 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35247347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com