Exportation de données d'instantanés de bases de données vers Amazon S3 - Amazon Relational Database Service

Exportation de données d'instantanés de bases de données vers Amazon S3

Vous pouvez exporter des données d'instantanés de bases de données vers un compartiment Amazon S3. Le processus d'exportation s'exécute en arrière-plan et n'affecte pas les performances de votre instance de base de données active.

Lorsque vous exportez un instantané de base de données, Amazon RDS extrait les données de l'instantané et les stocke dans un compartiment Amazon S3. Les données sont stockées dans un format Apache Parquet qui est compressé et cohérent.

Vous pouvez exporter tous les types d'instantanés de bases de données, à savoir, les instantanés manuels, les instantanés système automatisés et les instantanés créés par le service AWS Backup. Par défaut, toutes les données de l'instantané sont exportées. Toutefois, vous pouvez choisir d'exporter des ensembles spécifiques de bases de données, de schémas ou de tables.

Une fois les données exportées, vous pouvez les analyser directement via des outils tels que Amazon Athena ou Amazon Redshift Spectrum. Pour plus d'informations sur l'utilisation Athena de la lecture des données de parquet, consultez Parquet SerDe dans le Amazon Athena Guide de l'utilisateur. Pour plus d'informations sur l'utilisation de Redshift Spectrum pour lire des données Parquet, consultez COPY depuis les formats de données en colonnes dans le Guide du développeur de base de données Amazon Redshift.

Amazon RDS prend en charge l'exportation d'instantanés dans toutes les régions AWS, à l'exception des suivantes :

  • Asie-Pacifique (Jakarta)

  • AWS GovCloud (US-East)

  • AWS GovCloud (US-West)

Les tableaux suivants indiquent les versions du moteur prises en charge pour l'exportation de données d'instantanés vers Amazon S3.

MariaDB MySQL PostgreSQL

10.6

10.5

10.4

10.3

10.2.12 et plus

8.0.13 et plus

5.7.24 et plus

5.6.40 et plus

Toutes les versions 12, 13 et 14

11.2 et plus

10.7 et plus

De 9.6.6 à 9.6.9, 9.6.12 et plus

Pour obtenir la liste complète des versions de moteur prises en charge par Amazon RDS, veuillez consulter les rubriques suivantes :

Limites

