Actualmente estoy intentando configurar una replicación de RDS (MySQL) a Redshift a través de DMS. El extremo de RDS funciona, pero el de Redshift no. He aquí mi arreglo:
VPC
RDS, DMS y Redshift se ejecutan en la misma VPC y comparten las mismas subredes.
roles
Implementé los roles requeridos para DMS ( dms-vpc-role
, dms-cloudwatch-logs-role
) y el específico para Redshift ( dms-access-for-endpoint
) según la documentación de AWS.
Grupos de seguridad
La configuración del grupo de seguridad también es la misma. Tanto RDS como Redshift tienen dos grupos de seguridad (uno vacío e ingreso que hace referencia al vacío). Las reglas de entrada del grupo de seguridad de ingreso son las siguientes, las reglas de salida por defecto permiten todas las comunicaciones salientes.
RDS:
Corrimiento al rojo:
Configuración de la instancia de replicación
La instancia de replicación tiene ambos grupos de seguridad. Supuse que la instancia de replicación en sí misma necesitará un grupo de seguridad, sin embargo, no puedo crear uno que funcione.
¿Qué he hecho antes de escribir este post?
He probado los siguientes escenarios:
Y recibo el siguiente error que interpreto como que DMS no puede llamar a Redshift de ningún tipo.
Test Endpoint failed: Application-Status: 1020912, Application-Message: N/A, Application-Detailed-Message: N/A
En general, el hecho de que funcione con el grupo de seguridad de VPC predeterminado me lleva a la conclusión de que (1) es un problema de red y (2) que un simple cambio en el grupo de seguridad de la instancia de replicación probablemente funcionará. Sin embargo, después de innumerables iteraciones, no tengo idea de lo que me estoy perdiendo aquí.
¡Todas las ideas y sugerencias son muy apreciadas!
Una configuración típica de grupo de seguridad para su escenario debería ser:
DMS-SG
) que permite All Outbound (que es el valor predeterminado normal), además de cualquier entrada que necesite para usar DMSRDS-SG
) que permite el tráfico entrante en el puerto 3306 desde DMS-SG
Redshift-SG
) que permite el tráfico entrante en el puerto 5439 desde DMS-SG
Es decir, la instancia de DMS debe tener su propio grupo de seguridad al que se pueda hacer referencia desde los otros grupos de seguridad. Los grupos de seguridad se aplican a cada instancia individualmente. Las instancias que tienen el 'mismo' grupo de seguridad no obtienen ninguna capacidad especial para comunicarse entre sí a menos que se agregue específicamente como regla al grupo de seguridad.
Para mí, el problema era el punto final de redshift, elimine el número de puerto y el nombre de la base de datos. Perdí un día entero por eso.