Je souhaite résoudre les problèmes de connexion entre ma tâche AWS Fargate et un autre service AWS.
Brève description
Les applications qui s'exécutent dans le cadre d'une tâche Fargate avec Amazon Elastic Container Service (Amazon ECS) peuvent ne pas accéder aux autres services AWS pour les raisons suivantes :
- Autorisations AWS Identity and Access Management (IAM) insuffisantes
- Routes de sous-réseau incorrectes
- Restrictions relatives à la liste de contrôle d'accès au réseau (ACL réseau)
- Règles de groupe de sécurité incorrectes
- Configurations de points de terminaison Amazon Virtual Private Cloud (Amazon VPC) incorrectes
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'interface.
Configurer et utiliser ECS Exec
Utilisez ECS Exec pour interagir avec le conteneur d'applications de votre tâche Fargate. Respectez les prérequis pour utiliser ECS Exec. Puis, activez ECS Exec pour votre tâche Fargate.
Si votre conteneur d'applications ne prend pas en charge les sessions shell pour exécuter ECS Exec, utilisez une image Docker aws-cli pour créer une nouvelle tâche Fargate. La nouvelle tâche doit se trouver dans le même sous-réseau et le même VPC que votre tâche Fargate actuelle.
Configurer les connexions entre Amazon ECS et les autres points de terminaison de service AWS
Si vos tâches Amazon ECS ne parviennent pas à se connecter à d'autres services, vérifiez que vous remplissez les conditions suivantes :
- L'URL du point de terminaison est correcte, y compris le protocole (http:// ou https://), le nom d'hôte et le port. Configurez vos points de terminaison de VPC avec des sous-réseaux qui correspondent à la configuration du sous-réseau de votre service Amazon ECS.
- Les sous-réseaux utilisés par votre service Amazon ECS doivent disposer des configurations DNS appropriées pour résoudre les URL de vos points de terminaison, qu'il s'agisse d'un DNS fourni par Amazon ou d'un résolveur personnalisé.
- Le groupe de sécurité associé à vos tâches Amazon ECS doit autoriser l'accès sortant au port et au protocole du service de destination.
- Les listes de contrôle d'accès réseau (ACL) du sous-réseau doivent autoriser le trafic à destination et en provenance des points de terminaison de service requis.
Tester la connexion entre votre tâche Fargate et le point de terminaison du service AWS
Pour tester la connexion de votre tâche Fargate à votre point de terminaison et à votre port de service AWS, exécutez la commande telnet suivante depuis votre conteneur :
telnet endpoint-url port
Remarque : Dans la commande précédente, remplacez endpoint-url par l’URL du point de terminaison de votre service et port par le numéro de port du service.
Si la connexion est établie, vous obtenez l'exemple de sortie suivant :
Trying 10.0.1.169...
Connected to sns.us-east-1.amazonaws.com.
Escape character is '^]'.
Pour tester la résolution DNS de votre point de terminaison, exécutez la commande nslookup suivante :
nslookup example-endpoint
Exemple de sortie :
Name: sns.us-east-1.amazonaws.com
Address: 10.0.1.169
Si vous n'avez pas installé les commandes telnet ou nslookup dans votre conteneur, exécutez l'une des commandes suivantes pour les installer.
Conteneurs basés sur Debian :
apt-get update
apt-get install -y dnsutils telnet
Conteneurs Amazon Linux :
yum install -y bind-utils telnet
Résoudre les erreurs de délai de connexion
Si vous recevez des erreurs de délai d’attente de connexion, vérifiez la configuration de votre réseau.
Règles du groupe de sécurité
Si le trafic passe par un point de terminaison de VPC, le groupe de sécurité du point de terminaison doit autoriser le trafic TCP sur le port 443 depuis l'un des points de terminaison suivants :
- Le groupe de sécurité de la tâche Amazon ECS
- Le bloc CIDR du VPC
Configurez le groupe de sécurité de la tâche pour autoriser le trafic sortant vers le point de terminaison de VPC du service.
Routage VPC
Pour les sous-réseaux publics, la tâche Fargate doit avoir une route par défaut 0.0.0.0/0 qui pointe vers la passerelle Internet.
Pour les sous-réseaux privés, la table de routage doit comporter une route vers une passerelle NAT ou une passerelle de transit en fonction de votre architecture.
Paramètres du proxy
Si votre tâche Amazon ECS utilise un serveur proxy, assurez-vous que la configuration du proxy autorise le trafic vers votre point de terminaison de service.
Analyser les journaux de flux VPC
Si vous rencontrez toujours des problèmes de connexion, utilisez Amazon VPC Flow Logs pour consulter les détails du flux de trafic.
Résoudre les problèmes liés aux autorisations IAM
Vérifiez si le rôle de tâche Amazon ECS autorise le conteneur d'applications à interagir avec d'autres services AWS.
Par exemple, les erreurs suivantes peuvent s'afficher lorsque vous tentez de vous connecter à un point de terminaison Amazon Simple Notification Service (Amazon SNS).
Exemple de message d'erreur concernant la politique de point de terminaison du VPC :
« An error occurred (AuthorizationError) when calling the ListTopics operation: User: arn:aws:sts::123456789012:assumed-role/TaskRole/123456789012 is not authorized to perform: SNS:ListTopics on resource: arn:aws:sns:region-name:123456789012:* with an explicit deny in a VPC endpoint policy »
Pour résoudre ce problème, accordez au point de terminaison de VPC Amazon l'autorisation d'effectuer les actions nécessaires sur vos services AWS. Dans l'exemple de message d'erreur précédent, le point de terminaison de VPC Amazon doit disposer de l'autorisation ListTopics.
Exemple de message d'erreur d'autorisation de rôle de tâche :
« An error occurred (AuthorizationError) when calling the ListTopics operation: User: arn:aws:sts::123456789012:assumed-role/TaskRole/123456789012 is not authorized to perform: SNS:ListTopics on resource: arn:aws:sns:region-name:123456789012:* because no identity-based policy allows the SNS:ListTopics action »
Pour résoudre ce problème, accordez au rôle IAM de la tâche Amazon ECS les autorisations nécessaires pour effectuer les actions nécessaires auprès des services destinataires. Dans l'exemple de message d'erreur précédent, le rôle IAM doit disposer de l'autorisation ListTopics.