3

Fondamentalement, je veux pg_dump ma base de données RDS à S3 en utilisant pipeline de données AWS,Est-il possible de vider une base de données RDS vers S3 à l'aide d'AWS Data Pipeline?

Je ne suis pas sûr à 100% si cela est possible, je suis arrivé jusqu'au stade où le SqlDataNode veut un selectQuery à quel point je me demande ce que faire.

ci-dessous est mon modèle jusqu'à présent:

AWSTemplateFormatVersion: "2010-05-15" 

Description: RDS to S3 Dump 

Parameters: 
    RDSInstanceID: 
    Description: "Instance ID of RDS to Dump from" 
    DatabaseName: 
    Description: "Name of the Database to Dump" 
    Type: String 
    Username: 
    Description: "Database Username" 
    Type: String 
    Password: 
    Description: "Database password" 
    Type: String 
    NoEcho: true 

RDSToS3Dump: 
    Type: "AWS::DataPipeline::Pipeline" 
    Properties: 
    Name: "RDSToS3Dump" 
    Description: "Pipeline to backup RDS data to S3" 
    Activate: true 
    ParameterObjects: 
     - 
     name: "SourceRDSTable" 
     type: "SqlDataNode" 
     Database: !Ref DatabaseName 
     - 
     name: !Ref DatabaseName 
     type: "RdsDatabase" 
     databaseName: !Ref DatabaseName 
     username: !Ref Username 
     password: !Ref Password 
     rdsInstanceId: !Ref RDSInstanceID 
     - 
     name: "S3OutputLocation" 
     type: "S3DataNode" 
     filePath: #TODO: S3 Bucket here parameterized? Will actually need to create one. 
     - 
     name: "RDStoS3CopyActivity" 
     type: "CopyActivity" 
     input: "SourceRDSTable" 
     output: "S3OutputLocation" 
     #TODO: do we need a runsOn? 

Répondre

3

Comme mentionné dans une autre réponse, AWS données Pipeline seulement vous permet de vider les tables et non l'ensemble DB. Si vous voulez vraiment utiliser pg_dump pour vider le contenu entier de votre base de données à S3 en utilisant AWS CloudFormation, vous pouvez utiliser Lambda-backed custom resources. En descendant cette route, vous devrez écrire une fonction lambda:

  • Se connecte à la DB
  • prend la décharge de votre DB en utilisant pg_dump
  • Uploads à S3
1

Utilisation de pipeline de données, je crois que vous ne pouvez vider les tables plutôt que l'ensemble db comme avec pg_dump.

Avez-vous regardé les documents en tant que selectQuery, vous n'avez besoin que d'une instruction SQL pour ce que vous voulez sauvegarder, c'est-à-dire "select * from mytable"? Peut-être que cela aide. http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-sqldatanode.html

- 
    name: "SourceRDSTable" 
    type: "SqlDataNode" 
    Database: !Ref DatabaseName 
    table: "mytable" 
    selectQuery: "select * from #{table}"