我正在尝试在Heroku上部署一个需要在Redshift集群上执行只读查询的Python / Django应用程序。主要问题是应用程序具有动态IP地址,但Redshift需要将特定IP地址列入白名单。
我希望能够使用psycopg2引擎或AWS SDK(Boto)以编程方式查询集群。一种可能性是使用Heroku附加组件(如Proximo或QuotaGuard Static)来获取静态IP地址,但是:
之前还有其他人处理过这个问题吗?在此先感谢您的帮助!
我可以在本地连接到Redshift,但是一旦将应用程序部署到Heroku上,我该怎么办呢?我尝试过使用Boto3 SDK和静态ip Heroku插件,如QuotaGuard Static或Proximo。
答案 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"