L'exportation de données d'instantané de bases de données vers Amazon S3 présente les limites suivantes :

  • L'exportation d'instantanés à partir d'instances de base de données qui utilisent le stockage magnétique n'est pas prise en charge.

  • Si une base de données, un schéma ou une table comporte des caractères autres que les suivants, l'exportation partielle n'est pas prise en charge. Toutefois, vous pouvez exporter l'intégralité de l'instantané de base de données.

    • Lettres latines (A–Z)

    • Chiffres (0–9)

    • Symbole dollar ($)

    • Trait de soulignement (_)

  • Les espaces ( ) et certains caractères ne sont pas pris en charge dans les noms de colonnes des tables de base de données. Les tables dont les noms de colonnes contiennent les caractères suivants sont ignorées lors de l'exportation :

    , ; { } ( ) \n \t = (space)
  • Si les données contiennent un objet volumineux tel qu'un objet BLOB ou CLOB proche de ou supérieur à 500 Mo, l'exportation échoue.

  • Si une table contient une grande ligne proche de ou supérieure à 2 Go, la table est ignorée lors de l'exportation.

  • Nous vous recommandons vivement d'utiliser un nom unique pour chaque tâche d'exportation. Si vous n'utilisez pas un nom de tâche unique, vous risquez de recevoir le message d'erreur suivant :

    ExportTaskAlreadyExistsFault: An error occurred (ExportTaskAlreadyExists) when calling the StartExportTask operation: The export task with the ID xxxxx already exists (ExportTaskAlreadyExistsFault : une erreur s'est produite (ExportTaskAlreadyExists) lors de l'appel de l'opération StartExportTask : la tâche d'exportation avec l'ID xxxxx existe déjà).

Présentation de l'exportation des données d'instantané

Vous utilisez le processus suivant pour exporter des données d'instantané de base de données vers un compartiment Amazon S3. Pour plus de détails, consultez les sections suivantes.

  1. Identifiez l'instantané à exporter.

    Utilisez un instantané automatisé ou manuel existant ou créez un instantané manuel d'une instance de base de données.

  2. Configurez l'accès au compartiment Amazon S3.

    Un compartiment est un conteneur d'objets ou de fichiers Amazon S3. Pour fournir les informations permettant d'accéder à un compartiment, procédez comme suit :

    1. Identifiez le compartiment S3 vers lequel l'instantané doit être exporté. Le compartiment S3 doit se situer dans la même région AWS que l'instantané. Pour plus d'informations, consultez Identification du compartiment Amazon S3 pour l'exportation.

    2. Créez un rôle AWS Identity and Access Management (IAM) qui accorde à la tâche d'exportation d'instantané l'accès au compartiment S3. Pour plus d'informations, consultez Fournir l'accès à un compartiment Amazon S3 à l'aide d'un rôle IAM.

  3. Créez un chiffrement symétrique AWS KMS key pour le chiffrement côté serveur. La clé KMS est utilisée par la tâche d'exportation de l'instantané pour configurer le chiffrement côté serveur AWS KMS lors de l'écriture des données d'exportation dans S3. Pour plus d'informations, consultez Chiffrement des ressources Amazon RDS.

    La clé KMS est également utilisée pour le chiffrement des disques locaux au repos sur Amazon EC2. En outre, si vous avez une instruction de refus dans votre politique de clé KMS, veillez à exclure explicitement le AWS du principal du service export.rds.amazonaws.com.

    Vous pouvez utiliser une clé KMS dans votre compte AWS ou une clé KMS entre comptes. Pour plus d'informations, consultez Utilisation d'une AWS KMS key entre comptes pour chiffrer les exportations Amazon S3.

  4. Exportez l'instantané vers Amazon S3 à l'aide de la console ou de la commande de CLI start-export-task. Pour plus d'informations, consultez Exportation d'un instantané vers un compartiment Amazon S3.

  5. Pour accéder aux données exportées dans le compartiment Amazon S3, consultez Chargement, téléchargement et gestion d'objets dans le Guide de l'utilisateur Amazon Simple Storage Service.

Configuration de l'accès à un compartiment Amazon S3

Pour exporter des données d'instantané de base de données vers un fichier Amazon S3, vous accordez d'abord à l'instantané l'autorisation d'accéder au compartiment Amazon S3. Vous créez ensuite un rôle IAM pour autoriser le service Amazon RDS à écrire dans le compartiment Amazon S3.

Identification du compartiment Amazon S3 pour l'exportation

Identifiez le compartiment Amazon S3 vers lequel exporter l'instantané de base de données. Utilisez un compartiment S3 existant ou créez un nouveau compartiment S3.

Note

Le compartiment S3 vers lequel effectuer l'exportation doit se trouver dans la même région AWS que l'instantané.

Pour plus d'informations sur l'utilisation des Amazon S3 compartiments, veuillez consulter les points suivants dans le Guide de l'utilisateur Amazon Simple Storage Service :

Fournir l'accès à un compartiment Amazon S3 à l'aide d'un rôle IAM

Avant d'exporter les données d'instantané de base de données vers Amazon S3, vous devez accorder aux tâches d'exportation d'instantané une autorisation d'accès en écriture au compartiment Amazon S3.

Pour ce faire, créez une politique IAM qui donne accès au compartiment. Créez ensuite un rôle IAM et attachez la politique à ce rôle. Vous affectez ultérieurement le rôle IAM à votre tâche d'exportation d'instantané.

Important

Si vous prévoyez d'utiliser l'AWS Management Console pour exporter votre instantané, vous pouvez choisir de créer automatiquement la politique et le rôle lors de ladite exportation. Pour obtenir des instructions, consultez Exportation d'un instantané vers un compartiment Amazon S3.

Pour accorder aux tâches d'instantané de base de données l'accès à Amazon S3

  1. Créez une politique IAM. Cette politique fournit les autorisations d'accès au compartiment et aux objets qui permettent à votre tâche d'exportation d'instantané d'accéder à Amazon S3.

    Incluez dans la politique les actions obligatoires suivantes pour permettre le transfert de fichiers depuis Amazon RDS vers un compartiment S3.

    • s3:PutObject*

    • s3:GetObject*

    • s3:ListBucket

    • s3:DeleteObject*

    • s3:GetBucketLocation

    Incluez dans la politique les ressources suivantes pour identifier le compartiment S3 et les objets qu'il contient. La liste de ressources suivante indique le format Amazon Resource Name (ARN) pour l'accès à Amazon S3.

    • arn:aws:s3:::your-s3-bucket

    • arn:aws:s3:::your-s3-bucket/*

    Pour plus d'informations sur la création d'une politique IAM pour Amazon RDS, veuillez consulter Création et utilisation d'une politique IAM pour l'accès à une base de données IAM. Consultez également Didacticiel : création et attachement de votre première politique gérée par le client dans le Guide de l'utilisateur IAM.

    La commande AWS CLI suivante crée une stratégie IAM nommée ExportPolicy avec ces options. Elle accorde un accès à un compartiment nommé your-s3-bucket.

    Note

    Après avoir créé la politique, notez son ARN. Vous en aurez besoin par la suite pour attacher la politique à un rôle IAM.

    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:::your-s3-bucket", "arn:aws:s3:::your-s3-bucket/*" ] } ] }'
  2. Créez un rôle IAM. L'objectif est ici de permettre à Amazon RDS d'endosser ce rôle IAM en votre nom pour accéder à vos compartiments Amazon S3. Pour plus d'informations, veuillez consulter Création d'un rôle pour déléguer des autorisations à un utilisateur IAM dans le Guide de l'utilisateur IAM.

    L'exemple suivant montre comment utiliser la commande AWS CLI pour créer un rôle nommé 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" } ] }'
  3. Attachez la politique IAM que vous avez créée au rôle IAM que vous venez de créer.

    La commande d'AWS CLI suivante attache la stratégie créée précédemment au rôle nommé rds-s3-export-role. Remplacez your-policy-arn par l'ARN de stratégie que vous avez noté lors d'une étape précédente.

    aws iam attach-role-policy --policy-arn your-policy-arn --role-name rds-s3-export-role

Utilisation d'un compartiment Amazon S3 entre comptes

Vous pouvez utiliser les compartiments Amazon S3 entre comptes AWS. Pour utiliser un compartiment entre comptes, ajoutez une politique de compartiment afin d'autoriser l'accès au rôle IAM que vous utilisez pour les exportations S3. Pour plus d'informations, consultez Exemple 2 : propriétaire d'un compartiment accordant à ses utilisateurs des autorisations entre comptes sur un compartiment.

  • Attachez une politique de compartiment à votre compartiment, comme illustré dans l'exemple suivant.

    { "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:::mycrossaccountbucket", "arn:aws:s3:::mycrossaccountbucket/*" ] } ] }

Utilisation d'une AWS KMS key entre comptes pour chiffrer les exportations Amazon S3

Vous pouvez utiliser une AWS KMS key entre comptes pour chiffrer les exportations Amazon S3 Tout d'abord, vous ajoutez une politique de clé au compte local, puis vous ajoutez des politiques IAM au compte externe. Pour plus d'informations, consultez la section Autorisation des utilisateurs d'autres comptes à utiliser une clé KMS.

Pour utiliser une clé KMS entre comptes

  1. Ajoutez une politique de clé au compte local.

    L'exemple suivant accorde ExampleRole et ExampleUser dans les autorisations 444455556666 du compte externe dans le compte 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": "*" }
  2. Ajoutez des politiques IAM au compte externe.

    L'exemple de stratégie IAM suivant autorise le principal à utiliser la clé KMS dans le compte 123456789012 pour les opérations cryptographiques. Pour accorder cette autorisation aux ExampleRole et ExampleUser du compte 444455556666, attachez-leur la politique dans ce compte.

    { "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" }

Exportation d'un instantané vers un compartiment Amazon S3

Vous pouvez avoir jusqu'à cinq tâches d'exportation d'instantané de base de données simultanées en cours par compte.

Note

L'exportation d'instantanés RDS peut prendre un certain temps en fonction du type et de la taille de votre base de données. La tâche d'exportation commence par restaurer et mettre à l'échelle l'ensemble de la base de données avant d'extraire les données vers Amazon S3. La progression de la tâche au cours de cette phase s'affiche sous l'intitulé Starting. Lorsque la tâche passe à l'exportation de données vers S3, la progression affiche l'intitulé En cours.

La durée nécessaire à l'exportation dépend des données stockées dans la base de données. Par exemple, l'exportation des tables comportant des colonnes numériques d'index ou de clé primaire bien distribuées est la plus rapide. L'opération prend plus de temps pour les tables qui ne contiennent pas de colonne adaptée au partitionnement et les tables avec un seul index sur une colonne basée sur une chaîne. Ce délai d'exportation est plus long car l'exportation utilise un processus à thread unique plus lent.

Vous pouvez exporter un instantané de base de données vers Amazon S3 à l'aide de l'AWS Management Console, de l'AWS CLI ou de l'API RDS.

Si vous utilisez une fonction Lambda pour exporter un instantané, ajoutez l'action kms:DescribeKey à la stratégie de fonction Lambda. Pour plus d'informations, consultez Autorisations AWS Lambda.

L'option de console Exporter vers Amazon S3 s'affiche uniquement pour les instantanés pouvant être exportés vers Amazon S3. Un instantané peut ne pas être disponible pour l'exportation pour les raisons suivantes :

  • Le moteur de base de données n'est pas pris en charge pour l'exportation S3.

  • La version de l'instance de base de données n'est pas prise en charge pour l'exportation S3.

  • L'exportation S3 n'est pas prise en charge dans la région AWS où l'instantané a été créé.

Pour exporter un instantané de base de données

  1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon RDS à l'adresse https://console.aws.amazon.com/rds/.

  2. Dans le panneau de navigation, choisissez Snapshots.

  3. Dans les onglets, choisissez le type d'instantané que vous souhaitez exporter.

  4. Dans la liste des instantanés, choisissez celui que vous souhaitez exporter.

  5. Pour actions, choisissez Export to Amazon S3 (Exporter vers Amazon S3).

    La fenêtre Export to Amazon S3 (Exporter vers Amazon S3) apparaît.

  6. Dans Export Identifier (Identifiant d'exportation), entrez un nom pour identifier la tâche d'exportation. Cette valeur est également utilisée pour le nom du fichier créé dans le compartiment S3.

  7. Choisissez les données à exporter :

    • Choisissez All (Tout) pour exporter toutes les données de l'instantané.

    • Choisissez Partial (Partiel) pour exporter des parties spécifiques de l'instantané. Pour identifier les parties de l'instantané à exporter, entrez un(e) ou plusieurs bases de données, schémas ou tables pour Identifiers (Identifiants), séparés par des espaces.

      Utilisez le format suivant :

      database[.schema][.table] database2[.schema2][.table2] ... databasen[.scheman][.tablen]

      Exemples :

      mydatabase mydatabase2.myschema1 mydatabase2.myschema2.mytable1 mydatabase2.myschema2.mytable2
  8. Pour S3 bucket (Compartiment S3), choisissez le compartiment vers lequel exporter.

    Pour affecter les données exportées à un chemin d'accès de dossier dans le compartiment S3, entrez le chemin d'accès facultatif pour S3 prefix (Préfixe S3).

  9. Pour Rôle IAM, choisissez un rôle qui vous accorde un accès en écriture au compartiment S3 choisi, ou créez un nouveau rôle.

    • Si vous avez créé un rôle en suivant les étapes décrites dans Fournir l'accès à un compartiment Amazon S3 à l'aide d'un rôle IAM, choisissez ce rôle.

    • Si vous n'avez pas créé un rôle qui vous accorde un accès en écriture au compartiment S3 choisi, choisissez Créer un nouveau rôle pour créer le rôle automatiquement. Ensuite, saisissez un nom pour le rôle dans Nom du rôle IAM.

  10. Pour AWS KMS key, entrez l'ARN de la clé à utiliser pour chiffrer les données exportées.

  11. Choisissez Export to Amazon S3 (Exporter vers Amazon S3).

Pour exporter un instantané de base de données vers Amazon S3 à l'aide de l'AWS CLI, utilisez la commande start-export-task avec les options requises suivantes :

  • --export-task-identifier

  • --source-arn

  • --s3-bucket-name

  • --iam-role-arn

  • --kms-key-id

Dans les exemples suivants, la tâche d'exportation d'instantané est nommée my_snapshot_export. Elle exporte un instantané vers un compartiment S3 nommé my_export_bucket.

Pour Linux, macOS ou 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-name my-export-bucket \ --iam-role-arn iam-role \ --kms-key-id my-key

Pour 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-name my-export-bucket ^ --iam-role-arn iam-role ^ --kms-key-id my-key

Vous trouverez ci-après un exemple de sortie.

{ "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" }

Pour fournir un chemin de dossier dans le compartiment S3 pour l'exportation d'instantané, incluez l'option --s3-prefix dans la commande start-export-task .

Pour exporter un instantané de base de données vers Amazon S3 à l'aide de l'API Amazon RDS, utilisez l'opération StartExportTask avec les paramètres requis suivants :

  • ExportTaskIdentifier

  • SourceArn

  • S3BucketName

  • IamRoleArn

  • KmsKeyId

Surveillance des exportations d'instantanés

Vous pouvez surveiller les exportations d'instantanés de bases de données à l'aide de l'AWS Management Console, de l'AWS CLI ou de l'API RDS.

Pour surveiller les exportations d'instantanés de bases de données

  1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon RDS à l'adresse https://console.aws.amazon.com/rds/.

  2. Dans le panneau de navigation, choisissez Snapshots.

  3. Pour afficher la liste des exportations d'instantanés, choisissez l'onglet Exportations dans Amazon S3.

  4. Pour afficher des informations sur une exportation d'instantané spécifique, choisissez la tâche d'exportation.

Pour surveiller les exportations d'instantanés de bases de données à l'aide de l'AWS CLI, utilisez la commande describe-export-tasks .

L'exemple suivant montre comment afficher les informations actuelles sur toutes vos exportations d'instantanés.

aws rds describe-export-tasks { "ExportTasks": [ { "Status": "CANCELED", "TaskEndTime": "2019-11-01T17:36:46.961Z", "S3Prefix": "something", "ExportTime": "2019-10-24T20:23:48.364Z", "S3Bucket": "examplebucket", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY", "ExportTaskIdentifier": "anewtest", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-10-25T19:10:58.885Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:parameter-groups-test" }, { "Status": "COMPLETE", "TaskEndTime": "2019-10-31T21:37:28.312Z", "WarningMessage": "{\"skippedTables\":[],\"skippedObjectives\":[],\"general\":[{\"reason\":\"FAILED_TO_EXTRACT_TABLES_LIST_FOR_DATABASE\"}]}", "S3Prefix": "", "ExportTime": "2019-10-31T06:44:53.452Z", "S3Bucket": "examplebucket1", "PercentProgress": 100, "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "ExportTaskIdentifier": "thursday-events-test", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 263, "TaskStartTime": "2019-10-31T20:58:06.998Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:rds:example-1-2019-10-31-06-44" }, { "Status": "FAILED", "TaskEndTime": "2019-10-31T02:12:36.409Z", "FailureCause": "The S3 bucket edgcuc-export isn't located in the current AWS Region. Please, review your S3 bucket name and retry the export.", "S3Prefix": "", "ExportTime": "2019-10-30T06:45:04.526Z", "S3Bucket": "examplebucket2", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "ExportTaskIdentifier": "wednesday-afternoon-test", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-10-30T22:43:40.034Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:rds:example-1-2019-10-30-06-45" } ] }

Pour afficher des informations sur une exportation d'instantané spécifique, incluez l'option --export-task-identifier avec la commande describe-export-tasks. Pour filtrer la sortie, incluez l'option --Filters. Pour plus d'options, veuillez consulter la commande describe-export-tasks .

Pour afficher des informations sur les exportations d'instantanés de bases de données à l'aide de l'API Amazon RDS, utilisez l'opération DescribeExportTasks .

Pour suivre l'achèvement du workflow d'exportation ou pour déclencher un autre workflow, vous pouvez vous abonner à des rubriques Amazon Simple Notification Service. Pour plus d'informations sur Amazon SNS, consultez Utiliser la notification d'événements d'Amazon RDS.

Annulation d'une tâche d'exportation d'instantané

Vous pouvez annuler une tâche d'exportation d'instantané de base de données à l'aide de l'AWS Management Console, de l'AWS CLI ou de l'API RDS.

Note

L'annulation d'une tâche d'exportation d'instantané ne supprime aucune des données exportées vers Amazon S3. Pour plus d'informations sur la suppression des données à l'aide de la console, veuillez consulter Comment supprimer des objets d'un compartiment S3 ?. Pour supprimer les données à l'aide de la CLI, utilisez la commande delete-object.

Pour annuler une tâche d'importation d'instantané

  1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon RDS à l'adresse https://console.aws.amazon.com/rds/.

  2. Dans le panneau de navigation, choisissez Snapshots.

  3. Choisissez l'onglet Exports in Amazon S3 (Exportations dans Amazon S3) .

  4. Choisissez la tâche d'exportation d'instantané que vous souhaitez annuler.

  5. Choisissez Cancel (Annuler).

  6. Choisissez Cancel export task (Annuler la tâche d'exportation) sur la page de confirmation.

Pour annuler une tâche d'exportation d'instantané à l'aide de l'AWS CLI, utilisez la commande cancel-export-task. La commande requiert l'option --export-task-identifier.

aws rds cancel-export-task --export-task-identifier my_export { "Status": "CANCELING", "S3Prefix": "", "ExportTime": "2019-08-12T01:23:53.109Z", "S3Bucket": "examplebucket", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY", "ExportTaskIdentifier": "my_export", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-11-13T19:46:00.173Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:export-example-1" }

Pour annuler une tâche d'exportation d'instantané à l'aide de l'API Amazon RDS, utilisez l'opération CancelExportTask avec le paramètre ExportTaskIdentifier.

Messages d'échec relatifs aux tâches d'exportation Amazon S3

Le tableau suivant décrit les messages renvoyés en cas d'échec des tâches d'exportation Amazon S3.

Message d'échec Description
Une erreur interne inconnue s'est produite.

La tâche a échoué en raison d'une erreur inconnue, d'une exception ou d'un échec.

Une erreur interne inconnue s'est produite lors de l'écriture des métadonnées de la tâche d'exportation dans le compartiment S3 [nom du compartiment].

La tâche a échoué en raison d'une erreur inconnue, d'une exception ou d'un échec.

L'exportation RDS n'a pas réussi à écrire les métadonnées de la tâche d'exportation, car elle ne peut pas assumer le rôle IAM [ARN du rôle].

La tâche d'exportation assume votre rôle IAM pour vérifier si elle est autorisée à écrire des métadonnées dans votre compartiment S3. Si la tâche ne peut pas assumer votre rôle IAM, elle échoue.

L'exportation RDS n'a pas réussi à écrire les métadonnées de la tâche d'exportation dans le compartiment S3 [nom du compartiment] à l'aide du rôle IAM [ARN du rôle] avec la clé KMS [ID de la clé]. Code d'erreur : [code d'erreur]

Une ou plusieurs autorisations sont manquantes et dès lors, la tâche d'exportation ne peut pas accéder au compartiment S3. Ce message d'échec est généré lors de la réception de l'un des éléments suivants :

  • AWSSecurityTokenServiceException avec le code d'erreur AccessDenied

  • AmazonS3Exception avec le code d'erreur NoSuchBucket, AccessDenied, KMS.KMSInvalidStateException, 403 Forbidden ou KMS.DisabledException

Cela signifie qu'il existe des paramètres mal configurés entre le rôle IAM, le compartiment S3 ou la clé KMS.

Le rôle IAM [ARN du rôle] n'est pas autorisé à appeler [action S3] sur le compartiment S3 [nom du compartiment]. Examinez vos autorisations et retentez l'exportation.

La politique IAM est mal configurée. L'autorisation correspondant à l'action S3 spécifique sur le compartiment S3 est manquante. Cela entraîne l'échec de la tâche d'exportation.

La vérification de la clé KMS a échoué. Vérifiez les informations d'identification de votre clé KMS et réessayez. La vérification des informations d'identification de clé KMS a échoué.
La vérification des informations d'identification S3 a échoué. Vérifiez les autorisations de votre compartiment S3 et de la politique IAM. La vérification des informations d'identification S3 a échoué.
Le compartiment S3 [nom du compartiment] n'est pas valide. Il n'est peut-être pas situé dans la région AWS actuelle ou il n'existe pas. Vérifiez le nom de votre compartiment S3 et retentez l'exportation. Le compartiment S3 n'est pas valide.
Le compartiment S3 [nom du compartiment] ne se trouve pas dans la région AWS actuelle. Vérifiez le nom de votre compartiment S3 et retentez l'exportation. Le compartiment S3 ne se trouve pas dans la bonne région AWS.

Dépannage des erreurs d'autorisations PostgreSQL

Lors de l'exportation de bases de données PostgreSQL vers Amazon S3, vous pouvez voir une erreur PERMISSIONS_DO_NOT_EXIST indiquant que certaines tables ont été ignorées. Cela est généralement dû au superutilisateur, que vous spécifiez lors de la création de l'instance de base de données, qui n'a pas les autorisations d'accéder à ces tables.

Pour corriger cette erreur, exécutez la commande suivante :

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA schema_name TO superuser_name

Pour plus d'informations sur les privilèges des superutilisateurs, veuillez consulter Privilèges du compte utilisateur principal.

Convention de dénomination de fichiers

Les données exportées pour des tables spécifiques sont stockées au format base_prefix/files, qui utilise le préfixe de base suivant :

export_identifier/database_name/schema_name.table_name/

Par exemple :

export-1234567890123-459/rdststdb/rdststdb.DataInsert_7ADB5D19965123A2/

Il existe deux conventions de dénomination des fichiers. La convention actuelle est la suivante :

partition_index/part-00000-random_uuid.format-based_extension

Par exemple :

1/part-00000-c5a881bb-58ff-4ee6-1111-b41ecff340a3-c000.gz.parquet 2/part-00000-d7a881cc-88cc-5ab7-2222-c41ecab340a4-c000.gz.parquet 3/part-00000-f5a991ab-59aa-7fa6-3333-d41eccd340a7-c000.gz.parquet

L'ancienne convention est la suivante :

part-partition_index-random_uuid.format-based_extension

Par exemple :

part-00000-c5a881bb-58ff-4ee6-1111-b41ecff340a3-c000.gz.parquet part-00001-d7a881cc-88cc-5ab7-2222-c41ecab340a4-c000.gz.parquet part-00002-f5a991ab-59aa-7fa6-3333-d41eccd340a7-c000.gz.parquet

La convention de dénomination de fichiers est sujette à modification. Par conséquent, lors de la lecture des tables cibles, nous vous conseillons de lire tout ce qui se trouve à l'intérieur du préfixe de base de la table.

Conversion des données lors de l'exportation vers un compartiment Amazon S3

Lorsque vous exportez un instantané de base de données vers un compartiment Amazon S3, Amazon RDS convertit les données, les exporte et les stocke au format Parquet. Pour plus d'informations sur Parquet, veuillez consulter le site web Apache Parquet.

Parquet stocke toutes les données sous l'un des types primitifs suivants :

  • BOOLEAN

  • INT32

  • INT64

  • INT96

  • FLOAT

  • DOUBLE

  • BYTE_ARRAY – Tableau d'octets de longueur variable, également connu sous le nom de binaire

  • FIXED_LEN_BYTE_ARRAY – Tableau d'octets de longueur fixe utilisé lorsque les valeurs ont une taille constante

Les types de données Parquet sont peu nombreux afin de la complexité de la lecture et de l'écriture du format. Parquet fournit des types logiques pour étendre les types primitifs. Un type logique est implémenté sous forme d'annotation avec les données dans un champ de métadonnées LogicalType. L'annotation de type logique explique comment interpréter le type primitif.

Lorsque le type logique STRING annote un type BYTE_ARRAY, il indique que le tableau d'octets doit être interprété comme une chaîne de caractères codée en UTF-8. Une fois la tâche d'exportation terminée, Amazon RDS vous avertit si une conversion de chaîne s'est produite. Les données sous-jacentes exportées sont toujours les mêmes que celles de la source. Cependant, en raison de la différence d'encodage en UTF-8, certains caractères peuvent apparaître différents de la source lorsqu'ils sont lus dans des outils tels que Athena.

Pour plus d'informations, veuillez consulter Parquet Logical Type Definitions dans la documentation Parquet.

Mappage de type de données MySQL et MariaDB vers Parquet

Le tableau suivant montre le mappage des types de données MySQL et MariaDB aux types de données Parquet lorsque les données sont converties et exportées vers Amazon S3.

Type de données source Type primitif du format Parquet Annotation de type logique Notes de conversion
Types de données numériques
BIGINT INT64
BIGINT UNSIGNED FIXED_LEN_BYTE_ARRAY(9) DECIMAL(20,0) Parquet ne prend en charge que les types signés, de sorte que le mappage nécessite un octet supplémentaire (8 plus 1) pour stocker le type BIGINT_UNSIGNED.
BIT BYTE_ARRAY
DECIMAL INT32 DECIMAL(p,s) Si la valeur source est inférieure à 231, elle est stockée sous la forme INT32.
INT64 DECIMAL(p,s) Si la valeur source est supérieure ou égale à 231 mais inférieure à 263, elle est stockée sous la forme INT64.
FIXED_LEN_BYTE_ARRAY(N) DECIMAL(p,s) Si la valeur source est supérieure ou égale à 263, elle est stockée sous la forme FIXED_LEN_BYTE_ARRAY(N).
BYTE_ARRAY STRING Parquet ne prend pas en charge une précision décimale supérieure à 38. La valeur décimale est convertie en une chaîne de type BYTE_ARRAY et encodée en UTF8.
DOUBLE DOUBLE
FLOAT DOUBLE
INT INT32
INT UNSIGNED INT64
MEDIUMINT INT32
MEDIUMINT UNSIGNED INT64
NUMERIC INT32 DECIMAL(p,s)

Si la valeur source est inférieure à 231, elle est stockée sous la forme INT32.

INT64 DECIMAL(p,s) Si la valeur source est supérieure ou égale à 231 mais inférieure à 263, elle est stockée sous la forme INT64.
FIXED_LEN_ARRAY(N) DECIMAL(p,s) Si la valeur source est supérieure ou égale à 263, elle est stockée sous la forme FIXED_LEN_BYTE_ARRAY(N).
BYTE_ARRAY STRING Parquet ne prend pas en charge la précision numérique supérieure à 38. Cette valeur numérique est convertie en une chaîne de type BYTE_ARRAY et encodée en UTF8.
SMALLINT INT32
SMALLINT UNSIGNED INT32
TINYINT INT32
TINYINT UNSIGNED INT32
Types de données chaîne
BINARY BYTE_ARRAY
BLOB BYTE_ARRAY
CHAR BYTE_ARRAY
ENUM BYTE_ARRAY STRING
LINESTRING BYTE_ARRAY
LONGBLOB BYTE_ARRAY
LONGTEXT BYTE_ARRAY STRING
MEDIUMBLOB BYTE_ARRAY
MEDIUMTEXT BYTE_ARRAY STRING
MULTILINESTRING BYTE_ARRAY
SET BYTE_ARRAY STRING
TEXT BYTE_ARRAY STRING
TINYBLOB BYTE_ARRAY
TINYTEXT BYTE_ARRAY STRING
VARBINARY BYTE_ARRAY
VARCHAR BYTE_ARRAY STRING
Types de données de date et d'heure
DATE BYTE_ARRAY STRING Une date est convertie en une chaîne de type BYTE_ARRAY et encodée en UTF8.
DATETIME INT64 TIMESTAMP_MICROS
TIME BYTE_ARRAY STRING Un type TIME est converti en une chaîne BYTE_ARRAY et encodé en UTF8.
TIMESTAMP INT64 TIMESTAMP_MICROS
YEAR INT32
Types de données géométriques
GEOMETRY BYTE_ARRAY
GEOMETRYCOLLECTION BYTE_ARRAY
MULTIPOINT BYTE_ARRAY
MULTIPOLYGON BYTE_ARRAY
POINT BYTE_ARRAY
POLYGON BYTE_ARRAY
Type de données JSON
JSON BYTE_ARRAY STRING

Mappage de type de données PostgreSQL vers Parquet

Le tableau suivant montre le mappage des types de données PostgreSQL aux types de données Parquet lorsque les données sont converties et exportées vers Amazon S3.

Type de données PostgreSQL Type primitif du format Parquet Annotation de type logique Notes de mappage
Types de données numériques
BIGINT INT64
BIGSERIAL INT64
DECIMAL BYTE_ARRAY STRING Un type DECIMAL est converti en une chaîne de type BYTE_ARRAY et encodé en UTF8.

Cette conversion vise à éviter les complications dues à la précision des données et aux valeurs de données qui ne sont pas un nombre (NaN).

DOUBLE PRECISION DOUBLE
INTEGER INT32
MONEY BYTE_ARRAY STRING
REAL FLOAT
SERIAL INT32
SMALLINT INT32 INT_16
SMALLSERIAL INT32 INT_16
Types de chaînes et de données associés
ARRAY BYTE_ARRAY STRING

Un tableau est converti en chaîne et encodé en tant que BINARY (UTF8).

Cette conversion vise à éviter les complications dues à la précision des données, aux valeurs de données qui ne sont pas un nombre (NaN) et aux valeurs de données horaires.

BIT BYTE_ARRAY STRING
BIT VARYING BYTE_ARRAY STRING
BYTEA BINARY
CHAR BYTE_ARRAY STRING
CHAR(N) BYTE_ARRAY STRING
ENUM BYTE_ARRAY STRING
NAME BYTE_ARRAY STRING
TEXT BYTE_ARRAY STRING
TEXT SEARCH BYTE_ARRAY STRING
VARCHAR(N) BYTE_ARRAY STRING
xml BYTE_ARRAY STRING
Types de données de date et d'heure
DATE BYTE_ARRAY STRING
INTERVAL BYTE_ARRAY STRING
TIME BYTE_ARRAY STRING
TIME WITH TIME ZONE BYTE_ARRAY STRING
TIMESTAMP BYTE_ARRAY STRING
TIMESTAMP WITH TIME ZONE BYTE_ARRAY STRING
Types de données géométriques
BOX BYTE_ARRAY STRING
CIRCLE BYTE_ARRAY STRING
LINE BYTE_ARRAY STRING
LINESEGMENT BYTE_ARRAY STRING
PATH BYTE_ARRAY STRING
POINT BYTE_ARRAY STRING
POLYGON BYTE_ARRAY STRING
Types de données JSON
JSON BYTE_ARRAY STRING
JSONB BYTE_ARRAY STRING
Autres types de données
BOOLEAN BOOLEAN
CIDR BYTE_ARRAY STRING Type de données de réseau
COMPOSITE BYTE_ARRAY STRING
DOMAIN BYTE_ARRAY STRING
INET BYTE_ARRAY STRING Type de données de réseau
MACADDR BYTE_ARRAY STRING
OBJECT IDENTIFIER N/A
PG_LSN BYTE_ARRAY STRING
RANGE BYTE_ARRAY STRING
UUID BYTE_ARRAY STRING