带有 Heroku 数据库的 AWS 数据管道
AWS Data Pipelines with a Heroku Database
我想知道将 AWS Data Pipeline 连接到 Heroku 数据库的可行性。 heroku 数据库存储在 EC2 实例(东部地区)上,并且需要 SSL。
我曾尝试使用 JdbcDatabase
对象打开连接,但每次都遇到 运行 问题。
我试过以下方法:
{
"id" : "heroku_database",
"name" : "heroku_database",
"type" : "JdbcDatabase",
"jdbcDriverClass" : "org.postgresql.Driver",
"connectionString" : "jdbc:postgresql://#{myHerokuDatabaseHost}:#{myHerokuDatabasePort}/#{myHerokuDatabaseName}",
"jdbcProperties": "ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory",
"username" : "#{myHerokuDatabaseUserName}",
"*password" : "#{*myHerokuDatabasePassword}"
},
结果为:
unable to find valid certification path to requested target
ActivityFailed:SunCertPathBuilderException
以及:
{
"id" : "heroku_database",
"name" : "heroku_database",
"type" : "JdbcDatabase",
"jdbcDriverClass" : "org.postgresql.Driver",
"connectionString" : "jdbc:postgresql://#{myHerokuDatabaseHost}:#{myHerokuDatabasePort}/#{myHerokuDatabaseName}",
"jdbcProperties": "sslmode=require",
"username" : "#{myHerokuDatabaseUserName}",
"*password" : "#{*myHerokuDatabasePassword}"
},
结果为:
amazonaws.datapipeline.database.ConnectionFactory: Unable to establish connection to jdbc:postgresql://ec2-54-235-something-something.compute-1.amazonaws.com:5442/redacted FATAL: no pg_hba.conf entry for host "52.13.105.196", user "redacted", database "redacted", SSL off
启动——我还尝试使用 ShellCommandActivity
从 ec2 实例复制 postgres table 并将其标准输出到我的 s3 存储桶——但是 ec2 实例没有理解 psql 命令:
{
"id": "herokuDatabaseDump",
"name": "herokuDatabaseDump",
"type": "ShellCommandActivity",
"runsOn": {
"ref": "Ec2Instance"
},
"stage": "true",
"stdout": "#{myOutputS3Loc}/#{myOutputFileName}",
"command": "PGPASSWORD=#{*myHerokuDatabasePassword} psql -h #{myHerokuDatabaseHost} -U #{myHerokuDatabaseUserName} -d #{myHerokuDatabaseName} -p #{myHerokuDatabasePort} -t -A -F',' -c 'select * #{myHerokuDatabaseTableName}'"
},
而且我也无法预先安装 postgres。
同时拥有 RDS 和 Heroku 作为我们的数据库源真是糟透了。关于如何通过数据管道对 heroku postgres 数据库进行 select 查询 运行 的任何想法都会有很大帮助。谢谢。
看起来像 Heroku needs/wants postgres 42.2.1 驱动程序:https://devcenter.heroku.com/articles/heroku-postgresql#connecting-in-java。或者至少如果你正在编译一个 java 应用程序,那就是他们告诉你使用的东西。
我无法找出 Data Pipeline 默认使用哪个驱动程序,但它允许您使用 jdbcDriverJarUri
并指定自定义驱动程序 jars:https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-jdbcdatabase.html
这里需要注意的是它需要 Java7,因此您将要使用 postgres-42.2.1。jre7.jar:https://jdbc.postgresql.org/download.html
与 sslmode=require
的 jdbcProperties
字段相结合应该允许它通过并创建您正在寻找的转储文件。
我想知道将 AWS Data Pipeline 连接到 Heroku 数据库的可行性。 heroku 数据库存储在 EC2 实例(东部地区)上,并且需要 SSL。
我曾尝试使用 JdbcDatabase
对象打开连接,但每次都遇到 运行 问题。
我试过以下方法:
{
"id" : "heroku_database",
"name" : "heroku_database",
"type" : "JdbcDatabase",
"jdbcDriverClass" : "org.postgresql.Driver",
"connectionString" : "jdbc:postgresql://#{myHerokuDatabaseHost}:#{myHerokuDatabasePort}/#{myHerokuDatabaseName}",
"jdbcProperties": "ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory",
"username" : "#{myHerokuDatabaseUserName}",
"*password" : "#{*myHerokuDatabasePassword}"
},
结果为:
unable to find valid certification path to requested target
ActivityFailed:SunCertPathBuilderException
以及:
{
"id" : "heroku_database",
"name" : "heroku_database",
"type" : "JdbcDatabase",
"jdbcDriverClass" : "org.postgresql.Driver",
"connectionString" : "jdbc:postgresql://#{myHerokuDatabaseHost}:#{myHerokuDatabasePort}/#{myHerokuDatabaseName}",
"jdbcProperties": "sslmode=require",
"username" : "#{myHerokuDatabaseUserName}",
"*password" : "#{*myHerokuDatabasePassword}"
},
结果为:
amazonaws.datapipeline.database.ConnectionFactory: Unable to establish connection to jdbc:postgresql://ec2-54-235-something-something.compute-1.amazonaws.com:5442/redacted FATAL: no pg_hba.conf entry for host "52.13.105.196", user "redacted", database "redacted", SSL off
启动——我还尝试使用 ShellCommandActivity
从 ec2 实例复制 postgres table 并将其标准输出到我的 s3 存储桶——但是 ec2 实例没有理解 psql 命令:
{
"id": "herokuDatabaseDump",
"name": "herokuDatabaseDump",
"type": "ShellCommandActivity",
"runsOn": {
"ref": "Ec2Instance"
},
"stage": "true",
"stdout": "#{myOutputS3Loc}/#{myOutputFileName}",
"command": "PGPASSWORD=#{*myHerokuDatabasePassword} psql -h #{myHerokuDatabaseHost} -U #{myHerokuDatabaseUserName} -d #{myHerokuDatabaseName} -p #{myHerokuDatabasePort} -t -A -F',' -c 'select * #{myHerokuDatabaseTableName}'"
},
而且我也无法预先安装 postgres。
同时拥有 RDS 和 Heroku 作为我们的数据库源真是糟透了。关于如何通过数据管道对 heroku postgres 数据库进行 select 查询 运行 的任何想法都会有很大帮助。谢谢。
看起来像 Heroku needs/wants postgres 42.2.1 驱动程序:https://devcenter.heroku.com/articles/heroku-postgresql#connecting-in-java。或者至少如果你正在编译一个 java 应用程序,那就是他们告诉你使用的东西。
我无法找出 Data Pipeline 默认使用哪个驱动程序,但它允许您使用 jdbcDriverJarUri
并指定自定义驱动程序 jars:https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-jdbcdatabase.html
这里需要注意的是它需要 Java7,因此您将要使用 postgres-42.2.1。jre7.jar:https://jdbc.postgresql.org/download.html
与 sslmode=require
的 jdbcProperties
字段相结合应该允许它通过并创建您正在寻找的转储文件。