COPY de host remoto (SSH) - Amazon Redshift

COPY de host remoto (SSH)

Você pode usar o comando COPY para carregar dados em paralelo de um ou mais hosts remotos, como instâncias do Amazon Elastic Compute Cloud (Amazon EC2) ou outros computadores. COPY se conecta aos hosts remotos usando o Secure Shell (SSH) e executa comandos nos hosts remotos para gerar a saída de texto. O host remoto pode ser uma instância do EC2 Linux ou outro computador Unix ou Linux configurado para aceitar conexões SSH. O Amazon Redshift pode conectar-se a vários hosts e abrir várias conexões SSH para cada host. O Amazon Redshift envia um comando exclusivo por meio de cada conexão para gerar saída de texto para a saída padrão do host, que o Amazon Redshift lê enquanto faz com um arquivo de texto.

Use a cláusula FROM para especificar a chave do objeto do Amazon S3 para o arquivo manifesto que fornece as informações que o COPY usa para abrir conexões SSH e executar os comandos remotos.

Importante

Se o bucket do S3 que mantém o arquivo manifesto não residir na mesma região da AWS que o cluster, use o parâmetro REGION para especificar a região na qual o bucket está localizado.

Sintaxe

FROM 's3://'ssh_manifest_file' } authorization SSH | optional-parameters

Exemplos

O exemplo a seguir usa um arquivo manifesto para carregar dados de um host remoto usando o SSH.

copy sales from 's3://mybucket/ssh_manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' ssh;

Parâmetros

FROM

A origem dos dados a serem carregados.

's3://copy_from_ssh_manifest_file'

O comando COPY pode conectar-se a vários hosts usando SSH e criar várias conexões SSH para cada host. O COPY executa um comando em cada conexão do host e carrega a saída dos comandos para a tabela em paralelo. O argumento s3://copy_from_ssh_manifest_file especifica a chave do objeto do Amazon S3 para o arquivo manifesto que fornece as informações que o COPY usa para abrir conexões SSH e executar os comandos remotos.

O argumento s3://copy_from_ssh_manifest_file deve referenciar explicitamente um único arquivo; ele não pode ser um prefixo das chaves. Por exemplo:

's3://mybucket/ssh_manifest.txt'

O arquivo manifesto é um arquivo de texto em formato JSON que o Amazon Redshift usa para conectar-se ao host. O arquivo manifesto especifica os endpoints do host SSH e os comandos que serão executados no host para retornar dados ao Amazon Redshift. Você também pode incluir a chave pública do host, o nome de usuário de login e um sinalizador obrigatório para cada entrada. O exemplo a seguir mostra um arquivo manifesto que cria duas conexões 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>"} ] }

O arquivo manifesto contém um construto "entries" para cada conexão SSH. Você pode ter várias conexões para um único host ou várias conexões para vários hosts. As aspas duplas são necessárias, conforme mostrado, para os nomes de campo e valores. As aspas devem ser simples (0x22), e não inclinadas ou “inteligentes”. O único valor que não precisa de aspas duplas é o valor booliano true ou false para o campo "mandatory".

A lista a seguir descreve os campos no arquivo manifesto.

endpoint

O endereço de URL ou o endereço IP do host. Por exemplo, "ec2-111-222-333.compute-1.amazonaws.com", ou "198.51.100.0".

command

O comando a ser executado pelo host para gerar a saída de texto ou a saída binária em formato gzip, lzop, bzip2 ou zstd. O comando pode ser qualquer um que o usuário "host_user_name" tenha permissão para executar. O comando pode ser tão simples quanto imprimir um arquivo, ou pode consultar um banco de dados ou iniciar um script. A saída (arquivo de texto, arquivo binário gzip, arquivo binário lzop ou arquivo binário bzip2) deve estar em uma forma que o comando COPY do Amazon Redshift possa ingerir. Para obter mais informações, consulte Preparação de dados de entrada.

publickey

(Opcional) A chave pública do host. Se fornecida, o Amazon Redshift usará a chave pública para identificar o host. Se a chave pública não for fornecida, o Amazon Redshift não tentará a identificação do host. Por exemplo, se a chave pública do host remoto for ssh-rsa AbcCbaxxx…Example root@amazon.com, digite o seguinte texto no campo de chave pública: "AbcCbaxxx…Example"

mandatory

(Opcional) Uma cláusula que indica se o comando COPY deverá falhar se a tentativa de conexão falhar. O padrão é false. Se o Amazon Redshift não estabelecer pelo menos uma conexão, o comando COPY falhará.

username

(Opcional) O nome de usuário que será usado para fazer logon no sistema do host e executar o comando remoto. O nome de login do usuário deve ser o mesmo do login que foi usado para adicionar a chave pública do cluster do Amazon Redshift ao arquivo de chaves autorizadas do host. O nome de usuário padrão é redshift.

Para obter mais informações sobre como criar um arquivo manifesto, consulte Processo de carregamento de dados.

Para executar COPY de um host remoto, o parâmetro SSH deve estar especificado com o comando COPY. Se o parâmetro SSH não for especificado, COPY vai pressupor que o arquivo especificado com FROM seja um arquivo de dados e ocorrerá uma falha.

Se você usar a compactação automática, o comando COPY realizará duas operações de leitura de dados, o que significa que executará o comando remoto duas vezes. A primeira operação de leitura deve fornecer um exemplo de dados para análise da compactação, e a segunda efetivamente carrega os dados. Se executar o comando remoto duas vezes puder causar um problema, você deverá desabilitar a compactação automática. Para desabilitar a compactação automática, execute o comando COPY com o parâmetro COMPUPDATE definido como OFF. Para obter mais informações, consulte Carregamento de tabelas com compactação automática.

Para obter procedimentos detalhados sobre como usar COPY em SSH, consulte Carregamento de dados de hosts remotos.

autorização

O comando COPY precisa de autorização para acessar dados em outro recurso da AWS, inclusive em Amazon S3, Amazon EMR, Amazon DynamoDB e Amazon EC2. É possível conceder essa autorização referenciando um perfil do AWS Identity and Access Management (IAM) anexado ao cluster (controle de acesso baseado em perfil) ou fornecendo as credenciais de acesso de um usuário (controle de acesso baseado em chave). Para mais segurança e a flexibilidade, recomendamos usar o controle de acesso baseado em função do IAM. Para obter mais informações, consulte Parâmetros de autorização.

SSH

Uma cláusula que especifica que os dados devem ser carregados de um host remoto usando o protocolo SSH. Se especificar SSH, você também deverá fornecer um arquivo manifesto usando o argumento s3://copy_from_ssh_manifest_file.

nota

Se você estiver usando o SSH para copiar de um host usando um endereço IP privado em uma VPC remota, a VPC deverá ter o roteamento VPC aprimorado habilitado. Para obter mais informações sobre o Enhanced VPC Routing, consulte Enhanced VPC Routing do Amazon Redshift.

Parâmetros opcionais

Você também pode especificar os seguintes parâmetros com COPY do SSH:

Parâmetros incompatíveis

Você não pode usar os seguintes parâmetros com COPY do SSH:

  • ENCRYPTED

  • MANIFEST

  • READRATIO