Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 指向AWS RDS数据库的Heroku应用程序_Database_Postgresql_Amazon Web Services_Heroku_Amazon Rds - Fatal编程技术网

Database 指向AWS RDS数据库的Heroku应用程序

Database 指向AWS RDS数据库的Heroku应用程序,database,postgresql,amazon-web-services,heroku,amazon-rds,Database,Postgresql,Amazon Web Services,Heroku,Amazon Rds,我需要将我的Heroku应用程序指向我的AWS RDS数据库。我的RDS数据库已启动并正在运行,并且有一个具有0.0.0.0/0访问权限的安全组 目前,我已删除我的Heroku postgreSQL数据库,并尝试将我的Heroku应用程序指向我的RDS数据库。由于某种原因,我的应用程序正在崩溃。我相信我的步骤是在Heroku端设置我的数据库URL 假设我的数据库凭据是: 数据库实例:mydb 数据库名称:mydb 用户:wcronyn 密码 我试过: heroku配置:设置数据库\u URL=p

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

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

假设我的数据库凭据是:

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

我试过:

heroku配置:设置数据库\u URL=postgres://wcronyn:password@mydb.XXXXXXX.us-east-1.rds.amazonaws.com:5432/mydb

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

数据库地址=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数据库并将我的应用程序指向它吗

我找到了如何将heroku应用程序指向AWS RDS数据库。这使我能够拥有一个巨大的数据库,在一年内测试Amazon的免费层,并对我的数据库实例进行更多的定制。这是对@pseudopeach问题的回答(请原谅延迟)

这是一个非常简单的设置。要为Heroky配置RDS,您需要非常了解heroku和AWS

  • AWS侧
  • a) 设置您的区域。选择离您最近的地区,例如美国东部(俄亥俄州)

    b) 然后单击服务选项卡并选择rds

    c) 我有一个db ts micro(我认为这是免费层选项)

    d) rds是否已设置,设置并运行后,单击“实例操作”并查看详细信息

    e) 在这里,您可以查看您的数据库用户名、数据库名、端点(对我来说,这是一个类似于[dbname].[randomstring].us-east-1.rds.amazon.com的url)和端口号。你需要这些东西加上heroku端的db密码

  • 希罗库方面
  • a) 转到heroku.com上的heroku应用程序,然后单击“设置” b) 单击revealconfig变量

    典型的heroku变量如下所示:

    数据库URL xxxxxx

    HEROKU_POSTGRESQL_VIOLET_URL xxxxxx

    朗xxxxxx

    货架环境生产

    RAILS_环境生产

    密钥库xxxxxx

    你需要彻底改变这些

    DATABASE_URL[注意:此更改为另一个长URL–我的URL看起来像是为了便于理解而分解的]

    博士后://

    [db用户名]:

    [您的数据库密码]

    @[终点]:

    [您的数据库端口号]/

    [数据库名称]

    ?sslca=config/amazon-rds-ca-cert.pem

    &sslmode=需要

    &加密=真

    数据库url示例:
    postgres://jdoe:supersecretpassword@mydb.coua7574xvna.us-east-1.rds.amazonaws.com:5432/mydb?sslca=config/amazon-rds-ca-cert.pem&sslmode=require&encrypt=true

    外部数据库amazon-rds-ca-cert.pem

    外部数据库\u CA amazon-rds-CA-cert.pem

    朗(相同)

    机架环境(相同)

    轨道环境(相同)

    RDS_DB_PASS[您的DB密码]

    RDS_DB_端口[您的DB端口号,即5432]

    RDS_读取_DB_NAME[DB NAME]

    RDS_主机[端点url]

    RDS_用户[db用户名]


    这对我很有效,我获得了超过10000行的免费RDS年(我相信这是heroku的免费层限制)。我使用postgreSQL作为我的数据库,所以这些配置可能偏向于postgres

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

    • AWS RDS区域eu-west-2(使用专有网络安全组,而不是数据库 安全组)
    • 博士后9.6
    • Heroku,托管Flask应用程序(例如appname:
      Heroku应用程序阶段
    • 将远程设备添加到Heroku应用程序中的Git(例如远程:
      stage
    • p的数据库URL值ostgresql://username:password@awsrdshost:5432/dbname
    实现这一点大致有四个步骤:

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

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

  • 通过Heroku仪表板,导航到Heroku app stage,转到设置选项卡,然后单击显示配置变量
  • 通过添加
    ?sslrootcert=rds组合ca bundle.pem&sslmode=require
    更新您的数据库\u URL变量。新值现在应该是
    postgresql://username:password@awsrdshost:5432/dbname?sslrootcert=rds组合ca包。pem&sslmode=require
  • 请注意,此答案使用根证书;可能还有您想要的其他选项,在这种情况下,请参阅