Exportar dados de uma instância de banco de dados do RDS para PostgreSQL para o Amazon S3 - Amazon Relational Database Service

Exportar dados de uma instância de banco de dados do RDS para PostgreSQL para o Amazon S3

Consulte dados em um RDS para PostgreSQL instância de banco de dados e exporte-os diretamente para arquivos armazenados em um bucket do Amazon S3. Para fazer isso, primeiro instale a extensão aws_s3 do RDS para PostgreSQL. Essa extensão fornece as funções usadas para exportar os resultados de consultas para o Amazon S3. A seguir, é possível descobrir como instalar a extensão e exportar dados para o Amazon S3.

nota

A exportação entre contas não é compatível com o Amazon S3.

Todas as versões do RDS para PostgreSQL disponíveis no momento são compatíveis com a exportação de dados do Amazon Simple Storage Service. Para obter informações detalhadas sobre as versões, consulte Atualizações do Amazon RDS para PostgreSQL nas Notas de lançamento do Amazon RDS para PostgreSQL.

Se você não tiver um bucket configurado para sua exportação, consulte os tópicos a seguir no Guia do usuário do Amazon Simple Storage Service.

Por padrão, os dados exportados do RDS para PostgreSQL ao Amazon S3 usam criptografia do lado do servidor com uma Chave gerenciada pela AWS. Se estiver usando a criptografia do bucket, o bucket do Amazon S3 deverá ser criptografado com uma chave do AWS Key Management Service (AWS KMS) (SSE-KMS). No momento, os buckets criptografados com chaves gerenciadas pelo Amazon S3 (SSE-S3) não são compatíveis.

nota

É possível salvar os dados do snapshot do banco de dados no Amazon S3 usando o AWS Management Console, a AWS CLI ou a API do Amazon RDS. Para ter mais informações, consulte Exportação de dados de snapshot de banco de dados para o Amazon S3 para Amazon RDS.

Instalar a extensão aws_s3

Antes de usar o Amazon Simple Storage Service com a sua instância de banco de dados do RDS para PostgreSQL, você precisa instalar a extensão aws_s3. Essa extensão fornece funções para exportar dados de uma instância de banco de dados do RDS para PostgreSQL para um bucket do Amazon S3. Também fornece as funções para importar dados do Amazon S3. Para ter mais informações, consulte Importar dados do Amazon S3 para uma instância de banco de dados do RDS para PostgreSQL. A extensão aws_s3 depende de algumas das funções auxiliares da extensão aws_commons, que é instalada automaticamente quando necessária.

Como instalar a extensão aws_s3
  1. Use psql (ou pgAdmin) para se conectar à instância de banco de dados do RDS para PostgreSQL como um usuário que tem privilégios rds_superuser. Se você manteve o nome padrão durante o processo de configuração, se conectará como postgres.

    psql --host=111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. Para instalar a extensão, execute o comando a seguir.

    postgres=> CREATE EXTENSION aws_s3 CASCADE; NOTICE: installing required extension "aws_commons" CREATE EXTENSION
  3. Para verificar se a extensão está instalada, você pode usar o metacomando psql \dx.

    postgres=> \dx List of installed extensions Name | Version | Schema | Description -------------+---------+------------+--------------------------------------------- aws_commons | 1.2 | public | Common data types across AWS services aws_s3 | 1.1 | public | AWS S3 extension for importing data from S3 plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language (3 rows)

As funções para importar dados do Amazon S3 e exportar dados para o Amazon S3 agora estão disponíveis para uso.

Confira se a sua versão do RDS para PostgreSQL oferece suporte a exportações para o Amazon S3

Você pode verificar se sua versão do RDS para PostgreSQL oferece suporte à exportação para o Amazon S3 usando o comando describe-db-engine-versions. O exemplo a seguir verifica a compatibilidade com a versão 10.14.

aws rds describe-db-engine-versions --region us-east-1 --engine postgres --engine-version 10.14 | grep s3Export

