Mon application exécute un ensemble de tâches lancées par Amazon Elastic Container Service (Amazon ECS) sur des instances Amazon Elastic Compute Cloud (Amazon EC2). Mon application ne parvient pas à communiquer avec la base de données Amazon Relational Database Service (Amazon RDS).
Résolution
Vérifiez les configurations de votre réseau
Pour vérifier si une instance de conteneur peut établir une connexion sur la base de données, procédez comme suit pour les instances de conteneur basées sur Linux ou Windows :
Pour les instances de conteneurs basées sur Linux :
- Créez des informations d’identification par paire de clés pour utiliser SSH afin de vous connecter à l’instance de conteneur dans laquelle votre tâche est placée.
- Pour vous connecter à votre base de données RDS, exécutez la commande suivante :
$ telnet test.ab12cde3fg4.us-east-1.rds.amazonaws.com 3306
Remarque : remplacez test.ab12cde3fg4.us-east-1.rds.amazonaws.com par le point de terminaison de votre base de données. Remplacez 3306 par le port de votre base de données.
Les résultats se présentent de la manière suivante :
> Trying 172.31.122.28 > Connected to test.ab12cde3fg4.us-east-1.rds.amazonaws.com
> Escape character is '^]'.
Important : Telnet n’est pas préinstallé sur les Amazon Machine Images (AMI) optimisées pour Amazon ECS. Pour installer Telnet, exécutez la commande sudo yum install telnet -y.
Pour les instances de conteneurs basées sur Windows :
Important : Telnet n’est pas préinstallé sur les AMI Windows optimisées pour Amazon ECS. Pour installer Telnet, utilisez PowerShell comme administrateur afin d’exécuter la commande Install-WindowsFeature -Name Telnet-Client.
- Utilisez le protocole RDP (Remote Desktop Protocol) pour vous connecter à l’instance de conteneur dans laquelle votre tâche est placée.
- Pour vous connecter à votre base de données RDS, utilisez l’invite de commande Windows ou Windows PowerShell pour exécuter la commande suivante :
$ telnet test.ab12cde3fg4.us-east-1.rds.amazonaws.com 3306
Remarque : remplacez test.ab12cde3fg4.us-east-1.rds.amazonaws.com par le point de terminaison de votre base de données. Remplacez 3306 par le port de votre base de données.
Une fois la connexion établie, une page blanche s’affiche. Si la connexion n’est pas établie et que vous recevez des messages d’erreur « Connection Timed Out » ou « Connect failed », procédez comme suit :
- Vérifiez si les groupes de sécurité connectés autorisent l’accès à la base de données RDS. Vous pouvez utiliser soit l’appel d’API DescribeInstances, soit l’onglet Description pour votre ID d’instance sélectionné dans la console Amazon EC2.
Remarque : dans le mode de mise en réseau pont et hôte, les groupes de sécurité attachés à l’instance de conteneur régissent l’accès à la base de données. Dans le mode réseau awsvpc, les groupes de sécurité associés lors du lancement du service ou de la tâche régissent l’accès. Il est recommandé de créer un groupe de sécurité qui autorise le trafic entrant provenant du port de base de données. Puis, attachez le groupe de sécurité à la base de données et à l’instance de conteneur, ou associez le groupe de sécurité à des tâches basées sur awsvpc.
- Vérifiez si la liste de contrôle d’accès au réseau (ACL réseau) et la table de routage associées au sous-réseau autorisent l’accès à la base de données. Pour plus d’informations, consultez Pourquoi ne puis-je pas me connecter à un service lorsque le groupe de sécurité et ACL réseau autorisent le trafic entrant ?
Vérifier les paramètres de connexion à la base de données
Pour vérifier les paramètres de connexion à la base de données, procédez comme suit :
- Dans la section environnement de votre définition de conteneur, transmettez vos variables en toute sécurité. Pour transmettre vos variables d’environnement en toute sécurité, référencez-les dans AWS Systems Manager Parameter Store ou AWS Secrets Manager. Pour en savoir plus, consultez la page Comment transmettre des secrets ou des informations sensibles en toute sécurité à des conteneurs dans une tâche Amazon ECS ?
Remarque : une application utilise des paramètres (comme le point de terminaison de la base de données, le port de la base de données et les informations d’identification d’accès à la base de données) pour établir une connexion avec la base de données. Ces paramètres sont généralement transmis en tant que variables d’environnement à la tâche.
- Si le conteneur de votre tâche peut établir une connexion avec la base de données, mais ne peut pas s’authentifier en raison de mauvais paramètres de connexion, réinitialisez le mot de passe de la base de données.
- Supprimez les espaces de début et de fin de vos paramètres de connexion.
Remarque : les erreurs de syntaxe peuvent compromettre la connexion entre votre conteneur et la base de données RDS.