Comment résoudre l'erreur AWS Glue « The specified subnet does not have enough free addresses to satisfy the request » (Le sous-réseau spécifié ne dispose pas de suffisamment d'adresses libres pour répondre à la requête) ?

Lecture de 6 minute(s)
0

Ma tâche d'extraction, transformation et chargement (ETL) AWS Glue renvoie l'une des erreurs suivantes : « The specified subnet does not have enough free addresses to satisfy the request. (Service: AmazonEC2; Status Code: 400; Error Code: InsufficientFreeAddressesInSubnet; Request ID: my_request_id) » (Le sous-réseau spécifié ne possède pas suffisamment d'adresses libres pour répondre à la requête. Service : Amazon EC2 ; Code d'état : 400 ; Code d'erreur : InsufficientFreeAddressesInSubnet ; ID de demande : my_request_id) ou « An error occurred while calling o70.getDynamicFrame. Job 0 cancelled because SparkContext was shut down caused by threshold for executors failed after launch reached » (Une erreur s'est produite lors de l'appel de o70.getDynamicFrame. La tâche 0 a été annulée parce que SparkContext a été arrêté en raison de l'échec du seuil des exécuteurs une fois le lancement atteint)

Brève description

Ces erreurs surviennent lorsque le nombre d'adresses IP disponibles est insuffisant pour la tâche AWS Glue. Voici deux causes courantes qui peuvent expliquer ces erreurs :

  • Lorsque vous exécutez une tâche dans un sous-réseau Virtual Private Cloud (VPC), AWS Glue configure des interfaces réseau Elastic qui permettent à votre tâche de se connecter en toute sécurité à d'autres ressources du VPC. Chaque interface réseau Elastic se voit attribuer une adresse IP privée. Si les interfaces réseau Elastic ne sont pas lancées en temps voulu, il se peut que le nombre d'adresses IP disponibles pour la tâche ne soit pas suffisant. Pour corriger le problème, vérifiez le nombre de DPU utilisés par la tâche. Ensuite, réduisez le nombre de DPU et réexécutez la tâche. Vous pouvez également supprimer les interfaces réseau Elastic inutilisées.
  • Plusieurs services AWS utilisent le même sous-réseau. Ces services peuvent utiliser un grand nombre d'adresses IP disponibles du sous-réseau. Pour corriger le problème, utilisez un autre sous-réseau avec un plus grand nombre d'adresses IP disponibles pour la tâche AWS Glue.

Résolution

Utilisez l'une des méthodes suivantes pour éliminer ces erreurs.

Réduire le nombre d'unités de traitement des données (DPU) pour la tâche

Une fois l'exécution de la tâche terminée, vérifiez le nombre de DPU qu'elle a utilisés :

  1. Ouvrez la console AWS Glue.
  2. Dans le panneau de navigation, choisissez Jobs (Tâches).
  3. Choisissez la tâche, puis l'onglet History (Historique). La colonne Maximum capacity (Capacité maximale) indique le nombre de DPU utilisés pour la tâche.

Pour réduire le nombre de DPU pour la tâche, procédez comme suit :

  1. Décidez du nombre de DPU à supprimer de la tâche. Gardez à l'esprit que le nombre de DPU n'est pas égal au nombre d'interfaces réseau Elastic. Une interface réseau Elastic est toujours liée à chaque application de type de travail. Toutefois, des interfaces réseau Elastic supplémentaires sont également nécessaires pour chaque tâche :
    Type de travail standard (1 DPU par application type de travail) : une interface réseau Elastic supplémentaire requise
    Type de travail G1.X (1 DPU par application type de travail) : une interface réseau Elastic supplémentaire requise
    Type de travail G2.X (2 DPU par type de travail) : une interface réseau Elastic supplémentaire requise Par exemple :
    Si vous exécutez une tâche avec 20 travailleurs sur un G.2x, vous pouvez calculer le nombre d'adresses IP comme suit :
    Avec AWS Glue 0.9/1.0 : 41 DPU = 20 travailleurs (exécuteurs) +1 maître (pilote) +1 gestionnaire de tâches = 22 adresses IP
    Avec AWS Glue 2.0/3.0: 40 DPU = 19 travailleurs (exécuteurs) +1 maître (pilote) = 20 adresses IP (pas de gestionnaire de tâches dans AWS Glue 2.0/3.0)
  2. Dans le panneau de navigation, choisissez Jobs (Tâches).
  3. Choisissez la liste déroulante Action, puis choisissez Modifier la tâche.
  4. Développez la liste Security configuration, script libraries, and job parameters (Configuration de la sécurité, bibliothèques de scripts et paramètres de tâche) (facultatif).
  5. Dans le champ Maximum capacity (Capacité maximale), saisissez un nombre inférieur. Ce champ définit le nombre maximal de DPU que la tâche peut utiliser.
  6. Enregistrez vos modifications, puis réexécutez la tâche.

