¿Por qué falla mi conexión de prueba de AWS Glue?

8 minutos de lectura
0

Quiero solucionar un error en una conexión de prueba en AWS Glue.

Solución

Compruebe los siguientes problemas habituales.

Problemas de red

  • Compruebe la conectividad con los almacenes de datos de JDBC: AWS Glue crea interfaces de red elásticas con direcciones IP privadas en la subred de la conexión. Esto significa que AWS Glue no puede usar la Internet pública para conectarse al almacén de datos.

  • Si el almacén de datos está fuera de la Amazon Virtual Private Cloud (Amazon VPC), la tabla de enrutamiento de la subred debe tener una ruta a una puerta de enlace de NAT en una subred pública. De lo contrario, se agotará el tiempo de espera de la conexión.
    Nota: El almacén de datos fuera de la Amazon VPC puede ser un almacén de datos local o un recurso de Amazon Relational Database Service (Amazon RDS) con un nombre de host público.

  • Si el almacén de datos está en la Amazon VPC, confirme si los grupos de seguridad de la conexión y la lista de control de acceso de la red (ACL de la red) permiten el tráfico al almacén de datos.

  • Compruebe los grupos de seguridad de la conexión: uno de los grupos de seguridad asociados a la conexión debe tener una regla de entrada que haga referencia a sí misma y que esté abierta a todos los puertos TCP. Del mismo modo, uno de los grupos de seguridad también debe estar abierto a todo el tráfico de salida. Puede usar una regla que haga referencia a sí misma para restringir el tráfico de salida a la Amazon VPC. Para obtener más información, consulte Setting up a VPC to connect to JDBC Data Stores.

  • Compruebe la cantidad de direcciones IP libres: la cantidad de direcciones IP libres en la subred debe ser mayor que la cantidad de unidades de procesamiento de datos (DPU) especificadas para el trabajo. Esto permite a AWS Glue crear interfaces de red elásticas en la subred especificada.

  • Confirme que la subred pueda acceder a Amazon Simple Storage Service (Amazon S3): proporcione un punto de enlace de Amazon S3 o proporcione una ruta a una puerta de enlace de NAT en la tabla de enrutamiento de la subred. Para obtener más información, consulte Error: Could not find S3 endpoint or NAT Gateway for subnetId in VPC.

  • Compruebe si tiene un punto de enlace de VPC de AWS KMS: si las conexiones se cifran con Catálogo de datos de AWS Glue, asegúrese de tener una ruta a AWS KMS. Por ejemplo, esta ruta puede ser un punto de enlace de la interfaz de la VPC de AWS KMS. Para obtener más información, consulte Connecting to AWS KMS through a VPC endpoint.

  • Compruebe si la conexión de AWS Glue y la base de datos utilizan VPC diferentes: la conexión de prueba falla y se produce un error de tiempo de espera si se cumplen las siguientes condiciones:
    La base de datos no es de acceso público.
    El trabajo de AWS Glue está asociado a una conexión que usa una VPC diferente sin emparejamiento de VPC.
    Este problema se puede solucionar mediante la creación de una VPC de AWS Glue dedicada y la configuración de los emparejamientos correspondientes que se necesiten entre esta VPC y las demás VPC. Para obtener más información, consulte Connect to and run ETL jobs across multiple VPCs using a dedicated AWS Glue VPC.

  • Compruebe la conectividad con el almacén de datos local: si está probando la conexión de AWS Glue con una base de datos local, se recomienda conectarse a una instancia de Amazon Elastic Compute Cloud (Amazon EC2) en la misma VPC, subred y grupo de seguridad que se usó para la conexión. A continuación, ejecute las siguientes pruebas desde la instancia de Amazon EC2. Si tiene problemas para ejecutar los comandos, revise la VPN y las configuraciones de la VPC, la subred, el grupo de seguridad y las listas de control de acceso (ACL) de la red. Asegúrese de que estas configuraciones no bloqueen la conectividad de la VPC a la base de datos local ni generen problemas de firewall desde la base de datos local. Para obtener más información, consulte How to access and analyze on-premises data stores using AWS Glue.

$ telnet hostname port
$ nc -zv hostname port
$ dig hostname
$ traceroute -AnT -p IP port

