Comment éliminer l'erreur « Unable to Verify/Create Output Bucket » (Impossible de vérifier/créer le compartiment de sortie) dans Amazon Athena ?

Date de la dernière mise à jour : 10/02/2020

Lorsque j'exécute des requêtes Amazon Athena dans SQL Workbench/J, dans AWS Lambda ou avec un kit AWS SDK, je reçois le message d'erreur« Unable to Verify/Create Output Bucket » (Impossible de vérifier/créer le compartiment de sortie).

Brève description

Voici quelques causes courantes de cette erreur :

  • Le compartiment Amazon Simple Storage Service (Amazon S3) que vous avez spécifié pour l'emplacement des résultats de requête n'existe pas.
  • La stratégie AWS Identity and Access Management (IAM) pour l'utilisateur ou le rôle qui exécute la requête ne dispose pas des autorisations Amazon S3 requises, telles que s3:GetBucketLocation.

Solution

Si vous définissez manuellement l'emplacement des résultats de requête, vérifiez que le compartiment S3 existe. Ensuite, vérifiez la stratégie IAM pour l'utilisateur ou le rôle qui exécute la requête :

  • Vérifiez que les autorisations de l'exemple de stratégie suivant sont activées.
  • Vérifiez que la stratégie IAM ne contient aucune instruction Deny qui utilise aws:SourceIp ou aws:SourceVpc pour restreindre les autorisations S3.

Remarque : l'autorisation s3:CreateBucket n'est pas nécessaire si le compartiment existe déjà. L'autorisation arn:aws:s3:::aws-athena-query-results-* n'est pas nécessaire si vous paramétrez manuellement l'emplacement des résultats de requête. Les autorisations arn:aws:s3:::query-results-custom-bucket et arn:aws:s3:::query-results-custom-bucket/* sont uniquement nécessaires si vous définissez manuellement l'emplacement des résultats de la requête.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads",
                "s3:ListMultipartUploadParts",
                "s3:AbortMultipartUpload",
                "s3:CreateBucket",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::aws-athena-query-results-*",
                "arn:aws:s3:::query-results-custom-bucket",
                "arn:aws:s3:::query-results-custom-bucket/*"
            ]
        }
    ]
}