¿Cómo puedo acceder a un clúster privado de Amazon Redshift desde mi máquina local?

6 minutos de lectura
0

Quiero usar mi equipo local para acceder a un clúster de Amazon Redshift que se encuentra en una subred privada de Amazon Virtual Private Cloud (Amazon VPC).

Breve descripción

Utilice una instancia de Amazon Elastic Compute Cloud (Amazon EC2) y SQL Workbench/J para crear un túnel SSH. El túnel enruta todo el tráfico de entrada desde la máquina local al clúster privado de Amazon Redshift.

Solución

Creación de la Amazon VPC, la instancia EC2 y el clúster de Amazon Redshift

Para crear la Amazon VPC, la instancia de EC2 y el clúster de Amazon Redshift, siga estos pasos:

  1. Cree una Amazon VPC con subredes públicas y privadas.

  2. Lance una instancia de EC2 desde una imagen de máquina de Amazon (AMI) de Amazon Linux 2 en la subred pública de la Amazon VPC. Al crear la instancia, elija las siguientes opciones:
    En Asignar IP pública automáticamente, elija Habilitar. Como alternativa, asigne una dirección IP elástica a la instancia.
    Cree un nuevo grupo de seguridad con una regla de SSH.
    En Origen, elija Personalizado y, a continuación, introduzca el bloque de CIDR. Como alternativa, elija Mi IP.

  3. En la consola de Amazon Redshift, cree una subred de clúster. Introduzca la siguiente información:
    En ID de VPC, elija el ID de su Amazon VPC.
    En ID de subred, elija el ID de la subred privada.

  4. Cree un nuevo grupo de seguridad.

  5. Añada una regla al grupo de seguridad que permita el tráfico de entrada desde el grupo de seguridad de la instancia. Introduzca la siguiente información:
    En Tipo, elija TCP personalizado.
    En Rango de puertos, introduzca el puerto predeterminado para Amazon Redshift: 5439.
    En Origen, elija Personalizado y, a continuación, introduzca el nombre de su grupo de seguridad.

  6. Lance un nuevo clúster de Amazon Redshift o restaure un clúster a partir de una instantánea. En la página Configuración adicional, elija las siguientes opciones:
    En Elegir una VPC, elija su Amazon VPC.
    En Grupo de subredes de clúster, elija su grupo de subredes.
    En De acceso público, seleccione No.
    En Grupos de seguridad de VPC, elija su grupo de seguridad. Espere a que el estado del clúster sea Disponible.

  7. Ejecute el siguiente comando para conectarse a la instancia de EC2 desde su máquina local:

    ssh -i "your_key.pem" ec2-user@your_EC2_endpoint

    Nota: Sustituya your_key.pem y your_EC2_endpoint por sus valores. Para obtener más información, consulte Conéctese a la instancia de Linux desde Linux o macOS mediante SSH.

  8. Ejecute el siguiente comando para instalar telnet:

    sudo yum install telnet
  9. Para usar telnet para probar la conexión con su clúster de Amazon Redshift, ejecute el siguiente comando:

    telnet cluster-endpoint cluster-port

    Nota: Sustituya cluster-endpoint y cluster-port por sus valores.
    Como alternativa, ejecute el siguiente comando para usar dig y confirmar que su máquina local pueda acceder a la dirección IP privada del clúster de Amazon Redshift:

    dig cluster-endpoint

    Nota: Sustituya cluster-endpoint por el punto de enlace del clúster.

Creación del túnel

Para crear un túnel, siga estos pasos:

  1. Instale SQL Workbench/J en su máquina local.
  2. Descargue el controlador JDBC de Amazon Redshift más reciente.
  3. En SQL Workbench/J, utilice el controlador JDBC para crear un perfil de conexión.
  4. Para configurar la conexión SSH en SQL Workbench/J, elija SSH y, a continuación, introduzca la siguiente información:
    En Nombre de host SSH, introduzca la dirección IP pública o el DNS de la instancia de EC2.
    En Puerto SSH, introduzca 22.
    En Nombre de usuario, introduzca ec2-user.
    En Archivo de clave privada, introduzca el archivo .pem que descargó al crear la instancia de EC2.
    En Contraseña, deje el campo en blanco.
    En Puerto local, introduzca un puerto local libre. El clúster de Amazon Redshift usa el puerto 5439 de forma predeterminada.
    En Nombre de host de base de datos, introduzca el punto de enlace del clúster. El punto de enlace no puede incluir el número de puerto ni el nombre de la base de datos.
    En Puerto de base de datos, escriba 5439.
    Seleccione la opción Reescribir URL de JDBC.
  5. Elija OK.
  6. Asegúrese de introducir correctamente la URL de JDBC, el nombre de superusuario y la contraseña.
  7. Para confirmar si la conexión funciona, seleccione Prueba. Para obtener más información, consulte Connecting through an SSH tunnel en el sitio web de SQL Workbench/J.

(Opcional) Modificación de la conexión para un usuario de AWS Identity and Access Management (IAM)

Para conectarse al clúster de Amazon Redshift como usuario de IAM, siga estos pasos para modificar el perfil de conexión:

  1. Revise la política de usuario de IAM. La política de usuario de IAM debe permitir las acciones GetClusterCredentials, JoinGroup y CreateClusterUser de Amazon Redshift para los recursos dbgroup, dbuser y dbname. A continuación, encontrará un ejemplo de política de usuario de IAM:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "redshift:GetClusterCredentials",
                    "redshift:CreateClusterUser",
                    "redshift:JoinGroup"
                ],
                "Resource": [
                    "arn:aws:redshift:eu-west-2:012345678912:dbgroup:clustername/group_name",
                    "arn:aws:redshift:eu-west-2:012345678912:dbuser:clustername/user_name or * ",
                    "arn:aws:redshift:eu-west-2:012345678912:dbname:clustername/database_name"
                ]
            }
        ]
    }
    Nota: Sustituya us-west-2 por la región de AWS en la que se encuentra su clúster, 012345678912 por el ID de su cuenta de AWS y user_name por el nombre del usuario de Amazon Redshift. Como alternativa, puede usar «*» en lugar de un nombre de usuario específico.
  2. En SQL Workbench/J, cambie la primera parte de la URL de JDBC del perfil de conexión a jdbc:redshift:iam. Por ejemplo, cambie la URL de JDBC a jdbc:redshift:iam://127.0.0.1:5439/example.
  3. Seleccione Extended Properties y, a continuación, introduzca la siguiente información:
    En AccessKeyID, introduzca el ID de la clave de acceso del usuario de IAM.
    En SecretAccessKey, introduzca la clave de acceso secreta del usuario de IAM.
    (Opcional) En DbGroups, elija esta opción para obligar al usuario de IAM a unirse a un grupo existente.
    En DbUser, introduzca el nombre del usuario de IAM.
    En AutoCreate, defina la opción como true.
    En ClusterID, introduzca el nombre del clúster de Amazon Redshift.
    En Región, introduzca la región en la que se encuentra el clúster, como us-east-1.
  4. En la página del perfil de conexión al clúster, elija Test.

Información relacionada

Why can't I connect to my Amazon Redshift cluster?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 7 meses