Comment puis-je résoudre les erreurs de connexion à AWS Marketplace dans mes tâches ETL d’AWS Glue ?

Lecture de 10 minute(s)
0

Lorsque j’utilise des connecteurs AWS Marketplace dans AWS Glue, des erreurs s’affichent dans les journaux.

Résolution

Les connecteurs ne s’affichent pas

Vous vous abonnez à un connecteur à partir d’AWS Marketplace, mais ne trouvez pas ce connecteur sur la page des connecteurs d’AWS Glue Studio.

Pour résoudre ce problème, procédez comme suit :

  1. Ouvrez AWS Marketplace.
  2. Choisissez Découvrir les produits, puis recherchez le connecteur que vous souhaitez utiliser.
  3. Choisissez Continuer pour s’abonner, puis, quand vous y êtes invités, connectez-vous à votre compte AWS.
  4. Choisissez Continuer pour configurer. Si cette option est grisée et que vous ne pouvez pas la choisir, pensez à lire les Conditions générales. Choisissez Accepter les conditions, puis attendez que le bouton Continuer pour configurer devienne disponible.
  5. Dans la liste déroulante, sélectionnez Méthode de livraison et Version de logiciel. Si vous hésitez sur la version à choisir, choisissez la version la plus récente.
  6. Choisissez Continuer pour lancer, puis choisissez Instructions d’utilisation.
  7. Dans la fenêtre contextuelle, choisissez Activer le connecteur Glue à partir d’AWS Glue Studio.
  8. (Facultatif) Pour installer uniquement le connecteur, choisissez Activer uniquement le connecteur. Pour plus d’informations, consultez Utilisation de connecteurs et de connexions avec AWS Glue Studio. Si vous utilisez plutôt des connecteurs personnalisés, consultez Développement de connecteurs personnalisés.

Remarque : vous pouvez répéter ces étapes même en cas d’abonnement préalable au connecteur.

Problèmes liés à votre rôle IAM

Lorsque vous essayez de vous abonner à un connecteur sur AWS Marketplace, vous recevez un message d’erreur relatif aux autorisations AWS Identity and Access Management (AWS IAM) similaire au suivant :

« You do not have the right permissions to make this request. Some controls have been disabled because you are missing the correct permission(s). The missing permission(s) are: aws-marketplace:Subscribe. »

Pour résoudre ce problème, ajoutez une politique IAM à l’utilisateur IAM ayant reçu le message d’erreur. Pour utiliser AWS Marketplace, ajoutez les politiques IAM suivantes à votre utilisateur IAM :

  • Pour accorder l’autorisation de consulter les abonnements, mais pas de les modifier, choisissez AWS MarketplaceRead-Only.
  • Pour accorder des autorisations d’abonnement et de désinscription, choisissez AWSMarketplaceManageSubscriptions.
  • Pour accorder un contrôle total de vos abonnements, choisissez AWSMarketplaceFullAccess.

Pour plus d’informations, consultez Contrôle d’accès aux abonnements AWS Marketplace.

Erreurs AccessDeniedException

Vous recevez un message d’erreur AccessDeniedException similaire à ce qui suit dans les journaux des tâches AWS Glue :

« An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:sts::xxxxxxxxxxxx:assumed-role/<IamRole>/GlueJobRunnerSession is not authorized to perform: ecr:GetAuthorizationToken on resource: * because no identity-based policy allows the ecr:GetAuthorizationToken action
Glue ETL Marketplace - failed to download connector, activation script exited with code 1
LAUNCH ERROR | Glue ETL Marketplace - failed to download connector. Please refer logs for details. »

Cette erreur se produit lorsque le rôle IAM associé à votre tâche AWS Glue ne dispose pas d’autorisations suffisantes lorsqu’il effectue l’opération GetAuthorizationToken.

Pour résoudre ce problème, accordez à votre tâche AWS Glue l’autorisation ecr:GetAuthorizationToken :

  1. Ouvrez la console IAM.
  2. Choisissez le rôle IAM que vous occupez dans la tâche AWS Glue.
  3. Choisissez Attacher des politiques.
  4. Dans Filtrer les politiques, saisissez AmazonEC2ContainerRegistryReadOnly, puis choisissez cette politique.
  5. Choisissez Attacher la politique.

Après avoir associé la politique requise au rôle IAM, exécutez à nouveau la tâche AWS Glue.

Pour plus d’informations, consultez AmazonEC2ContainerRegistryReadOnly, Ajout et suppression des autorisations d’identité IAM (console) et Configuration des autorisations IAM pour AWS Glue.

