将 AWS Postgres RDS Table 导出到 AWS S3

Exporting a AWS Postgres RDS Table to AWS S3

我想使用 AWS Data Pipeline 将数据从 Postgres RDS 通过管道传输到 AWS S3。有人知道这是怎么做到的吗?

更准确地说,我想使用数据管道将 Postgres Table 导出到 AWS S3。我使用 Data Pipeline 的原因是我想自动执行此过程,并且此导出每周 运行 一次。

任何其他建议也可以。

github 上有一个样本。 https://github.com/awslabs/data-pipeline-samples/tree/master/samples/RDStoS3

代码如下: https://github.com/awslabs/data-pipeline-samples/blob/master/samples/RDStoS3/RDStoS3Pipeline.json

我使用 MySQL 和文档作为参考从头开始构建了一个管道。

您需要准备好角色 DataPipelineDefaultResourceRole && DataPipelineDefaultRole。

我还没有加载参数,所以,你需要进入architech,把你的凭据和文件夹。

希望对您有所帮助。

{
  "objects": [
    {
      "failureAndRerunMode": "CASCADE",
      "resourceRole": "DataPipelineDefaultResourceRole",
      "role": "DataPipelineDefaultRole",
      "pipelineLogUri": "#{myS3LogsPath}",
      "scheduleType": "ONDEMAND",
      "name": "Default",
      "id": "Default"
    },
    {
      "database": {
        "ref": "DatabaseId_WC2j5"
      },
      "name": "DefaultSqlDataNode1",
      "id": "SqlDataNodeId_VevnE",
      "type": "SqlDataNode",
      "selectQuery": "#{myRDSSelectQuery}",
      "table": "#{myRDSTable}"
    },
    {
      "*password": "#{*myRDSPassword}",
      "name": "RDS_database",
      "id": "DatabaseId_WC2j5",
      "type": "RdsDatabase",
      "rdsInstanceId": "#{myRDSId}",
      "username": "#{myRDSUsername}"
    },
    {
      "output": {
        "ref": "S3DataNodeId_iYhHx"
      },
      "input": {
        "ref": "SqlDataNodeId_VevnE"
      },
      "name": "DefaultCopyActivity1",
      "runsOn": {
        "ref": "ResourceId_G9GWz"
      },
      "id": "CopyActivityId_CapKO",
      "type": "CopyActivity"
    },
    {
      "dependsOn": {
        "ref": "CopyActivityId_CapKO"
      },
      "filePath": "#{myS3Container}#{format(@scheduledStartTime, 'YYYY-MM-dd-HH-mm-ss')}",
      "name": "DefaultS3DataNode1",
      "id": "S3DataNodeId_iYhHx",
      "type": "S3DataNode"
    },
    {
      "resourceRole": "DataPipelineDefaultResourceRole",
      "role": "DataPipelineDefaultRole",
      "instanceType": "m1.medium",
      "name": "DefaultResource1",
      "id": "ResourceId_G9GWz",
      "type": "Ec2Resource",
      "terminateAfter": "30 Minutes"
    }
  ],
  "parameters": [
  ]
}

您可以在数据管道接口中定义一个副本-activity,以将数据从 Postgres RDS 实例提取到 S3 中。

  1. 创建一个 SqlDataNode 类型的数据节点。指定 table 名称和 select 查询。
  2. 通过指定 RDS 实例 ID(实例 ID 在您的 URL 中,例如 your-instance-id.xxxxx.eu-west-1.rds.amazonaws.com)和用户名来设置数据库连接,密码和数据库名称。
  3. 创建 S3DataNode 类型的数据节点。
  4. 创建副本 activity 并将 SqlDataNode 设置为输入,将 S3DataNode 设置为输出。

另一个选择是使用像 Alooma 这样的外部工具。 Alooma 可以将 table 秒从 PostgreSQL 数据库托管的 Amazon RDS 复制到 Amazon S3 (https://www.alooma.com/integrations/postgresql/s3)。该过程可以自动化,您可以 运行 每周一次。

您现在可以在 postgres 本身中使用 aws_s3.query_export_to_s3 命令执行此操作 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/postgresql-s3-export.html