Comment puis-je résoudre les erreurs que je reçois lors du chargement ou du téléchargement de données depuis Amazon Aurora vers Amazon S3 ?

Lecture de 7 minute(s)
0

Je souhaite charger des données vers Amazon Aurora depuis Amazon Simple Storage Service (Amazon S3). Ou je souhaite télécharger des données depuis Amazon Aurora et les charger sur Amazon S3.

Brève description

Chargez les données sous forme de fichier texte entre Amazon Aurora et Amazon S3 à l’aide de l’une des commandes suivantes :

  • SELECT INTO OUTFILE S3 (sélectionner vers le fichier de sortie S3) : chargez des données depuis Amazon Aurora vers Amazon S3
  • LOAD DATA FROM S3 (charger les données depuis S3) : chargez les données depuis Amazon S3 vers Amazon Aurora

Voici quelques-unes des erreurs les plus courantes que vous pouvez recevoir lors de l’exécution des commandes SELECT INTO OUTFILE S3 ou LOAD DATA FROM S3 :

  • Code d’erreur : 1871. Informations d’identification manquantes
  • Commande incorrecte : mot-clé de manifeste/fichier/préfixe manquant
  • Code d’erreur : 1045. Erreur d’accès refusé
  • Code d’erreur : 1815. Erreur interne : Initialisation impossible
  • Code d’erreur : 1871. L’API S3 a renvoyé l’erreur suivante : Accès refusé

Résolution

Exécutez la commande SELECT INTO OUTFILE S3 ou LOAD DATA FROM S3

Exécutez la commande SELECT INTO OUTFILE S3 ou LOAD DATA FROM S3 à l’aide d’Amazon Aurora :

1.    Créez un compartiment S3 et copiez l’ARN.

2.    Créez une politique Gestion des identités et des accès AWS (IAM) pour le compartiment S3 avec des autorisations. Spécifiez l’ARN du compartiment, puis accordez les autorisations aux objets qu’il contient.

Exécutez une politique personnalisée semblable à la suivante si vous n’utilisez pas de politique Fulls3Access :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::<your_bucket_name>",
        "arn:aws:s3:::<your_bucket_name>/*"
      ]
    }
  ]
}
  1. Créez un rôle IAM pour le service Amazon Relational Database Service (Amazon RDS). Joignez ensuite la politique IAM que vous avez créée.

La relation de confiance se présente comme suit :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "rds.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

4.    Créez un groupe de paramètres de cluster de base de données personnalisé pour Aurora.

Pour Aurora MySQL version 1 ou 2 :

Modifiez l'un de ces rôles aurora_select_into_s3_role ou aws_default_s3_role en lui attribuant la valeur de l'ARN du rôle IAM.

Pour Aurora MySQL version 3 :

Modifiez le rôle aws_default_s3_role en lui attribuant la valeur de l'ARN du rôle IAM.

5.    Associez le rôle IAM au cluster de base de données que vous avez créé. Pour en savoir plus, consultez la page Associer un rôle IAM à un cluster de bases de données MySQL Amazon Aurora.

6.    Connectez-vous à votre cluster de base de données Amazon Aurora.

7.    Créez un nouvel utilisateur en exécutant la commande suivante :

CREATE USER 'testsaveload'@'%' IDENTIFIED BY 'somepassword';
show grants for 'testsaveload'@'%';

8.    Accordez les autorisations à l’utilisateur en exécutant la commande suivante :

GRANT SELECT, CREATE, INSERT, DROP ON *.* TO 'testsaveload'@'%';

Pour Aurora MySQL version 1 ou 2, utilisez l’instruction suivante :

GRANT SELECT INTO S3 ON *.* TO 'testsaveload'@'%';
GRANT LOAD FROM S3 ON *.* TO 'testsaveload'@'%';

Pour Aurora MySQL version 3, utilisez l’instruction suivante :

GRANT AWS_SELECT_S3_ACCESS TO 'testsaveload'@'%'
GRANT AWS_LOAD_S3_ACCESS TO 'testsaveload'@'%';

Remarque : Dans la version 3 de MySQL Aurora, l’option activate_all_roles_on_login peut être activée à l’aide du paramètre de cluster de base de données. Cela active automatiquement tous les rôles lorsqu’un utilisateur se connecte à une instance de base de données. Pour en savoir plus, consultez la page Octroi de privilèges pour charger des données dans MySQL Amazon Aurora.

9.    Exécutez la commande SELECT INTO OUTFILE S3 ou LOAD DATA INTO S3

SELECT * from test1.test2034 INTO OUTFILE S3 's3://tests3saveloadaurora/testfile1prefix.part_00000';
LOAD DATA FROM S3 PREFIX 's3-us-east-1://tests3saveloadaurora/testfile1prefix.part_00000' INTO TABLE test3001;
LOAD DATA FROM S3 's3-us-east-1://tests3saveloadaurora/prefix3.part_00000' INTO TABLE test3000;