Problèmes de mise en réseau – Aucun chemin réseau partant du VPC

Votre configuration réseau n’est peut-être pas adéquate pour que les connecteurs AWS Glue fonctionnent correctement lorsqu’ils sont utilisés dans le cadre d’une tâche AWS Glue. Vous pouvez recevoir un message d’erreur semblable au suivant :

« botocore.exceptions.ConnectTimeoutError : Connect timeout on endpoint URL: "https://api.ecr.us-east-1.amazonaws.com/"Glue ETL Marketplace - failed to download connector, activation script exited with code 1
LAUNCH ERROR | Glue ETL Marketplace - failed to download connector. Please refer logs for details.
Exception in thread "main"
java.lang.Exception: Glue ETL Marketplace - failed to download connector. »

L’exemple de message d’erreur précédent indique qu’aucun chemin réseau provenant du cloud privé virtuel (VPC) ne contient les composants de tâche vers le référentiel Amazon Elastic Container Registry (Amazon ECR). Le référentiel Amazon ECR contient les images des connecteurs. AWS Glue stocke tous les connecteurs dans un référentiel Amazon ECR dans la région AWS us-east-1. Si la tâche AWS Glue souhaite utiliser un connecteur, elle doit le télécharger de cette région.

Lorsqu’une connexion est ajoutée à une tâche AWS Glue, vous devez établir un itinéraire réseau permettant au trafic de circuler jusqu’au service ou à partir de ce dernier. AWS Glue utilise des adresses IP privées pour communiquer avec les composants de la tâche et des services, notamment Amazon ECR. Cette erreur peut se produire si votre connexion utilise un sous-réseau public dont la table de routage contient une passerelle Internet. Pour plus d’informations, consultez Configuration de l’accès Internet.

Lorsque vous créez la connexion, les informations réseau comme le VPC, le sous-réseau et le groupe de sécurité sont facultatives. Si vous créez la connexion avec uniquement le connecteur et une clé AWS Secrets Manager, la tâche AWS Glue utilise une passerelle NAT interne. La tâche ne dépend pas de la présence d’une passerelle NAT dans votre compte.

Pour résoudre ce problème, choisissez l’une des solutions suivantes et intégrez-la à la conception de votre réseau.

Créer et attacher une passerelle NAT au sous-réseau de connexion

N’utilisez pas de passerelle Internet. Créez plutôt une passerelle NAT et attachez-la au sous-réseau de connexion :

  1. Allouez à votre compte une adresse IP Elastic non attachée. Assurez-vous d’associer l’adresse IP à la passerelle NAT.
  2. Créez une passerelle NAT, puis choisissez un sous-réseau public et l’adresse IP Elastic pour créer la passerelle NAT dans un sous-réseau public.
  3. Créez un sous-réseau privé sans route de passerelle Internet et une table de routage associée. Dans la table de routage, ajoutez une règle avec 0.0.0.0/0 pointant vers la passerelle NAT. Vous pouvez également modifier l’un des sous-réseaux existants pour utiliser la table de routage avec la table de routage de passerelle NAT. Assurez-vous qu’aucune route de passerelle Internet n’est utilisée avec la route de passerelle NAT.
  4. Révisez le sous-réseau de connexion AWS Glue pour utiliser le sous-réseau privé.
  5. Exécutez à nouveau la tâche AWS Glue pour confirmer que l’erreur ne se reproduit pas.

N’utilisez pas les informations de VPC lors de la connexion

N’incluez pas d’informations de VPC lors de la connexion. Utilisez plutôt une passerelle NAT Internet :

  1. Créez une nouvelle connexion pour votre connecteur dans AWS Glue Studio.
  2. Spécifiez uniquement la clé Secrets Manager. N’ajoutez aucune option de VPC, pour qu’AWS Glue utilise la passerelle NAT interne au lieu du sous-réseau.
  3. Modifiez la tâche AWS Glue pour utiliser la nouvelle connexion, puis relancez la tâche.

Pour les configurations de réseaux privés, créez un point de terminaison d’un VPC

Utilisez un point de terminaison d’un VPC avec la configuration de votre réseau privé au lieu d’une passerelle NAT. Pour utiliser un point de terminaison d’un VPC, procédez comme suit.

Créer un point de terminaison d’un VPC

Créez d’abord un point de terminaison d’API d’Amazon ECR. Créez ensuite un point de terminaison d’un VPC pour le com.amazonaws.<region>service .ecr.dkr, puis un point de terminaison Amazon Simple Storage Service (Amazon S3).