Problemas de autenticación

  • Elija el rol de IAM correcto: el rol de AWS Identity and Access Management (IAM) que seleccione para la conexión de prueba debe tener una relación de confianza con AWS Glue. Una forma sencilla de hacerlo es elegir un rol vinculado a un servicio con la política AWSGlueServiceRole asociada.
  • Compruebe el rol de IAM de la conexión: si la contraseña de conexión está cifrada con AWS Key Management Service (AWS KMS), confirme si el rol de IAM de la conexión permite la acción kms:Decrypt en el caso de la clave. Para obtener más información, consulte Setting up encryption in AWS Glue.
  • Compruebe los registros de conexión: los registros de las conexiones de prueba se encuentran en Registros de Amazon CloudWatch, en /aws-glue/testconnection/output. Revise los registros para ver si hay mensajes de error.
  • Revise la configuración de SSL: si el almacén de datos requiere conectividad SSL para el usuario especificado, asegúrese de seleccionar Requerir conexión SSL al crear la conexión en la consola. No seleccione esta opción si el almacén de datos no admite SSL.
  • Revise el nombre de usuario y la contraseña de JDBC: el usuario que accede al almacén de datos de JDBC debe tener suficientes permisos de acceso. Por ejemplo, los rastreadores de AWS Glue requieren permisos SELECT. Un trabajo que escribe en un almacén de datos requiere los permisos INSERT, UPDATE y DELETE.
  • Compruebe la sintaxis de la URL de JDBC: los requisitos de sintaxis varían según el motor de la base de datos. Para obtener más información, consulte Adding an AWS Glue connection y revise los ejemplos en URL de JDBC.

Otras soluciones

  • Revise el tipo de conexión:

  • Asegúrese de elegir el tipo de conexión correcto. Si elige Amazon RDS o Amazon Redshift en Tipo de conexión, AWS Glue rellenará automáticamente la VPC, la subred y el grupo de seguridad.

  • Si necesita conectarse a MySQL, tenga en cuenta que la característica de conexión de prueba solo funciona para las versiones 5.x de MySQL. La versión 8 de MySQL no es compatible con el controlador JDBC integrado de AWS Glue. Si prueba la conexión con una versión de MySQL posterior a la 5.x, es posible que aparezca un error de tiempo de espera de conexión. Sin embargo, podrá seguir usando su conexión de AWS Glue para conectarse a la versión 8 de MySQL con una solución alternativa. Utilice la conexión en un trabajo de extracción, transformación y carga (ETL); para ello, proporcione manualmente el archivo JAR de controlador compatible para la versión 8 de MySQL y versiones posteriores. A continuación, cargue este archivo JAR en su trabajo como cargaría cualquier controlador JDBC en un trabajo de Spark. Para obtener más información, consulte Connection types and options for ETL in AWS Glue.

  • Descarte los problemas de DNS: para descartar problemas de DNS, utilice la dirección IP pública o privada del almacén de datos como URL de JDBC para la conexión de AWS Glue. Al hacerlo, debe desmarcar la casilla Requerir conexión SSL porque ya no usa un nombre de dominio.

  • Compruebe si el controlador es incompatible: si la conexión falla debido a un controlador incompatible, proporcione el controlador correcto como un archivo JAR adicional en las propiedades del trabajo, junto con el nombre de la conexión fallida (si especifica el nombre de la conexión como propiedad del trabajo, AWS Glue usará la configuración de red de la conexión, por ejemplo, la VPC y las subredes). A continuación, cree manualmente el DataFrame de Apache Spark con el archivo JAR que proporcionó en las propiedades del trabajo para anular los controladores predeterminados del almacén de datos de AWS Glue. Una vez creado el DataFrame, si lo desea, puede convertirlo en un DynamicFrame de AWS Glue. Para obtener más información, consulte fromDF.

  • Compruebe si el almacén de datos de JDBC es de acceso público: conéctese al almacén de datos mediante MySQL Workbench y la URL de JDBC. Como alternativa, lance una instancia de Amazon EC2 que tenga acceso SSH a la misma subred y a los mismos grupos de seguridad utilizados para la conexión. A continuación, conéctese a la instancia mediante SSH y ejecute los siguientes comandos para probar la conectividad.

$ dig hostname
$ nc -zv hostname port

Información relacionada

Defining connections in the AWS Glue Data Catalog

Troubleshooting errors in AWS Glue

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años