Code d’erreur : 1871. Informations d’identification manquantes

SELECT * from test1.test2034 INTO OUTFILE S3 '"s3://tests3saveloadaurora/testfile1prefix.part_00000';
Error Code: 1871. S3 API returned error: Missing Credentials: Cannot instantiate S3 Client

Vous pouvez recevoir cette erreur si :

  • L’attachement du rôle IAM au cluster de base de données est manquant. Reportez-vous à l’étape 5 de la section précédente pour résoudre ce problème.
  • L’ARN du rôle n’est pas spécifié, et seul le nom du rôle est répertorié dans le groupe de paramètres. Consultez l’étape 2 de la section précédente pour résoudre ce problème.

Commande incorrecte : mot-clé de manifeste/fichier/préfixe manquant

Si vous recevez le message d’erreur « Commande incorrecte : mot-clé de fichier/préfixe/manifeste manquant », cela signifie que vous n’avez pas saisi le mot-clé approprié pour que la commande s’exécute correctement. Pour corriger cette erreur, saisissez le mot-clé adapté à la commande.

Code d’erreur : 1045. Erreur d’accès refusé

Si vous saisissez une commande incorrecte, vous pouvez recevoir un message d’erreur de type « 1045 : Accès refusé pour l’utilisateur ‘‘testsaveload'@'%';’’ ». Par exemple, cette commande n’est pas écrite correctement :

SELECT * from test1.test2034 INTO OUTFILE 's3://tests3saveloadaurora/testfile1prefix.part_00000';

Assurez-vous que le mot-clé S3 a été saisi dans la requête. Cette commande est écrite correctement :

SELECT * from test1.test2034 INTO OUTFILE S3 's3://tests3saveloadaurora/testfile1prefix.part_00000';

Code d’erreur : 1815. Erreur interne : Initialisation impossible

LOAD DATA FROM S3 's3://tests3saveloadaurora/testfile1prefix.part_00000' INTO TABLE test3000;
Error Code: 1815. Internal error: Unable to initialize S3Stream

Plusieurs raisons peuvent expliquer l’apparition de l’erreur « Code d’erreur : 1815. Erreur interne : Initialisation impossible.

  • Votre fichier n’existe pas. Vérifiez que le fichier existe dans votre compartiment S3 et que le nom que vous avez spécifié dans votre script correspond au nom du fichier. La distinction majuscules/minuscules est importante. Vérifiez que le nom du compartiment S3, le nom du dossier et le nom de l’objet correspondent exactement à ce qui est spécifié dans la commande de chargement.
  • Vous ne disposez pas des autorisations appropriées au niveau du fichier, du dossier ou du compartiment. Vérifiez l’étape 2 pour vous assurer que vous avez défini les autorisations appropriées.
  • Il se peut qu’il y ait une erreur de syntaxe dans le script LOAD. Vérifiez votre script LOAD, puis exécutez la commande à nouveau.
  • Le compartiment S3 et le cluster de base de données se trouvent dans des régions différentes, et le chemin d’accès au compartiment S3 ne contient pas la valeur de la région. Pour en savoir plus sur les régions AWS, consultez la page Points de terminaison et quotas Amazon S3.
  • La configuration réseau des instances de lecture et d’écriture est différente. Pour en savoir plus, consultez la page Utilisation du point de terminaison de lecture.

Code d’erreur : 1871. L’API S3 a renvoyé l’erreur suivante : Accès refusé

Vous recevez l’erreur « Code d’erreur : 1871. L’API S3 a renvoyé l’erreur suivante : Accès refusé » si votre compartiment S3 est chiffré. Vous pouvez également recevoir cette erreur s’il existe un fichier chiffré dans votre compartiment S3. Si le paramètre ServerSideEncryptionConfigurationExists n’est pas défini sur False, ajoutez kms:* à la politique que vous avez associée au rôle IAM utilisé pour effectuer l’opération LOAD. Vous pouvez notamment utiliser l’exemple de politique personnalisée suivant si vous n’utilisez pas de politique FULLS3Access :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "s3:*",
        "kms:*"
      ],
      "Resource": [
        "arn:aws:s3:::<your_bucket_name>",
        "arn:aws:s3:::<your_bucket_name>/*"
      ]
    }
  ]
}

Informations connexes

Enregistrement des données d’un cluster de bases de données MySQL Amazon Aurora vers des fichiers texte situés dans un compartiment Amazon S3

Chargement de données dans un cluster de bases de données MySQL Amazon Aurora à partir de fichiers texte situés dans un compartiment Amazon S3

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 9 mois