Paso 5: Crear un archivo de manifiesto - Amazon Redshift

Paso 5: Crear un archivo de manifiesto

El comando COPY puede conectarse con distintos hosts mediante Secure Shell (SSH, Shell seguro) y puede crear distintas conexiones SSH a cada host. COPY ejecuta un comando a través de cada conexión al host y, luego, carga la salida en la tabla desde los comandos en paralelo. El archivo de manifiesto es un archivo de texto con formato JSON que Amazon Redshift usa para conectarse al alojamiento. En el archivo de manifiesto, se especifican los puntos de conexión del alojamiento SSH y los comandos que se ejecutan en los alojamientos para devolver los datos a Amazon Redshift. De forma opcional, puede incluir la clave pública del host, el nombre de usuario de inicio de sesión y una marca obligatoria para cada entrada.

Cree el archivo de manifiesto en su equipo local. En un paso posterior, cargará el archivo en Amazon S3.

El archivo de manifiesto se encuentra en el siguiente formato:

{ "entries": [ {"endpoint":"<ssh_endpoint_or_IP>", "command": "<remote_command>", "mandatory":true, "publickey": "<public_key>", "username": "<host_user_name>"}, {"endpoint":"<ssh_endpoint_or_IP>", "command": "<remote_command>", "mandatory":true, "publickey": "<public_key>", "username": "host_user_name"} ] }

El archivo de manifiesto tiene una construcción "entries" para cada conexión SSH. Cada entrada representa una conexión SSH única. Puede tener distintas conexiones a un único host o distintas conexiones a distintos hosts. Se requieren comillas dobles, como se muestra, para los valores y los nombres de campo. El único valor que no necesita comillas dobles es el valor booleano true o false del campo obligatorio.

A continuación se describen los campos del archivo de manifiesto.

punto de conexión

La dirección URL o dirección IP del host. Por ejemplo, "ec2-111-222-333.compute-1.amazonaws.com" o "22.33.44.56".

comando

El comando que el alojamiento ejecutará para generar la salida binaria o de texto (en formato gzip, lzop o bzip2). El comando puede ser cualquiera que el usuario "host_user_name" (nombre_de_usuario_del_host) tenga permiso para ejecutar. El comando puede ser tan sencillo como imprimir un archivo, o podría consultar una base de datos o lanzar un script. La salida (archivo de texto o archivo binario gzip, lzop o bzip2) debe estar en un formato que el comando COPY de Amazon Redshift pueda capturar. Para obtener más información, consulte Preparación de los datos de entrada.

publickey

(Opcional) La clave pública del host. Si se proporciona la clave pública, Amazon Redshift la usará para identificar el alojamiento. Si no se proporciona la clave pública, Amazon Redshift no intentará identificar el alojamiento. Por ejemplo, si la clave pública del host remoto es: ssh-rsa AbcCbaxxx…xxxDHKJ root@amazon.com, escriba el siguiente texto en el campo de clave pública: AbcCbaxxx…xxxDHKJ.

mandatory

(Opcional) Indica si el comando COPY debe fallar en caso de que la conexión falle. El valor predeterminado es false. Si Amazon Redshift no logra al menos una conexión de manera correcta, se produce un error en el comando COPY.

username

(Opcional) Se trata del nombre de usuario que se utilizará para iniciar sesión en el sistema de alojamiento y ejecutar el comando remoto. El nombre de inicio de sesión de usuario debe ser el mismo que el del inicio de sesión que se utilizó para agregar la clave pública al archivo de claves autorizadas del host en el paso 2. El nombre de usuario predeterminado es "redshift".

En el siguiente ejemplo, se observa un manifiesto completado para abrir cuatro conexiones en el mismo alojamiento y ejecutar un comando diferente a través de cada conexión:

{ "entries": [ {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata1.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata2.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata3.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata4.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"} ] }