Exportación de datos de instantáneas de bases de datos a Amazon S3 para Amazon RDS
Puede exportar datos de instantáneas de bases de datos a un bucket de Amazon S3. El proceso de exportación se ejecuta en segundo plano y no afecta al rendimiento de la base de datos activa.
Al exportar una instantánea de base de datos, Amazon RDS extrae los datos de la instantánea y los almacena en un bucket de Amazon S3. Los datos se almacenan en formato Apache Parquet comprimido y consistente.
Puede exportar todos los tipos de instantáneas de base de datos, como instantáneas manuales, instantáneas del sistema automatizadas o instantáneas creadas por el servicio de AWS Backup. De forma predeterminada, se exportan todos los datos de la instantánea. Sin embargo, también puede optar por exportar conjuntos específicos de bases de datos, esquemas o tablas.
Después de exportar los datos, puede analizar los datos exportados directamente con herramientas como Amazon Athena o Amazon Redshift Spectrum. Para obtener más información sobre cómo utilizar Athena para leer los datos de Parquet, consulte Parquet SerDe en Guía del usuario de Amazon Athena. Para obtener más información sobre cómo utilizar Redshift Spectrum para leer datos de Parquet, vea Uso de COPY con formatos de datos de columnas en la Guía para desarrolladores de bases de datos Amazon Redshift.
Para obtener más información sobre cómo exportar instantáneas de bases de datos a Amazon S3, consulte los siguientes temas.
Temas
Supervisión de las exportaciones de instantáneas para Amazon RDS
Cancelación de una tarea de exportación de instantáneas para Amazon RDS
Mensajes de error para tareas de exportación de Amazon S3 para Amazon RDS
Solución de problemas de errores de permisos de RDS para PostgreSQL
Convenciones de nomenclatura de archivos para exportaciones a Amazon S3 para Amazon RDS
Conversión de datos al exportar a un bucket de Amazon S3 para Amazon RDS
Información general acerca de la exportación de datos de instantáneas
Utilice el siguiente proceso para exportar datos de instantáneas de base de datos a un bucket de Amazon S3. Para obtener más detalles, consulte las siguientes secciones.
-
Identifique la instantánea que desee exportar.
Utilice una instantánea automática o manual ya existente, o bien cree una instantánea manual de una instancia de base de datos o un clúster de base de datos multi-AZ.
-
Configure el acceso al bucket de Amazon S3.
Un bucket es un contenedor de objetos o archivos de Amazon S3. Para proporcionar la información necesario para obtener acceso a un bucket, siga los siguientes pasos:
-
Identifique el bucket de S3 al que se va a exportar la instantánea. El bucket de S3 debe estar en la misma región de AWS que la instantánea. Para obtener más información, consulte Identificación del bucket de Amazon S3 para exportación.
-
Cree un rol de AWS Identity and Access Management (IAM) que conceda a la tarea de exportación de instantáneas acceso al bucket de S3. Para obtener más información, consulte Proporcionar acceso a un bucket de Amazon S3 mediante un rol de IAM.
-
-
Cree una AWS KMS key de cifrado simétrica para el cifrado del lado del servidor. La tarea de exportación de instantáneas utiliza la clave de KMS para configurar el cifrado del lado del servidor de AWS KMS al escribir los datos de exportación en S3.
La política de clave KMS debe incluir los permisos
kms:CreateGrant
ykms:DescribeKey
. Para obtener más información acerca del uso de claves KMS en Amazon RDS, consulte Administración de AWS KMS key.Además, si tiene una instrucción deny en la política de claves KMS, asegúrese de excluir explícitamente la entidad principal del servicio de AWS
export.rds.amazonaws.com
.Puede utilizar una clave de KMS en su cuenta de AWS o puede utilizar una clave KMS en diversas cuentas. Para obtener más información, consulte Uso de una AWS KMS key en diversas cuentas para cifrar las exportaciones de Amazon S3.
-
Exporte la instantánea a Amazon S3 mediante la consola o el comando
start-export-task
de la CLI. Para obtener más información, consulte Exportación de una instantánea de base de datos a un bucket de Amazon S3. -
Para obtener acceso a los datos exportados al bucket de Amazon S3, consulte Carga, descarga y administración de objetos en la Guía del usuario de Amazon Simple Storage Service.
Configuración del acceso a un bucket de Amazon S3
Para exportar los datos de una instantánea de base de datos a un archivo de Amazon S3, primero debe conceder permiso a la instantánea para obtener acceso al bucket de Amazon S3. Luego cree un rol de IAM para permitir que el servicio de Amazon RDS escriba en el bucket de Amazon S3.
Temas
Identificación del bucket de Amazon S3 para exportación
Identifique el bucket de Amazon S3 al que se exportará la instantánea de base de datos. Utilice un bucket de S3 ya existente, o bien cree un bucket S3 nuevo.
nota
El bucket de S3 al que se realizará la exportación debe estar en la misma región de AWS que la instantánea.
Para obtener más información acerca de cómo trabajar con buckets de Amazon S3, consulte lo siguiente en Guía del usuario de Amazon Simple Storage Service:
Proporcionar acceso a un bucket de Amazon S3 mediante un rol de IAM
Antes de exportar datos de instantáneas de bases de datos a Amazon S3, conceda a las tareas de exportación de instantáneas permiso de acceso de escritura al bucket de Amazon S3.
Para conceder este permiso, cree una política de IAM que proporcione acceso al bucket y cree un rol de IAM y adjunte la política al rol. Más adelante, asignará el rol de IAM a la tarea de exportación de instantáneas.
importante
Si prevé utilizar la AWS Management Console para exportar la instantánea, puede elegir crear la política de IAM y el rol automáticamente al exportar la instantánea. Para obtener instrucciones, consulte Exportación de una instantánea de base de datos a un bucket de Amazon S3.
Para dar a las tareas de instantáneas de base de datos acceso a Amazon S3
-
Cree una política de IAM. Esta política proporciona los permisos de bucket y objeto que permiten a la tarea de exportación de instantáneas obtener acceso a Amazon S3.
En la política, incluya las siguientes acciones obligatorias para permitir transferir archivos desde Amazon RDS a un bucket de S3:
-
s3:PutObject*
-
s3:GetObject*
-
s3:ListBucket
-
s3:DeleteObject*
-
s3:GetBucketLocation
En la política, incluya los siguientes recursos para identificar el bucket de S3 y los objetos incluidos en él. En la siguiente lista de recursos se muestra el formato de nombre de recurso de Amazon (ARN) para obtener acceso a Amazon S3.
-
arn:aws:s3:::
amzn-s3-demo-bucket
-
arn:aws:s3:::
amzn-s3-demo-bucket
/*
Para obtener más información sobre cómo crear una política de IAM para Amazon RDS, consulte Creación y uso de una política de IAM para el acceso a bases de datos de IAM. Consulte también el Tutorial: Crear y asociar su primera política administrada por el cliente en la Guía del usuario de IAM.
El siguiente comando de la AWS CLI crea una política de IAM denominada
ExportPolicy
con estas opciones. Otorga acceso a un bucket denominadoamzn-s3-demo-bucket
.nota
Después de crear la política, apunte el ARN de esta. Cuando asocia la política a un rol de IAM, necesita el ARN para realizar un paso posterior.
aws iam create-policy --policy-name ExportPolicy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExportPolicy", "Effect": "Allow", "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::
amzn-s3-demo-bucket
", "arn:aws:s3:::amzn-s3-demo-bucket
/*" ] } ] }' -
-
Cree un rol de IAM que Amazon RDS pueda asumir en su nombre para acceder a sus buckets de Amazon S3. Para obtener más información, vea Crear un rol para delegar permisos a un IAM usuario en Guía del usuario de IAM.
En el siguiente ejemplo se muestra cómo se usa el comando de la AWS CLI para crear un rol denominado
rds-s3-export-role
.aws iam create-role --role-name rds-s3-export-role --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "export.rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
-
Asocie la política de IAM que creó al rol de IAM creado.
El siguiente comando de la AWS CLI asocia la política creada anteriormente al rol denominado
rds-s3-export-role
. Sustituya
por el ARN de la política que ha apuntado en el paso anterior.your-policy-arn
aws iam attach-role-policy --policy-arn
your-policy-arn
--role-name rds-s3-export-role
Uso de un bucket de Amazon S3 en diversas cuentas
Puede utilizar buckets de Amazon S3 en cuentas de AWS. Para utilizar un bucket en diversas cuentas, agregue una política de bucket para permitir el acceso al rol de IAM que está utilizando para las exportaciones de S3. Para obtener más información, consulte el Ejemplo 2: Propietario del bucket que concede permisos de bucket en diversas cuentas.
Adjunte una política de bucket a su bucket, como se muestra en el siguiente ejemplo.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:role/Admin" }, "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket
", "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" ] } ] }
Uso de una AWS KMS key en diversas cuentas para cifrar las exportaciones de Amazon S3
Puede utilizar una AWS KMS key en diversas cuentas para cifrar las exportaciones de Amazon S3. En primer lugar, agregue una política de claves a la cuenta local y, a continuación, agregue las políticas de IAM en la cuenta externa. Para obtener más información, consulte Allowing users in other accounts to use a KMS key (Permitir que los usuarios de otras cuentas utilicen una clave KMS).
Para utilizar una clave KMS en diversas cuentas
-
Agregue una política de claves a la cuenta local.
El siguiente ejemplo proporciona
ExampleRole
yExampleUser
en la cuenta externa 444455556666 permisos en la cuenta local 123456789012.{ "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/ExampleRole", "arn:aws:iam::444455556666:user/ExampleUser" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:RetireGrant" ], "Resource": "*" }
-
Agregar políticas de IAM a la cuenta externa.
La siguiente política de IAM de ejemplo permite a la entidad principal utilizar la clave KMS en la cuenta 123456789012 para operaciones criptográficas. Para conceder este permiso a
ExampleRole
yExampleUser
de la cuenta 444455556666, adjunte la política en esa cuenta.{ "Sid": "Allow use of KMS key in account 123456789012", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:RetireGrant" ], "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }
Exportación de una instantánea de base de datos a un bucket de Amazon S3
Puede tener hasta cinco tareas de exportación de instantáneas de base de datos en curso por Cuenta de AWS.
nota
La exportación de instantáneas de RDS puede tardar un tiempo en función del tipo y tamaño de la base de datos. La tarea de exportación primero restaura y escala toda la base de datos antes de extraer los datos a Amazon S3. El progreso de la tarea durante esta fase se muestra como Starting (Iniciándose). Cuando la tarea cambia a exportar datos a S3, el progreso se muestra como In progress (En curso).
El tiempo que tarda la exportación en completarse depende de los datos almacenados en la base de datos. Por ejemplo, las tablas con columnas de índice o claves primarias numéricas bien distribuidas se exportarán más rápido. Las tablas que no contienen una columna adecuada para la partición y las tablas con un solo índice en una columna basada en cadenas tardarán más tiempo. Este tiempo de exportación más prolongado se produce porque la exportación utiliza un proceso de subproceso único más lento.
Puede exportar una instantánea de base de datos a Amazon S3 mediante la AWS Management Console, la AWS CLI o la API de RDS. Para exportar una instantánea de base de datos a un bucket de Amazon S3 en diversas cuentas, utilice la AWS CLI o la API de RDS.
Si utiliza una función Lambda para exportar una instantánea, agregue la acción kms:DescribeKey
a la política de la función Lambda. Para obtener más información, consulte Permisos de AWS Lambda.
La opción de la consola Export to Amazon S3 (Exportar a Amazon S3) solo aparece para las instantáneas que se pueden exportar a Amazon S3. Es posible que una instantánea no esté disponible para la exportación debido a las siguientes razones:
-
El motor de base de datos no es compatible con la exportación de S3.
-
La versión del motor de base de datos no es compatible con la exportación de S3.
-
La exportación de S3 no se admite en la región de AWS donde se creó la instantánea.
Para exportar una instantánea de base de datos
-
Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/
. -
En el panel de navegación, elija Snapshots (Instantáneas).
-
En las pestañas, elija el tipo de instantánea que desee exportar.
-
En la lista de instantáneas, elija la instantánea que desee exportar.
-
En Actions (Acciones), seleccione Export to Amazon S3 (Exportar a Amazon S3).
Se visualizará la ventana Export to Amazon S3 (Exportar a Amazon S3).
-
En Export Identifier (Identificador de exportación), escriba un nombre para identificar la tarea de exportación. Este valor también se utiliza para el nombre del archivo creado en el bucket de S3.
-
Elija los datos que desea exportar:
-
Seleccione All (Todo) para exportar todos los datos de la instantánea.
-
Seleccione Partial (Parcial) para exportar partes específicas de la instantánea. Para identificar qué partes de la instantánea exportar, introduzca una o más bases de datos, esquemas o tablas para Identifiers (Identificadores), separadas por espacios.
Use el siguiente formato:
database
[.schema
][.table
]database2
[.schema2
][.table2
] ...database
n[.schema
n][.table
n]Por ejemplo:
mydatabase mydatabase2.myschema1 mydatabase2.myschema2.mytable1 mydatabase2.myschema2.mytable2
-
-
Para el S3 bucket (Bucket de S3), elija el bucket al que desee realizar la exportación.
Para asignar los datos exportados a la ruta de una carpeta en el bucket de S3, escriba la ruta opcional para el S3 prefix (Prefijo de S3).
-
Para el rol de IAM, elija un rol que le conceda acceso de escritura al bucket de S3 elegido o cree un nuevo rol.
-
Si ha creado un rol siguiendo los pasos indicados en Proporcionar acceso a un bucket de Amazon S3 mediante un rol de IAM, elija dicho rol.
-
Si no ha creado un rol que le conceda acceso de escritura al bucket de S3 elegido, elija Create a new role (Crear un nuevo rol) para crear el rol automáticamente. A continuación, escriba un nombre para el rol en el IAM role name (Nombre del rol de IAM).
-
-
En AWS KMS key, ingrese el ARN de la clave que debe utilizarse para cifrar los datos exportados.
-
Elija Export to Amazon S3 (Exportar a Amazon S3).
Para exportar una instantánea de base de datos a Amazon S3 mediante la AWS CLI, ejecute el comando start-export-task con las siguientes opciones obligatorias:
-
--export-task-identifier
-
--source-arn
-
--s3-bucket-name
-
--iam-role-arn
-
--kms-key-id
En los siguientes ejemplos, la tarea de exportación de instantáneas se denomina my-snapshot-export
, y exporta una instantánea a un bucket de S3 denominado amzn-s3-demo-bucket
.
Para Linux, macOS o:Unix
aws rds start-export-task \ --export-task-identifier
my-snapshot-export
\ --source-arn arn:aws:rds:AWS_Region
:123456789012:snapshot:snapshot-name
\ --s3-bucket-nameamzn-s3-demo-bucket
\ --iam-role-arniam-role
\ --kms-key-idmy-key
En:Windows
aws rds start-export-task ^ --export-task-identifier
my-snapshot-export
^ --source-arn arn:aws:rds:AWS_Region
:123456789012:snapshot:snapshot-name
^ --s3-bucket-nameamzn-s3-demo-bucket
^ --iam-role-arniam-role
^ --kms-key-idmy-key
A continuación, se muestra un resultado de ejemplo.
{ "Status": "STARTING", "IamRoleArn": "iam-role", "ExportTime": "2019-08-12T01:23:53.109Z", "S3Bucket": "my-export-bucket", "PercentProgress": 0, "KmsKeyId": "my-key", "ExportTaskIdentifier": "my-snapshot-export", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-11-13T19:46:00.173Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot-name" }
Para proporcionar la ruta de una carpeta del bucket S3 para la exportación de instantáneas, incluya la opción --s3-prefix
en el comando start-export-task.
Para exportar una instantánea de base de datos a Amazon S3 con la API de Amazon RDS, ejecute la operación StartExportTask con los siguientes parámetros obligatorios:
-
ExportTaskIdentifier
-
SourceArn
-
S3BucketName
-
IamRoleArn
-
KmsKeyId
Disponibilidad en regiones y versiones
La disponibilidad y compatibilidad de las características varía según las versiones específicas de cada motor de base de datos y entre Regiones de AWS. Para obtener más información sobre la disponibilidad en versiones y regiones de la exportación de instantáneas a S3, consulte Regiones y motores de base de datos admitidos para exportar instantáneas a S3 en Amazon RDS.
Limitaciones
Exportar datos de instantáneas de base de datos a Amazon S3 tiene las siguientes limitaciones:
-
No puede ejecutar varias tareas de exportación para la misma instantánea de base de datos simultáneamente. Esto es cierto para las exportaciones completas y parciales.
-
No se admite la exportación de instantáneas de base de datos que utilizan almacenamiento magnético.
-
Las exportaciones a S3 no admiten prefijos S3 que contengan dos puntos (:).
-
Los siguientes caracteres en la ruta del archivo S3 se convierten en guiones bajos (_) durante la exportación:
\ ` " (space)
-
Si una base de datos, esquema o tabla tiene caracteres en su nombre distintos del siguiente, no se admite la exportación parcial. Sin embargo, puede exportar toda la instantánea de base de datos.
-
Letras latinas (A–Z)
-
Dígitos (0–9)
-
Símbolo de dólar ($)
-
Guion bajo (_)
-
-
No se admiten espacios ( ) ni determinados caracteres en los nombres de columna de las tablas de bases de datos. Las tablas con los siguientes caracteres en los nombres de columna se omiten durante la exportación:
, ; { } ( ) \n \t = (space)
-
Las tablas con barras diagonales (/) en el nombre se omiten durante la exportación.
-
Las tablas temporales y no registradas de RDS para PostgreSQL se omiten durante la exportación.
-
Si los datos contienen un objeto grande, como un BLOB o CLOB, cercano o superior a 500 MB, se producirá un error en la exportación.
-
Si una tabla contiene una fila grande cercana o superior a 2 GB, la tabla se omite durante la exportación.
-
Para exportaciones parciales, la lista
ExportOnly
tiene un tamaño máximo de 200 KB. -
Es muy recomendable que utilice un nombre exclusivo para cada tarea de exportación. Si no utiliza un nombre de tarea exclusivo, es posible que aparezca el siguiente mensaje de error como el que sigue:
exportTaskAlreadyExistsFault: Se ha producido un error (exportTaskAlReadyExists) al llamar a la operación StartExportTask: la tarea de exportación con ID
xxxxx
ya existe. -
Puede eliminar una instantánea mientras exporta los datos a S3, pero se le seguirán cobrando los costos de almacenamiento de esa instantánea hasta que se complete la tarea de exportación.
-
No puede restaurar los datos de instantáneas exportados de S3 a una nueva instancia de base de datos ni importar datos de instantáneas de S3 a una instancia de base de datos existente.
-
Puede tener hasta cinco tareas de exportación de instantáneas de base de datos en curso por Cuenta de AWS.
-
Para exportar una instantánea de base de datos a un bucket de Amazon S3 en diversas cuentas, debe usar la AWS CLI o la API de RDS.