当前位置: 首页 > 知识库问答 >
问题:

面向AWS RDS数据库的Heroku应用

巫马修然
2023-03-14

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

db实例:mydb
dbname:mydb
user:wcronyn
pass:password

我试过了:

heroku配置:set database_url=postgres://wcronyn:password@mydb.xxxxxx.us-east-1.rds.amazonaws.com:5432/mydb

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

共有1个答案

栾瑞
2023-03-14

以下步骤对我有效(2017年2月),给定以下设置:

  • AWS RDS区域eu-west-2(使用VPC安全组,而不是DB安全组)
  • Postgres 9.6
  • Heroku,承载一个Flask应用程序(例如appname:heroku-app-stage)
  • Git,在Heroku应用程序中添加了一个远程(例如remote:stage)
  • PostgreSQL的
  • database_url值://username:password@awsrdshost:5432/dbname

大致有四个步骤:

  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,运行bash--app heroku-app-stage查看dyno中的文件)

配置Heroku引用根证书

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

请注意,此答案使用根证书;可能还有其他选择,这可能是你想要的,在这种情况下,请参考以下内容:

    null

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

  1. 通过RDS控制台,检查实例的活动安全
  2. 导航到EC2控制台(在Compute>EC2下),并选择安全组
  3. 选择相关的安全组(从步骤1)并转到底部的入站选项卡。您应该看到这里列出了一个PostgreSQL项。如果单击编辑,您应该有一个选项可以将源更改为任意位置。

注意:只有在使用使用VPC安全组的RDS设置时,说明才是相关的

Amazon关于Postgres的SSL指南http://docs.aws.amazon.com/amazonrds/latest/userguide/chap_PostgreSQL l.html#PostgreSQL l.concepts.general.SSL

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

 类似资料:
  • 问题内容: 我长期使用面向行的数据库设计,除了数据仓库项目和大数据样本外,我没有为OLTP应用程序使用面向列的数据库设计。 我的面向行的表看起来像 我们团队中的某些人提倡面向列的数据库设计。他们建议所有列名称都应该是“属性”表中的属性名称。然后,另一个表Quote将具有两列PropertyName和PropertyValue。 在.net代码中,我们读取每个键并进行比较并将其转换为强类型对象。代码

  • 本文向大家介绍面向行和面向列的数据库之间的区别,包括了面向行和面向列的数据库之间的区别的使用技巧和注意事项,需要的朋友参考一下 数据存储数据库有两种类型,一种是面向行的数据库,另一种是面向列的数据库。 面向行的数据库是Oracle,MySql等传统数据库。它逐行存储数据,而存储表的常用方法是序列化每一行数据。基于行的系统旨在有效地返回整行或记录的数据。 另一方面,基于列的数据库是“ No SQL”

  • 我想用客户端管理我的heroku数据库。到目前为止,我已经使用实现了这一点。当我使用中的数据使用连接de DB时,我获得: 连接到服务器时出错:致命:数据库“Postgres”的权限被拒绝详细信息:用户没有CONNECT特权。 有关于如何实现连接的指导吗?

  • 我想使用heroku pg:push命令将本地postgresql数据库推送到heroku。命令如下所示: 。 我的应用程序的名称是。我尝试了。输出是: 我很惊讶我没有在数据库中输入任何内容。但我仍然运行heroku pg:reset DATABASE来重置我的数据库。之后,我再次尝试了heroku pg:推送mysitedb数据库——app secure-gorge-4090,但输出仍然相同。

  • 我在Heroku上的应用程序使用数据库URL。这很容易用Java解析为带有用户名和密码的JDBCURL。没有问题。然而,我有一个JOOQ生成器和Flyway migrator,它们有maven插件,我不知道如何将这些插件需要的JDBC URL、用户名和密码输入maven。所以目前我在应用程序启动时做这件事,这并不理想。当我的应用程序启动时,我获取数据库URL,解析它,然后进行flyway迁移和jO

  • 令我惊讶的是,我还没有发现其他地方问过这个问题。简而言之,我正在写一个应用程序,我计划部署到云(可能使用Heroku),它将进行各种网络抓取和数据采集。它将在云中的原因是,这样我就可以将它设置为每天独立运行,并在我的计算机不开机的情况下将数据拉至其数据库,同时团队的其他成员也可以访问数据。 我曾经使用AWS的SimpleDB和DynamoDB,但是我发现SDB的存储限制很小,DDB糟糕的查询能力是