Supprimer les interfaces réseau Elastic inutilisées

Vérifiez le nombre d'adresses IP disponibles dans le sous-réseau en procédant comme suit :

  1. Ouvrez la console AWS Glue.
  2. Dans le panneau de navigation, choisissezConnections (Connexions).
  3. Sélectionnez la connexion que vous souhaitez vérifier.
  4. Dans la liste déroulante Action, choisissez View details (Afficher les détails). Notez le sous-réseau.
  5. Ouvrez la console Amazon VPC.
  6. Dans le volet de navigation, sélectionnezSubnets (Sous-réseaux).
  7. Dans la liste déroulante Subnet (Sous-réseau) choisissez le sous-réseau utilisé par la connexion AWS Glue.
  8. Dans l'onglet Description, cochez le champ Available IPv4 Addresses (Adresses IPv4 disponibles). Ce champ indique le nombre d'adresses IP disponibles dans le sous-réseau.

Assurez-vous que le nombre d'adresses IP disponibles est supérieur au nombre d'adresses IP requis pour la tâche AWS Glue.

Si le nombre d'adresses IP disponibles est inférieur à celui requis pour l'exécution de votre tâche AWS Glue, supprimez les interfaces réseau Elastic non utilisées.

Créer et utiliser un sous-réseau avec plus d'adresses IP disponibles

Pour créer un nouveau sous-réseau, procédez comme suit :

  1. Créez un nouveau sous-réseau dans votre VPC.
    Remarque : vous pouvez créer un nouveau sous-réseau à l'aide des blocs CIDR d'origine du VPC ou ajouter des blocs CIDR supplémentaires à votre VPC afin de les utiliser avec le nouveau sous-réseau.
  2. Vérifiez les tables de routage ainsi que les règles de liste de contrôle d'accès (ACL) associées à l'ancien sous-réseau pour vous assurer que le nouveau achemine le trafic de la même manière. Par exemple, si votre sous-réseau précédent avait un routage par défaut configuré sur une passerelle Internet, assurez-vous que votre nouveau sous-réseau a un routage par défaut similaire.

Pour modifier la connexion AWS Glue pour utiliser le nouveau sous-réseau, procédez comme suit :

  1. Ouvrez la console AWS Glue.
  2. Dans le panneau de navigation, choisissezConnections (Connexions).
  3. Sélectionnez la connexion utilisée par votre tâche AWS Glue.
  4. Dans la liste déroulante Action, choisissez Edit connection (Modifier la connexion).
  5. Sur la page Set up your connection’s properties (Configurer les propriétés de votre connexion), cliquez sur Next (Suivant).
  6. Sur la page Set up access to your data store (Configurer l'accès à votre magasin de données) dans la liste déroulante Subnet (Sous-réseau), choisissez le nouveau sous-réseau.
  7. Sélectionnez Next (Suivant), puis Finish (Terminer).
  8. Réexécutez la tâche.

Informations connexes

Définition des propriétés de tâche pour les tâches Spark

Configuration d'un VPC pour se connecter aux magasins de données JDBC

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an