使用Django在Heroku上的Redshift连接

时间:2016-01-20 15:41:08

标签: python django database psycopg2 amazon-redshift

我正在尝试在Heroku上部署一个需要在Redshift集群上执行只读查询的Python / Django应用程序。主要问题是应用程序具有动态IP地址,但Redshift需要将特定IP地址列入白名单

我希望能够使用psycopg2引擎或AWS SDK(Boto)以编程方式查询集群。一种可能性是使用Heroku附加组件(如Proximo或QuotaGuard Static)来获取静态IP地址,但是:

  1. 希望通过这些加载项路由所有流量 - 只有Redshift查询
  2. 我不知道如何包装'数据库通过这些服务查询
  3. 之前还有其他人处理过这个问题吗?在此先感谢您的帮助!

    我可以在本地连接到Redshift,但是一旦将应用程序部署到Heroku上,我该怎么办呢?我尝试过使用Boto3 SDK和静态ip Heroku插件,如QuotaGuard Static或Proximo。

1 个答案:

答案 0 :(得分:1)

我能够通过使用Proximo add来解决这个问题:

https://devcenter.heroku.com/articles/proximo#provisioning-the-proximo-add-on

为了仅路由Redshift查询,我使用了此处描述的Proximo掩码:

https://devcenter.heroku.com/articles/proximo#configuring-the-proximo-wrapper

<强>被修改

配置Proximo附加组件

$ heroku addons:create proximo:development
$ heroku config | grep PROXIMO_URL
$ heroku addons:create proximo:development

安装Proximo包装器

cd ~/myapp
$ curl http://downloads.proximo.io/proximo-stacklet.tgz | tar xz
$ git add bin/proximo vendor/dante
$ git commit -m "add proximo stacklet"

修改您的Procfile以将bin / proximo预先添加到您希望通过代理转发其连接的任何命令: web:bin / proximo [您现有的命令]

使用Proximo遮罩:

默认情况下,bin / proximo包装器将在您的代理中转发包装进程的所有出站流量。如果您只想发送一部分流量,可以使用PROXIMO_MASK进行限制:

heroku config:set PROXIMO_MASK="172.18.32.0/24"