Exportación de datos de una de Amazon S3 - Amazon Relational Database Service

Exportación de datos de una de Amazon S3

Puede consultar datos de una RDS for PostgreSQL y exportarlos directamente a archivos almacenados en un bucket de Amazon S3. Para ello, primero debe instalar la extensión de RDS para PostgreSQL aws_s3. Esta extensión le proporciona las funciones que utiliza para exportar los resultados de las consultas a Amazon S3. A continuación, puede averiguar cómo instalar la extensión y cómo exportar datos de Amazon S3.

nota

No se ha agregado compatibilidad con la exportación entre cuentas a Amazon S3.

Todas las versiones disponibles actualmente de RDS para PostgreSQL admiten la exportación de datos a Amazon Simple Storage Service. Para obtener información detallada sobre la versión, consulte las actualizaciones de Amazon RDS para PostgreSQL en las notas de la versión de Amazon RDS para PostgreSQL.

Si no tienes un bucket configurado para la exportación, consulta los siguientes temas: Guía del usuario de Amazon Simple Storage Service.

De forma predeterminada, los datos exportados desde RDS para PostgreSQL a Amazon S3 utilizan cifrado del servidor con una Clave administrada de AWS. Si utiliza cifrado de buckets, el bucket de Amazon S3 debe cifrarse con una clave AWS Key Management Service (AWS KMS) (SSE-KMS). En la actualidad, no se admiten buckets cifrados con claves administradas de Amazon S3 (SSE-S3).

nota

Puede guardar datos de instantáneas de base de datos en Amazon S3 mediante la AWS Management Console, la AWS CLI o la API de Amazon RDS. Para obtener más información, consulte Exportación de datos de instantáneas de bases de datos a Amazon S3.

Instalación de la extensión aws_s3

Antes de poder usar Amazon Simple Storage Service con su Instancia de base de datos de RDS para PostgreSQL, debe instalar la extensión aws_s3. Esta extensión proporciona funciones para exportar datos desde una instancia de base de datos de RDS para PostgreSQL a un bucket de Amazon S3. También proporciona funciones para importar datos desde Amazon S3. Para obtener más información, consulte Importación de datos de Amazon S3 en una instancia de base de datos de RDS para PostgreSQL. La extensión aws_s3 depende de algunas de las funciones de ayuda en la extensión de aws_commons, que se instala automáticamente cuando es necesario.

Para instalar la extensión de aws_s3
  1. Utilice psql (o pgAdmin) para conectarse a la instancia de base de datos de RDS para PostgreSQL como usuario que tiene privilegios de rds_superuser. Si mantuvo el nombre predeterminado durante el proceso de configuración, conéctese como postgres.

    psql --host=111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. Para instalar la extensión, ejecute el siguiente comando:

    postgres=> CREATE EXTENSION aws_s3 CASCADE; NOTICE: installing required extension "aws_commons" CREATE EXTENSION
  3. Para comprobar que la extensión está instalada, puede usar el 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)

Ya están disponibles las funciones para importar datos de Amazon S3 y para exportar datos a Amazon S3.

Confirme que su versión de RDS for PostgreSQL admite exportaciones a Amazon S3.

Puede comprobar que su versión de RDS para PostgreSQL admite la exportación a Amazon S3 mediante el comando describe-db-engine-versions. En el siguiente ejemplo se verifica la compatibilidad con la versión 10.14.

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

Si en la salida se recoge la cadena de texto "s3Export", el motor admite las exportaciones de Amazon S3 . Si no es así, el motor no las admite.

Información general de la exportación de datos a Amazon S3

Para exportar datos almacenados en una RDS for PostgreSQL a un bucket de Amazon S3, utilice el siguiente procedimiento.

Para exportar RDS for PostgreSQL datos a S3
  1. Identifique la ruta de archivo de Amazon S3 que se va a utilizar para exportar datos. Para obtener más información sobre este proceso, consulte Especificación de la ruta del archivo de Amazon S3 a exportar.

  2. Conceda permiso para acceder al bucket de Amazon S3.

    Para exportar datos a un archivo de Amazon S3, conceda permiso a la instancia de base de datos de RDS para PostgreSQL para obtener acceso al bucket de Amazon S3 que la exportación usará para el almacenamiento. Esto incluye los siguientes pasos:

    1. Cree una política de IAM que proporcione acceso al bucket de Amazon S3 al que se desea exportar.

    2. Cree un rol de IAM.

    3. Asocie la política que ha creado al rol que ha creado.

    4. Agregue este rol de IAM a la instancia de base de datos.

    Para obtener más información sobre este proceso, consulte Configuración del acceso a un bucket de Amazon S3.

  3. Identifique una consulta de base de datos para obtener los datos. Exporte los datos de consulta llamando a la función aws_s3.query_export_to_s3.

    Después de completar las tareas de preparación anteriores, utilice la función aws_s3.query_export_to_s3 para exportar los resultados de la consulta a Amazon S3. Para obtener más información sobre este proceso, consulte Exportación de datos de consulta mediante la función aws_s3.query_export_to_s3.

Especificación de la ruta del archivo de Amazon S3 a exportar

Especifique la siguiente información para identificar la ubicación de Amazon S3 a la que desea exportar los datos:

  • Nombre de bucket: un bucket es un contenedor para objetos o archivos de Amazon S3.

    Para obtener más información sobre cómo almacenar datos con Amazon S3, consulte Crear un bucket y Ver un objeto en la Guía del usuario de Amazon Simple Storage Service.

  • Ruta del archivo: la ruta del archivo identifica dónde se almacena la exportación en el bucket de Amazon S3. La ruta del archivo consta de lo siguiente:

    • Un prefijo de ruta opcional que identifica una ruta de carpeta virtual.

    • Un prefijo de archivo que identifica uno o varios archivos que se van a almacenar. Las exportaciones más grandes se almacenan en varios archivos, cada uno con un tamaño máximo de aproximadamente 6 GB. Los nombres de archivo adicionales tienen el mismo prefijo de archivo, pero con _partXX anexado. XX representa 2, luego 3, y así sucesivamente.

    Por ejemplo, una ruta de archivo con una carpeta exports y un prefijo de archivo query-1-export es /exports/query-1-export.

  • Región de AWS (opcional): la región de AWS donde se encuentra el bucket de Amazon S3. Si no especifica un valor de región de AWS, Amazon RDS guarda sus archivos en Amazon S3, en la misma región de AWS que la instancia de base de datos de exportación.

    nota

    Actualmente, la región de AWS debe ser la misma región que la del e instancia de base de datos de exportación.

    Para ver una lista de los nombres de regiones de AWS y los valores asociados, consulte Regiones, zonas de disponibilidad y Local Zones.

Para mantener la información del archivo de Amazon S3 acerca de dónde se va a almacenar la exportación, puede utilizar la función aws_commons.create_s3_uri para crear una estructura compuesta aws_commons._s3_uri_1 de la siguiente manera.

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

Más adelante, proporcione este valor s3_uri_1 como un parámetro en la llamada a la función aws_s3.query_export_to_s3. Para ver ejemplos, consulte Exportación de datos de consulta mediante la función aws_s3.query_export_to_s3.