

# Conexões do Vertica
<a name="aws-glue-programming-etl-connect-vertica-home"></a>

O AWS Glue para Spark pode ser usado para ler e escrever em tabelas no Vertica no AWS Glue 4.0 e versões posteriores. Você pode definir o que ler no Vertica com uma consulta SQL. Conecte-se ao Vertica usando credenciais de nome de usuário e senha armazenadas no AWS Secrets Manager via conexão do AWS Glue.

Para obter mais informações sobre o Vertica, consulte a [Documentação do Vertica](https://www.vertica.com/docs/9.3.x/HTML/Content/Authoring/UsingVerticaOnAWS/UsingVerticaOnAWS.htm).

## Configurar conexões do Vertica
<a name="aws-glue-programming-etl-connect-vertica-configure"></a>

Para se conectar ao Vertica via AWS Glue, será necessário criar e armazenar suas credenciais do Vertica em um segredo do AWS Secrets Manager e, em seguida, associar esse segredo a uma conexão ao AWS Glue do Vertica. Se sua instância do Vertica estiver em uma Amazon VPC, você também precisará fornecer opções de rede para sua conexão AWS Glue Vertica. É necessário um bucket ou uma pasta do Amazon S3 para usar como armazenamento temporário ao ler e gravar no banco de dados.

Para se conectar ao Vertica via AWS Glue, talvez seja necessário atender a alguns pré-requisitos:
+ Um bucket ou uma pasta do Amazon S3 para usar como armazenamento temporário ao ler e escrever no banco de dados, referido por *tempS3Path*.
**nota**  
Quando o Vertica é usado em pré-visualizações de dados de trabalhos do AWS Glue, os arquivos temporários podem não ser removidos automaticamente de *tempS3Path*. Para garantir a remoção de arquivos temporários, encerre diretamente a sessão de visualização de dados escolhendo **Encerrar sessão** no painel **Visualização de dados**.  
Se não for possível garantir que a sessão de visualização de dados seja encerrada diretamente, considere definir a configuração do ciclo de vida do Amazon S3 para remover dados antigos. Recomendamos remover dados com mais de 49 horas com base no runtime máximo do trabalho somado a uma margem. Para obter mais informações sobre a configuração do Amazon S3, consulte [Gerenciar o ciclo de vida do armazenamento](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) na documentação do Amazon S3.
+ Uma política do IAM com permissões apropriadas para seu caminho do Amazon S3 que você pode associar ao seu perfil de trabalho do AWS Glue.
+ Se a sua instância do Vertica estiver em uma Amazon VPC, configure a Amazon VPC para permitir que seu trabalho do AWS Glue se comunique com a instância do Vertica sem que o tráfego passe pela Internet pública. 

  Na Amazon VPC, identifique ou crie uma **VPC**, uma **Sub-rede** e um **Grupo de segurança** que o AWS Glue usará durante a execução do trabalho. Além disso, você precisa garantir que a Amazon VPC esteja configurada para permitir o tráfego de rede entre sua instância do Vertica e esse local. Seu trabalho precisará estabelecer uma conexão TCP com a porta cliente do Vertica (por padrão, 5433). Com base no layout da rede, isso pode exigir alterações em regras do grupo de segurança, ACLs de rede, gateways de NAT e conexões de emparelhamento.

Em seguida, você pode continuar com a configuração do AWS Glue para usá-lo com o Vertica.

**Para configurar uma conexão com o Vertica:**

1. No AWS Secrets Manager, crie um segredo usando suas credenciais do Vertica, *verticaUsername* e *verticaPassword*. Para criar um segredo no Secrets Manager, siga o tutorial disponível em [Criar uma AWS Secrets Manager segredo ](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret.html) na documentação do AWS Secrets Manager. Depois de criar o segredo, guarde o nome secreto, *SecretName*, para a próxima etapa. 
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `user` com o valor *verticaUsername*.
   + Ao selecionar **Pares chave/valor**, crie um par para a chave `password` com o valor *verticaPassword*.

1. No console do AWS Glue, crie uma conexão seguindo as etapas em [Adicionar uma conexão do AWS Glue](console-connections.md). Depois de criar a conexão, guarde o nome da conexão, *connectionName*, para a próxima etapa. 
   + Ao selecionar um **Tipo de conexão**, selecione Vertica.
   + Ao selecionar **Host do Vertica**, forneça o URL da sua instalação do Vertica.
   + Ao selecionar **Porta do Vertica**, a porta pela qual sua instalação do Vertica está disponível.
   + Ao selecionar um **Segredo da AWS**, forneça o *secretName*.

1. Nas seguintes situações, configurações adicionais podem ser necessárias:
   + 

     Para instâncias do Teradata hospedadas na AWS em uma Amazon VPC
     + Forneça informações de conexão da Amazon VPC à conexão do AWS Glue que define suas credenciais de segurança do Vertica. Ao criar ou atualizar sua conexão, defina **VPC**, **Sub-rede** e **Grupos de segurança** em **Opções de rede**.

Depois de criar uma conexão AWS Glue Vertica, será necessário executar as etapas a seguir antes de chamar seu método de conexão.
+ Conceda ao perfil do IAM associado ao seu trabalho do AWS Glue permissão para *tempS3Path*.
+ Conceda ao perfil do IAM associada ao seu trabalho do AWS Glue permissão para ler *secretName*.
+ Na configuração do trabalho do AWS Glue, forneça *connectionName* como uma **conexão de rede adicional**.

## Ler no Vertica
<a name="aws-glue-programming-etl-connect-vertica-read"></a>

**Pré-requisitos:** 
+ Uma tabela do Vertica que você deseja ler. Você precisará do nome do banco de dados do Vertica, *dbName* e do nome da tabela, *tableName*.
+ Uma conexão AWS Glue Vertica configurada para fornecer informações de autenticação. Conclua as etapas do procedimento anterior, *Para configurar uma conexão com o Vertica* para configurar suas informações de autenticação. Você precisará do nome da conexão AWS Glue, *ConnectionName*. 
+ Um bucket ou pasta do Amazon S3 para usar para armazenamento temporário, mencionado anteriormente. Você precisará do nome *tempS3Path*. Você deverá se conectar a esse local usando o protocolo `s3a`.

Por exemplo: 

```
dynamicFrame = glueContext.create_dynamic_frame.from_options(
    connection_type="vertica",
    connection_options={
        "connectionName": "connectionName",
        "staging_fs_url": "s3a://tempS3Path",
        "db": "dbName",
        "table": "tableName",
    }
)
```

Você também pode fornecer uma consulta SQL SELECT para filtrar os resultados retornados ao seu DynamicFrame ou para acessar um conjunto de dados de várias tabelas.

Por exemplo:

```
dynamicFrame = glueContext.create_dynamic_frame.from_options(
    connection_type="vertica",
    connection_options={
        "connectionName": "connectionName",
        "staging_fs_url": "s3a://tempS3Path",
        "db": "dbName",
        "query": "select * FROM tableName",
    },
)
```

## Escrever em tabelas do Vertica
<a name="aws-glue-programming-etl-connect-vertica-write"></a>

Este exemplo escreve informações de um DynamicFrame existente, *dynamicFrame*, no Vertica. Se a tabela já contiver informações, o AWS Glue anexará dados do seu DynamicFrame.

**Pré-requisitos:** 
+ O nome de uma tabela atual ou desejada, *tableName*, na qual você deseja escrever. Você também precisará do nome do banco de dados Vertica correspondente, *dbName*.
+ Uma conexão AWS Glue Vertica configurada para fornecer informações de autenticação. Conclua as etapas do procedimento anterior, *Para configurar uma conexão com o Vertica* para configurar suas informações de autenticação. Você precisará do nome da conexão AWS Glue, *ConnectionName*. 
+ Um bucket ou pasta do Amazon S3 para usar para armazenamento temporário, mencionado anteriormente. Você precisará do nome *tempS3Path*. Você deverá se conectar a esse local usando o protocolo `s3a`.

Por exemplo: 

```
glueContext.write_dynamic_frame.from_options(
    frame=dynamicFrame,
    connection_type="vertica",
    connection_options={
        "connectionName": "connectionName",
        "staging_fs_url": "s3a://tempS3Path",
        "db": "dbName",
        "table": "tableName",
    }
)
```

## Referência de opções de conexão do Vertica
<a name="aws-glue-programming-etl-connect-vertica-reference"></a>
+ `connectionName` — Obrigatório. Usado para leitura/gravação. O nome de uma conexão do AWS Glue Vertica configurada para fornecer informações de autenticação e rede ao seu método de conexão.
+ `db` — Obrigatório. Usado para leitura/gravação. O nome de um banco de dados no Vertica com o qual seu método de conexão interagirá.
+ `dbSchema`: exigido se necessário para identificar sua tabela. Usado para leitura/gravação. Padrão: `public`. O nome de um esquema com o qual seu método de conexão interagirá.
+ `table`: necessário para escrever, obrigatório para leitura, a menos que `query` seja fornecido. Usado para leitura/gravação. O nome de uma tabela com a qual seu método de conexão interagirá.
+ `query` - Usado para leitura. Uma consulta SQL SELECT que define o que deve ser recuperado na leitura do Teradata.
+ `staging_fs_url` — Obrigatório. Usado para leitura/gravação. Valores válidos: URLs do `s3a`. O URL de um bucket ou pasta do Amazon S3 a ser usado para armazenamento temporário.