Pourquoi mon robot d'indexation AWS Glue échoue-t-il avec une exception de service interne ?

Date de la dernière mise à jour : 17/08/2021

Mon robot d'indexation AWS Glue échoue et affiche l'erreur « ERROR : Internal Service Exception » (ERREUR : exception de service interne).

Solution

Les exceptions de service internes de l'analyseur sont parfois dues à des problèmes transitoires. Avant de démarrer le dépannage, exécutez à nouveau le robot d'indexation. Si vous obtenez toujours une exception de service interne, vérifiez les problèmes courants suivants.

Catalogue de données AWS Glue

  • Assurez-vous que les noms de colonne ne dépassent pas 255 caractères et ne contiennent pas de caractères spéciaux. Pour de plus amples informations sur les exigences en matière de colonnes, consultez « Column » (Colonne).
  • Recherchez des données malformées. Par exemple, l'analyseur ne fonctionne pas si le nom de la colonne n'est pas conforme au modèle d'expression régulière « [\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\t] ».
  • Recherchez les colonnes dont la longueur est 0. De telles longueurs apparaissent lorsque les colonnes des données ne correspondent pas au format de données de la table.
  • Si vos données contiennent des colonnes de type DECIMAL au format « (precision, scale) » (précision, échelle), assurez-vous que la valeur de l'échelle est inférieure ou égale à la valeur de la précision.
  • Dans la définition de schéma de votre table, assurez-vous que le Type de chacune de vos colonnes ne dépasse pas 131 072 octets. Pour de plus amples informations, consultez Column structure (Structure de colonne).
  • Si votre robot d'exploration échoue avec l'une des erreurs suivantes, assurez-vous que la définition totale du schéma de votre table ne dépasse pas 1 Mo :
    • « Unable to create table in Catalog » (Impossible de créer une table dans le catalogue)
    • « Payload size of request exceeded limit » (La taille de la charge utile de la demande a dépassé la limite)

Amazon Simple Storage Service (Amazon S3)

  • Assurez-vous que le chemin Amazon S3 ne contient pas de caractères spéciaux.
  • Vérifiez que le rôle AWS Identity and Access Management (IAM) pour l'analyseur dispose des autorisations nécessaires pour accéder au chemin Amazon S3. Pour plus d'informations, consultez Créer un rôle IAM pour AWS Glue.
  • L'échec de l'analyseur avec une exception de service interne peut survenir en raison de l'existence d'un grand nombre de petits fichiers. Pour éviter ce problème, utilisez l'outil S3DistCp pour combiner de tout petits fichiers. Des frais Amazon EMR supplémentaires vous seront facturés lorsque vous utilisez S3DistCp. Vous pouvez également définir des modèles d'exclusion puis analyser les fichiers par lots.
  • Supprimez les caractères spéciaux ASCII comme ^, % et ~ de vos données, si possible. Dans le cas contraire, utilisez des classifieurs personnalisés pour classer vos données.
  • Confirmez que les objets S3 utilisent la classe de stockage STANDARD. Pour restaurer des objets dans la classe de stockage STANDARD, veuillez consulter la section Restoring an archived object (Restauration d'un objet archivé).
  • Confirmez que les modèles d'inclusion et d'exclusion dans la configuration du robot d'indexation correspondent aux chemins du compartiment S3.
  • Si vous analysez un compartiment S3 chiffré, vérifiez que le rôle IAM de l'analyseur dispose des autorisations appropriées pour la clé AWS Key Management Service (AWS KMS). Pour plus d'informations, consultez Gestion des configurations de sécurité sur la console AWS Glue et Configuration du chiffrement dans AWS Glue.
  • Si vous analysez un compartiment S3 chiffré, assurez-vous que le compartiment, la clé AWS KMS et la tâche AWS Glue se trouvent dans la même région AWS.
  • Vérifiez le taux de demandes sur le compartiment S3 que vous analysez. Si ce taux est élevé, pensez à créer d'autres préfixes pour paralléliser les lectures. Pour plus d'informations, consultez Modèles de conception des bonnes pratiques : optimisation des performances Amazon S3.
  • Assurez-vous que les partitions et clés du compartiment S3 sont cohérentes. Par exemple, si le robot d'indexation s'attend à ce que les objets utilisent le chemin s3://awsdoc-example-bucket/aaaa =xxxx/mm=xxx/dd=xx/[files], mais que certains objets utilisent le chemin s3://awsdoc-example-bucket/aaaa =xxxx/mm=xxx/[files], le robot d'indexation échoue avec une exception de service interne.
  • Assurez-vous que la longueur du chemin d'accès aux ressources S3 est inférieure à 700 caractères.

Amazon DynamoDB

JDBC

  • Si vous effectuez une indexation de site web de source de données JDBC chiffrée avec AWS KMS, vérifiez le sous-réseau que vous utilisez pour la connexion. La table de routage du sous-réseau doit avoir un acheminement vers le point de terminaison AWS KMS, soit via un point de terminaison de VPC AWS KMS, soit une passerelle NAT.
  • Assurez-vous que vous utilisez la syntaxe de chemin d'inclusion correcte. Pour plus d'informations, consultez Définition des analyseurs.
  • Si vous analysez un entrepôt de données JDBC, vérifiez que la connexion SSL est configurée correctement. Si vous n'utilisez pas de connexion SSL, assurez-vous que « Require SSL Connection » (Connexion SSL requise) n'est pas sélectionné lorsque vous configurez l'analyseur.
  • Vérifiez que le nom de base de données dans la connexion AWS Glue correspond au nom de base de données dans « Include path » (chemin d'inclusion). Veillez également à entrer correctement le chemin d'inclusion. Pour de plus amples informations, veuillez consulter les Include and exclude patterns (Modèles d'inclusion et d'exclusion).
  • Assurez-vous que le sous-réseau que vous utilisez se trouve dans une zone de disponibilité prise en charge par AWS Glue.
  • Assurez-vous que le sous-réseau que vous utilisez dispose de suffisamment d'adresses IP privées disponibles.
  • Vérifiez que la source de données JDBC est prise en charge avec le pilote JDBC AWS Glue intégré.

AWS KMS

  • Si vous utilisez AWS KMS, le robot d'indexation AWS Glue doit avoir accès à AWS KMS. Pour accorder l'accès, sélectionnez l'option « Enable Private DNS Name » (Activer le nom DNS privé) lorsque vous créez le point de terminaison AWS KMS. Ensuite, ajoutez le point de terminaison AWS KMS à la configuration du sous-réseau VPC pour la connexion AWS Glue. Pour plus d'informations, consultez Création d'un point de terminaison de VPC AWS KMS (console VPC).