COPY de hosts remotos (SSH)
Puede utilizar el comando COPY para cargar datos en paralelo desde uno o más alojamientos remotos, como instancias de Amazon Elastic Compute Cloud (Amazon EC2) u otros equipos. COPY se conecta a los hosts remotos mediante Secure Shell (SSH) y ejecuta los comandos en los hosts remotos para generar la salida de texto. El alojamiento remoto puede ser una instancia EC2 de Linux u otro equipo Linux o Unix configurada para aceptar conexiones SSH. Amazon Redshift puede conectarse a varios alojamientos y puede establecer varias conexiones SSH en cada alojamiento. Amazon Redshift envía un comando único a través de cada conexión para generar una salida de texto que aparecerá en la salida estándar del alojamiento, la cual Amazon Redshift leerá después como si fuese cualquier otro archivo de texto.
Utilice la cláusula FROM para especificar la clave de objeto de Amazon S3 para el archivo de manifiesto que proporciona la información que COPY utilizará para establecer las conexiones SSH y ejecutar los comandos remotos.
importante
Si el bucket de S3 que contiene el archivo de manifiesto no se encuentra en la misma región de AWS que el clúster, debe utilizar el parámetro REGION para especificar la región en la que se encuentra el bucket.
Sintaxis
FROM 's3://'ssh_manifest_file' } authorization SSH | optional-parameters
Ejemplos
En el siguiente ejemplo, se utiliza un archivo de manifiesto para cargar datos desde un host remoto mediante SSH.
copy sales from 's3://amzn-s3-demo-bucket/ssh_manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' ssh;
Parámetros
- FROM
-
El origen de los datos a cargar.
- 's3://copy_from_ssh_manifest_file'
-
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 argumento s3://copy_from_ssh_manifest_file especifica la clave de objeto de Amazon S3 del archivo de manifiesto que proporciona la información que COPY utiliza para establecer conexiones SSH y ejecutar los comandos remotos.
El argumento s3://copy_from_ssh_manifest_file debe referenciar de forma explícita un solo archivo y no puede ser un prefijo de clave. A continuación se muestra un ejemplo:
's3://amzn-s3-demo-bucket/ssh_manifest.txt'
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 host SSH y los comandos que se ejecutarán en los hosts para devolver 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. En el siguiente ejemplo, se muestra un archivo de manifiesto que crea dos conexiones SSH:
{ "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 contiene una construcción
"entries"
para cada conexión SSH. Puede tener distintas conexiones a un único host o distintas conexiones a distintos hosts. Se requieren caracteres de comillas dobles, como se muestra, para los valores y los nombres de campo. Las comillas deben ser las comillas simples (0x22), no las comillas inclinadas o “inteligentes”. El único valor que no necesita caracteres de comillas dobles es el valor booleanotrue
ofalse
del campo"mandatory"
.En la siguiente lista se describen los campos del archivo de manifiesto.
- punto de conexión
-
Se trata de la dirección URL o la dirección IP del alojamiento; por ejemplo,
"ec2-111-222-333.compute-1.amazonaws.com"
o"198.51.100.0"
. - comando
-
El comando que ejecutará el host para generar la salida de texto o la salida binaria en formato gzip, lzop, bzip2 o zstd. 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 puede consultar una base de datos o lanzar un script. La salida (archivo de texto o archivos binarios 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…Example root@amazon.com
, escriba el siguiente texto en el campo de clave pública:"AbcCbaxxx…Example"
. - mandatory
-
(Opcional) Una cláusula que indica si el comando COPY debe fallar en caso de que el intento de conexión falle. El valor predeterminado es
false
. Si Amazon Redshift no logra establecer al menos una conexión, el comando COPY presentará error. - 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 del usuario debe ser el mismo que se utilizó para agregar la clave pública del clúster de Amazon Redshift al archivo de claves autorizadas del alojamiento. El nombre de usuario predeterminado es
redshift
.
Para obtener más información acerca de la creación de un archivo de manifiesto, consulte Proceso de carga de datos.
Para utilizar COPY desde un host remoto, se debe especificar el parámetro SSH con el comando COPY. Si no se especifica el parámetro SSH, COPY supone que el archivo especificado con FROM es un archivo de datos y no se ejecutará correctamente.
Si utiliza la compresión automática, el comando COPY realiza dos operaciones de lectura de los datos, lo que significa que ejecutará el comando remoto dos veces. La primera operación de lectura se realiza para proporcionar una muestra de datos para el análisis de compresión, la segunda operación de lectura es la que carga los datos. Si ejecutar el comando remoto dos veces puede producir un problema, debe deshabilitar la compresión automática. Para deshabilitar la compresión automática, ejecute el comando COPY con el parámetro COMPUPDATE establecido en OFF. Para obtener más información, consulte Carga de tablas con compresión automática.
Para obtener los procedimientos detallados para utilizar COPY de SSH, consulte Carga de datos desde hosts remotos.
- authorization
-
El comando COPY necesita autorización para acceder a los datos de otro recurso de AWS, incluidos los recursos de Amazon S3, Amazon EMR, Amazon DynamoDB y Amazon EC2. Puede proporcionar esa autorización referenciando un rol de AWS Identity and Access Management (IAM) que esté adjunto al clúster (control de acceso basado en roles) o proporcionando las credenciales de acceso de un usuario (control de acceso basado en claves). Para mayor seguridad y flexibilidad, le recomendamos utilizar un control de acceso basado en roles de IAM. Para obtener más información, consulte Parámetros de autorización.
- SSH
-
Una cláusula que especifica que los datos se van a cargar desde un host remoto mediante el protocolo SSH. Si especifica SSH, también debe proporcionar un archivo de manifiesto mediante el argumento s3://copy_from_ssh_manifest_file.
nota
Si utiliza SSH para copiar datos de un host con una dirección IP privada en una VPC remota, la VPC debe tener habilitado el direccionamiento de VPC mejorado. Para obtener más información sobre el direccionamiento de VPC mejorado, consulte el artículo sobre el direccionamiento de VPC mejorado en Amazon Redshift
Parámetros opcionales
Opcionalmente, puede especificar los siguientes parámetros con COPY de SSH:
Parámetros no admitidos
No puede utilizar los siguientes parámetros con COPY de SSH:
-
ENCRYPTED
-
MANIFEST
-
READRATIO