Mi aplicación se ejecuta como un conjunto de tareas iniciadas por Amazon Elastic Container Service (Amazon ECS) en instancias de Amazon Elastic Compute Cloud (Amazon EC2). Mi aplicación no se puede comunicar con la base de datos de Amazon Relational Database Service (Amazon RDS).
Resolución
Comprobación de las configuraciones de su red
Para comprobar si una instancia de contenedor puede establecer una conexión con la base de datos, complete los siguientes pasos para las instancias de contenedor basadas en Linux o Windows:
Para instancias de contenedor basadas en Linux:
- Cree credenciales de par de claves para usar SSH para la conexión a la instancia de contenedor en la que se encuentra la tarea.
- Para conectarse a su base de datos de RDS, ejecute el siguiente comando:
$ telnet test.ab12cde3fg4.us-east-1.rds.amazonaws.com 3306
Nota: Sustituya test.ab12cde3fg4.us-east-1.rds.amazonaws.com por el punto de conexión de su base de datos. Sustituya 3306 por el puerto de su base de datos.
El resultado es similar al siguiente:
> Trying 172.31.122.28 > Connected to test.ab12cde3fg4.us-east-1.rds.amazonaws.com
> Escape character is '^]'.
Importante: Telnet no viene preinstalado en las imágenes de máquina de Amazon (AMI) optimizadas para Amazon ECS. Para instalar Telnet, ejecute el comando sudo yum install telnet -y.
Para instancias de contenedor basadas en Windows:
Importante: Telnet no viene preinstalado en las AMI de Windows optimizadas para Amazon ECS. Para instalar Telnet, utilice PowerShell como administrador para ejecutar el comando Install-WindowsFeature -Name Telnet-Client.
- Utilice el Protocolo de escritorio remoto (RDP) para conectarse a la instancia de contenedor en la que se encuentre su tarea.
- Para conectarse a su base de datos de RDS, utilice la línea de comandos de Windows o Windows PowerShell para ejecutar el siguiente comando:
$ telnet test.ab12cde3fg4.us-east-1.rds.amazonaws.com 3306
Nota: Sustituya test.ab12cde3fg4.us-east-1.rds.amazonaws.com por el punto de conexión de su base de datos. Sustituya 3306 por el puerto de su base de datos.
Si se establece la conexión, aparece una página en blanco. Si no se establece la conexión y se muestran los errores «Connection Timed Out» o «Connect failed», siga estos pasos:
- Compruebe si los grupos de seguridad asociados permiten acceder a la base de datos de RDS. Puede utilizar la llamada a la API DescribeInstances o la pestaña Descripción para el ID de la instancia seleccionado en la consola de Amazon EC2.
**Nota:**En el modo de red bridge y host, los grupos de seguridad adjuntos a la instancia de contenedor controlan el acceso a la base de datos. En el modo de red awsvpc, los grupos de seguridad asociados durante la iniciación del servicio o la tarea controlan el acceso. Se recomienda crear un grupo de seguridad que permita el tráfico de entrada desde el puerto de la base de datos. A continuación, asocie el grupo de seguridad a la instancia de base de datos y de contenedor, o asocie el grupo de seguridad a las tareas basadas en awsvpc.
- Compruebe si la lista de control de acceso de la red (ACL de la red) y la tabla de enrutamiento asociadas a la subred permiten acceder a la base de datos. Para obtener más información, consulte ¿Por qué no puedo conectarme a un servicio cuando el grupo de seguridad y la ACL de red permiten el tráfico entrante?
Comprobación de los parámetros de conexión con la base de datos
Para comprobar los parámetros de conexión con la base de datos, siga estos pasos:
- En la sección environment de la definición de su contenedor, transmita sus variables de entorno de forma segura. Para ello, consulte las variables de entorno del Almacén de parámetros de AWS Systems Manager o AWS Secrets Manager. Para obtener más información, consulte ¿Cómo puedo transmitir secretos o información confidencial de forma segura a los contenedores de una tarea de Amazon ECS?
Nota: Una aplicación utiliza parámetros (como el punto de conexión de la base de datos, el puerto de la base de datos y las credenciales de acceso a la base de datos) para establecer una conexión con la base de datos. Estos parámetros se suelen transmitir a la tarea como variables de entorno.
- Si el contenedor de la tarea puede establecer una conexión con la base de datos, pero no puede autenticarse debido a que los parámetros de conexión son incorrectos, restablezca la contraseña de la base de datos.
- Elimine los posibles espacios iniciales o finales de sus parámetros de conexión.
Nota: Los errores de sintaxis pueden provocar un error en la conexión entre su contenedor y la base de datos de RDS.