Se a saída incluir a string "s3Export", o mecanismo é compatível com exportações do Amazon S3. Caso contrário, não há compatibilidade.

Visão geral da exportação de dados para o Amazon S3

Para exportar dados armazenados em um banco de dados RDS para PostgreSQL para um bucket do Amazon S3, use o procedimento a seguir.

Para exportar dados do RDS para PostgreSQL para o S3
  1. Identifique um caminho de arquivo do Amazon S3 a ser usado para exportar dados. Para obter detalhes sobre esse processo, consulte Especificar o caminho do arquivo do Amazon S3 para o qual exportar.

  2. Conceda permissão para acessar o bucket do Amazon S3.

    Para exportar dados para um arquivo do Amazon S3, forneça à instância de banco de dados do RDS para PostgreSQL permissão para acessar o bucket do Amazon S3 a ser usado para armazenamento pela exportação. Isso inclui as seguintes etapas:

    1. Crie uma política do IAM que forneça acesso a um bucket do Amazon S3 para o qual você deseja exportar.

    2. Crie uma função do IAM.

    3. Anexe a política criada à função criada.

    4. Adicione esse perfil do IAM à instância de banco de dados.

    Para obter detalhes sobre esse processo, consulte Configurar o acesso a um bucket do Amazon S3.

  3. Identifique uma consulta de banco de dados para obter os dados. Exporte os dados da consulta chamando a função aws_s3.query_export_to_s3.

    Após concluir as tarefas de preparação anteriores, use a função aws_s3.query_export_to_s3 para exportar os resultados da consulta para o Amazon S3. Para obter detalhes sobre esse processo, consulte Exportar dados de consulta usando a função aws_s3.query_export_to_s3.

Especificar o caminho do arquivo do Amazon S3 para o qual exportar

Especifique as seguintes informações para identificar o local no Amazon S3 para o qual deseja exportar dados:

  • Nome do bucket – um bucket é um contêiner para objetos ou arquivos do Amazon S3.

    Para obter mais informações sobre como armazenar dados com o Amazon S3, consulte Como criar um bucket e Visualização de um objeto no Guia do usuário do Amazon Simple Storage Service.

  • Caminho do arquivo – o caminho do arquivo identifica onde a exportação é armazenada no bucket do Amazon S3. O caminho do arquivo consiste no seguinte:

    • Um prefixo de caminho opcional que identifica um caminho de pasta virtual.

    • Um prefixo de arquivo que identifica um ou mais arquivos a serem armazenados. Exportações maiores são armazenadas em vários arquivos, cada um com um tamanho máximo de aproximadamente 6 GB. Os nomes de arquivos adicionais têm o mesmo prefixo de arquivo, mas com o acréscimo de _partXX. O XX representa 2, depois 3 e assim por diante.

    Por exemplo, um caminho de arquivo com uma pasta exports e um prefixo de arquivo query-1-export é /exports/query-1-export.

  • Região da AWS (opcional): a região da AWS onde o bucket do Amazon S3 está localizado. Se você não especificar um valor de região da AWS, o Amazon RDS salvará os arquivos no Amazon S3, na mesma região da AWS que o cluster de banco de dados de exportação.

    nota

    Atualmente, a região AWS deve ser a mesma que a região da instância de Bancos de Dados de exportação .

    Para obter uma listagem de nomes de regiões da AWS e os valores associados, consulte Regiões, zonas de disponibilidade e Local Zones.

Para manter as informações do arquivo do Amazon S3 sobre onde a exportação deve ser armazenada, você pode usar a função aws_commons.create_s3_uri para criar uma estrutura aws_commons._s3_uri_1 composta da seguinte forma.

psql=> SELECT aws_commons.create_s3_uri( 'amzn-s3-demo-bucket', 'sample-filepath', 'us-west-2' ) AS s3_uri_1 \gset

Posteriormente, você fornece esse valor de s3_uri_1 como um parâmetro na chamada para a função aws_s3.query_export_to_s3. Para ver exemplos, consulte Exportar dados de consulta usando a função aws_s3.query_export_to_s3.