Créez le point de terminaison d’API d’Amazon ECR :

  1. Ouvrez la console Amazon VPC.
  2. Dans le volet de navigation, choisissez Points de terminaison.
  3. Choisissez Créer un point de terminaison, puis ajoutez un nom de point de terminaison pour votre point de terminaison d’API d’Amazon ECR.
  4. Pour Catégorie de service, choisissez Services AWS.
  5. Pour Services, ajoutez le filtre ECR, puis choisissez com.amazonaws.<region>ecr.api.
  6. Pour VPC, choisissez le VPC dans lequel vous souhaitez créer le point de terminaison. Sous Paramètres supplémentaires, choisissez Activer un nom de DNS.
  7. Pour Sous-réseaux, choisissez la zone de disponibilité dans laquelle vous avez créé le nouveau sous-réseau.
  8. Pour Identifiant de sous-réseau, choisissez le nom de sous-réseau.
  9. Pour Groupes de sécurité, choisissez votre groupe de sécurité.
  10. Pour Politique, choisissez Accès complet pour autoriser toutes les opérations selon tous les principes sur toutes les ressources via le point de terminaison d’un VPC.
  11. (Facultatif) Ajoutez une balise.
  12. Choisissez Créer un point de terminaison.

En suivant les mêmes étapes, créez un autre point de terminaison d’un VPC pour le nom de service com.amazonaws.<region>.ecr.dkr.

Procédez ensuite aux étapes suivantes pour créer le point de terminaison Amazon S3 :

  1. Ouvrez la console Amazon VPC.
  2. Dans le volet de navigation, choisissez Points de terminaison.
  3. Choisissez Créer un point de terminaison, puis ajoutez un nom de point de terminaison.
  4. Pour Catégorie de service, choisissez Services AWS.
  5. Pour Services, ajoutez le filtre Type:Gateway, puis choisissez com.amazonaws.<region>.s3.
  6. Pour VPC, choisissez celui dans lequel vous souhaitez créer le point de terminaison.
  7. Pour Tables de routage, choisissez vos tables de routage.
  8. Pour Politique, choisissez Accès complet pour autoriser toutes les opérations selon tous les principes sur toutes les ressources via le point de terminaison d’un VPC.
  9. (Facultatif) Ajoutez une balise.
  10. Choisissez Créer un point de terminaison.

S’abonner à des connecteurs et les configurer

Si vous avez déjà souscrit et que vous avez configuré votre connecteur dans AWS Glue, passez à la section Créer une connexion AWS Glue.

Si vous ne vous êtes pas abonné et que vous n’avez pas configuré votre connecteur dans AWS Glue, suivez les étapes décrites dans la section Abonnement aux connecteurs AWS Marketplace. Dans la fenêtre contextuelle Instructions d’utilisation, choisissez Activer le connecteur Glue à partir d’AWS Glue Studio pour accéder à la page Créer une connexion Glue.

Créer une connexion AWS Glue

Si vous avez déjà ajouté votre connecteur dans la console AWS Glue, accédez à Connexions et choisissez votre connecteur. Choisissez ensuite Créer une connexion.

Si vous avez suivi les étapes précédentes pour vous abonner à des connecteurs et pour les configurer, procédez comme suit pour créer votre connexion :

  1. Ouvrez la console AWS Glue.
  2. Sur la page Créer une connexion Glue, ajoutez un Nom de connexion.
  3. Pour les Options de réseau, choisissez votre VPC, le sous-réseau et les groupes de sécurité.
  4. Choisissez Créer une connexion et activez le connecteur.

Problèmes de réseautage : trop de connexions dans la tâche AWS Glue

Si vous rencontrez de problèmes de réseautage parce que votre tâche AWS Glue comporte trop de connexions, le message d’erreur suivant s’affiche dans les journaux de tâche :

« INFO - Glue ETL Marketplace - Start downloading connector jars for connection: <connection name>test connection feature: "Caused by: com.amazonaws.services.glue.exceptions.InvalidInputException: Connection: does not exist »
LAUNCH ERROR | Glue ETL Marketplace - failed to download connector. Please refer logs for details. »

AWS Glue prend en charge une connexion par tâche ou par point de terminaison de développement. Si vous spécifiez plusieurs connexions dans une tâche, AWS Glue utilise la première connexion. Si vous devez accéder à plusieurs VPC, consultez Connexion et exécution de tâches ETL sur plusieurs VPC à l’aide d’un VPC AWS Glue dédié.

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