Exportation de données instantanées de base de données vers Amazon S3 pour Amazon RDS - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exportation de données instantanées de base de données vers Amazon S3 pour Amazon RDS

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 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 de instantanés de base de données, y compris les instantanés manuels, les instantanés du 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 d'Athena pour lire les données de Parquet, consultez Parquet SerDe dans le guide de l'utilisateur d'Amazon Athena. 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.

Avertissement

Vous ne pouvez pas restaurer les données de capture exportées de S3 vers une nouvelle instance de base de données ou importer des données de capture d'écran de S3 dans une instance de base de données existante. Toutefois, vous pouvez traiter les données à l'aide d'Amazon Athena ou de Redshift Spectrum à des fins d'analyse. En outre, vous pouvez transformer AWS Glue les données, puis les importer dans Amazon RDS à l'aide d'outils tels que AWS DMS des scripts personnalisés.

Pour plus d'informations sur l'exportation de snapshots de base de données vers Amazon S3, consultez les rubriques suivantes.

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é automatique ou manuel existant, ou créez un instantané manuel d'une instance de base de données ou d'un cluster de base de données multi-AZ.

  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 trouver dans la même AWS région que le snapshot. Pour de plus amples informations, veuillez consulter 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 de snapshots l'accès au compartiment S3. Pour de plus amples informations, veuillez consulter 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 snapshots pour configurer le chiffrement AWS KMS côté serveur lors de l'écriture des données d'exportation dans S3.

    La politique de clés KMS doit inclure à la fois les autorisations kms:CreateGrant et kms:DescribeKey. Pour plus d'informations sur l'utilisation des clés KMS dans Amazon RDS, consultez AWS KMS key gestion.

    Si votre politique de clé KMS contient une déclaration de refus, assurez-vous d'exclure explicitement le principal du AWS serviceexport.rds.amazonaws.com.

    Vous pouvez utiliser une clé KMS dans votre AWS compte, ou vous pouvez utiliser une clé KMS entre comptes. Pour de plus amples informations, veuillez consulter Utilisation d'un compte croisé AWS KMS key 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 de plus amples informations, veuillez consulter Exportation d'un instantané de base de données 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 AWS région que le snapshot.

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 accorder cette autorisation, créez une politique IAM qui donne accès au compartiment, puis créez un rôle IAM et attachez la politique au rôle. Vous affectez ultérieurement le rôle IAM à votre tâche d'exportation d'instantané.

Pour plus d'informations sur les autres outils de gestion d'accès Amazon S3, consultez la section Contrôle d'accès dans Amazon S3 dans le guide de l'utilisateur d'Amazon S3.

Important

Si vous prévoyez d'utiliser le AWS Management Console pour exporter votre instantané, vous pouvez choisir de créer la politique IAM et le rôle automatiquement lorsque vous exportez le cliché. Pour obtenir des instructions, consultez Exportation d'un instantané de base de données 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.

    Dans la politique, incluez 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

    Dans la politique, incluez 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:::amzn-s3-demo-bucket

    • arn:aws:s3:::amzn-s3-demo-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 AWS CLI commande suivante crée une politique IAM nommée ExportPolicy avec ces options. Elle accorde un accès à un compartiment nommé amzn-s3-demo-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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }'
  2. Créez un rôle IAM, afin qu'Amazon RDS puisse endosser ce rôle IAM en votre nom pour accéder à vos compartiments Amazon S3. Pour plus d’informations, consultez 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 AWS CLI commande 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 AWS CLI commande suivante associe la politique 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 des compartiments Amazon S3 sur plusieurs AWS comptes. 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:::amzn-s3-demo-destination-bucket", "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" ] } ] }

Utilisation d'un compte croisé AWS KMS key pour chiffrer les exportations Amazon S3

Vous pouvez utiliser un compte croisé AWS KMS key 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é de base de données vers un compartiment Amazon S3

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

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'API AWS Management Console, de AWS CLI, ou de l'API RDS. Pour exporter un instantané de base de données vers un compartiment Amazon S3 multi-comptes, utilisez l'API AWS CLI ou 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 du moteur 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 AWS région où l'instantané a été créé.

Pour exporter un instantané de base de données
  1. Connectez-vous à la console Amazon RDS AWS Management Console et ouvrez-la à https://console.aws.amazon.com/rds/l'adresse.

  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 que vous avez choisi, choisissez Create a new role (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 AWS CLI, utilisez la start-export-taskcommande 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és est nomméemy-snapshot-export. Elle exporte un instantané vers un compartiment S3 nomméamzn-s3-demo-bucket.

Dans 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 amzn-s3-demo-bucket \ --iam-role-arn iam-role \ --kms-key-id my-key

Dans 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 amzn-s3-demo-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 des instantanés, incluez l'--s3-prefixoption dans la start-export-taskcommande.

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

  • ExportTaskIdentifier

  • SourceArn

  • S3BucketName

  • IamRoleArn

  • KmsKeyId

Disponibilité des régions et des versions

La disponibilité et la prise en charge des fonctionnalités varient selon les versions spécifiques de chaque moteur de base de données, et selon les Régions AWS. Pour obtenir plus d'informations sur la disponibilité des versions et des régions avec l'exportation d'instantanés vers S3, consultez Régions et moteurs de base de données pris en charge pour l'exportation d'instantanés vers S3 dans Amazon RDS.

Limites

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

  • Vous ne pouvez pas exécuter simultanément plusieurs tâches d'exportation pour le même instantané de base de données. Cette règle s'applique aux exportations complètes et partielles.

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

  • Les exportations vers S3 ne prennent pas en charge les préfixes S3 contenant deux points (:).

  • Les caractères suivants du chemin d'accès au fichier S3 sont convertis en traits de soulignement (_) lors de l'exportation :

    \ ` " (space)
  • 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)
  • Les tables dont les noms contiennent des barres obliques (/) sont ignorées lors de l'exportation.

  • Les tables temporaires et non journalisées de RDS for PostgreSQL sont ignorées lors de l'exportation.

  • 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.

  • Pour les exportations partielles, la taille maximale de la ExportOnly liste est de 200 Ko.

  • 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: Une erreur s'est produite (ExportTaskAlreadyExists) lors de l'appel de l' StartExportTaskopération : la tâche d'exportation portant l'ID existe xxxxx déjà.

  • Vous pouvez supprimer un instantané lors de l'exportation de ses données vers S3, mais les coûts de stockage de cet instantané vous sont tout de même facturés tant que la tâche d'exportation n'est pas terminée.

  • Vous ne pouvez pas restaurer les données de capture exportées de S3 vers une nouvelle instance de base de données ou importer des données de capture d'écran de S3 dans une instance de base de données existante.

  • Vous pouvez avoir jusqu'à cinq tâches simultanées d'exportation de snapshots de base de données en cours par Compte AWS.

  • Pour exporter un instantané de base de données vers un compartiment Amazon S3 multi-comptes, vous devez utiliser l'API AWS CLI ou l'API RDS.

  • Une fois qu'Amazon RDS a terminé une tâche d'exportation, vous devrez peut-être attendre un peu avant de démarrer une autre tâche d'exportation à partir du même instantané de base de données.