Je souhaite résoudre les problèmes de connectivité et d'accès aux ressources liés à mes tâches Amazon EMR sans serveur.
Brève description
Les tâches Amazon EMR sans serveur lisent les données à partir d'une source, les traitent et écrivent les résultats dans un magasin de données. Pour ce faire, les environnements de travail qui exécutent la tâche doivent se connecter à d'autres services et sources de données AWS hébergés sur AWS ou sur site. Si votre application n'est pas correctement configurée, vous pouvez rencontrer des erreurs réseau telles que les suivantes :
« java.net.SocketTimeoutException: Connect timed out. »
Pour plus d'informations sur les options de mise en réseau pour les tâches Amazon EMR sans serveur, consultez la section Configuration de l'accès VPC et Autres considérations.
Résolution
Pour résoudre les problèmes de connectivité et d'accès aux ressources liés à vos tâches Amazon EMR sans serveur, procédez comme suit :
Pour vérifier si une tâche a échoué en raison d'une erreur de mise en réseau, vérifiez les détails du statut de la tâche ou consultez les journaux de pilote. Vérifiez si le message d'erreur suivant s'affiche :
« java.net.SocketTimeoutException: Connect timed out. »
Si l'erreur précédente apparaît dans les détails de statut de la tâche et que vous ne pouvez pas récupérer les journaux de pilote, cela signifie que la tâche n'a pas démarré. La tâche n'a pas démarré car les environnements de travail n'ont pas pu récupérer le script depuis Amazon Simple Storage Service (Amazon S3). Par conséquent, l'erreur suivante apparaît lorsque vous tentez de récupérer les journaux :
« Failed to open logs for <job_name> (<job_run_id>). ${apiError} »
Pour résoudre les erreurs précédentes, effectuez les actions suivantes :
- Assurez-vous que le compartiment Amazon S3 est accessible depuis le réseau sur lequel s'exécute votre application.
- Vérifiez que votre stratégie de point de terminaison de VPC Amazon, votre stratégie AWS Identity and Access Management (IAM), votre stratégie de service et votre stratégie de compartiment ne vous interdisent pas l'accès à vos tâches.
- Si votre tâche s'exécute dans un sous-réseau Amazon VPC sans connectivité sortante à Internet, créez un point de terminaison de VPC Amazon pour passerelle Amazon S3. Assurez-vous de créer le point de terminaison dans les mêmes sous-réseaux que votre application.
Si ces erreurs figurent dans les journaux de pilote, consultez votre message de code d'erreur pour identifier les services AWS ou les sources de données inaccessibles. Puis, vérifiez si le service AWS ou la source de données est accessible avec votre configuration de mise en réseau actuelle. S'il n'est pas accessible, mettez à jour votre configuration de mise en réseau.
Pour les applications Amazon VPC, effectuez les actions suivantes :
- Assurez-vous que les groupes de sécurité attachés autorisent le trafic sortant vers les ressources requises. Vous pouvez également autoriser le trafic sortant sur tous les ports.
- Assurez-vous que les listes de contrôle d'accès au réseau des sous-réseaux (ACL réseau) de l'application hôte ne bloquent aucun trafic entre les ressources requises.
- Assurez-vous que le groupe de sécurité de votre ressource autorise le trafic entrant en provenance des sous-réseaux ou du groupe de sécurité de votre application.
- Si votre application requiert une connectivité Internet, assurez-vous d'utiliser des sous-réseaux privés dotés d'une connectivité Internet sortante depuis une passerelle NAT publique.
- Si votre application ne dispose pas d’une connectivité Internet sortante, utilisez les points de terminaison de VPC Amazon pour les services AWS auxquels votre tâche doit accéder.
- Pour déterminer si une ressource de destination est accessible depuis le sous-réseau de votre application, utilisez l'analyseur d’accessibilité. Utilisez une interface réseau Elastic de travail comme source et une interface réseau Elastic de ressource ou une adresse IP comme destination.
Résolution de problèmes supplémentaires
Si l'application précédemment en cours d'exécution est bloquée à l’état de démarrage, vérifiez vos groupes de sécurité. Assurez-vous qu'aucun groupe de sécurité existant n'a été supprimé de votre application Amazon VPC.
Si votre tâche utilise un sous-réseau, mais que vous en avez configuré plusieurs, il est possible que votre application soit configurée avec une capacité préinitialisée. Par conséquent, les environnements de travail démarrent dans un seul sous-réseau et l'application continue à utiliser ce sous-réseau jusqu'à son arrêt. Toutes les tâches soumises à l'application utilisent le sous-réseau contenant les environnements de travail préinitialisés.
Si vous êtes à court d'adresses IP ou si Amazon EMR sans serveur utilise toutes les adresses IP de sous-réseau disponibles, mettez votre application à l’échelle. Les environnements de travail et les adresses IP de votre sous-réseau sont mappés un à un. Assurez-vous que votre sous-réseau dispose d’un nombre suffisant d'adresses IP pour démarrer votre application. Pour plus d'informations, consultez la section Bonnes pratiques de planification des sous-réseaux.