# Amazon S3

O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos que oferece escalabilidade, disponibilidade de dados, segurança e desempenho líderes do setor.

## Preparando para autenticação

Para acessar seus dados do , você precisa autenticar a conexão com as credenciais da sua conta.

Nota informativaCertifique-se de que a conta que você usa tenha acesso de leitura às tabelas que deseja buscar.

Para se conectar ao Amazon S3, você precisa de permissões no AWS Identity Access Management (IAM) que lhe permitam criar políticas, criar funções e anexar políticas a funções. Isso é necessário para conceder a autorização ao seu compartimento S3:

* [Criando uma política do IAM](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Amazon-S3.htm#Creating).
* [Criando uma função do IAM](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Amazon-S3.htm#Creating2).

### Criando uma política do IAM

[Uma política do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) é uma linguagem de política de acesso baseada em JSON para gerenciar permissões para recursos de compartimento.

Permissões do Amazon S3

| Nome da permissão | Operação | Descrição |
| --- | --- | --- |
| **s3:GetObject** | **[Objeto GET](http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)** | Permite a recuperação de objetos do Amazon S3. |
| **s3:GetObject** | **[Objeto HEAD](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)** | Permite a recuperação de metadados de um objeto sem retornar o próprio objeto. |
| **s3:ListBucket** | **[Compartimento GET (objetos de lista)](http://docs.aws.amazon.com/AmazonS3/latest/API/v2-RESTBucketGET.html)** | Permite o retorno de alguns ou de todos (até 1.000) os objetos em um compartimento. |
| **s3:ListBucket** | **[Compartimento HEAD](http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketHEAD.html)** | Usado para determinar se um compartimento existe e se o acesso é permitido. |

Para criar a política do IAM:

1. No AWS, [navegue até o serviço do IAM](https://console.aws.amazon.com/iam/home#/home) clicando no menu **Serviços** e digitando IAM.
2. Clique em IAM quando ele for exibido nos resultados.
3. Clique em Políticas no menu do lado esquerdo da página.
4. Clique em Criar política.
5. Na página Criar política, clique na guia JSON.
6. Selecione tudo o que estiver no campo de texto e exclua-o.
7. No campo de texto, cole o JSON a seguir e substitua `MyBucketName` pelo nome do seu compartimento:
   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Sid": "",
               "Effect": "Allow",
               "Action": [
               "s3:GetObject",
               "s3:ListBucket"
               ],
               "Resource": [
               "arn:aws:s3:::MyBucketName",
               "arn:aws:s3:::MyBucketName/*"
               ]
           }
       ]
   }
   ```
8. Clique em Revisar política.
9. Na página Revisar política, dê um nome à política. Por exemplo: `qlik_amazon_s3`.
10. Clique em Criar política.

### Criando uma função IAM

Nota informativa

Para concluir esta etapa, você precisa das seguintes permissões do AWS IAM: `CreateRole` e `AttachRolePolicy`. Consulte a [documentação da Amazon](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Operations.html) para obter mais informações.

Se estiver criando várias integrações do Amazon S3, você precisará concluir esta etapa para cada integração que estiver conectando.

1. No AWS, navegue até a página [Funções do IAM](https://console.aws.amazon.com/iam/home#/roles).
2. Clique em Criar função.
3. Na página Criar função:
   1. Na seção Selecionar tipo de entidade confiável, clique na opção Outra conta da AWS.

   2. No campo ID da conta, cole `338144066592`.

   3. Na seção Opções, marque a caixa de seleção Exigir ID externo.

   4. No campo ID externo exibido, cole `qlik_connection_<tenant-id>` e substitua `<tenant-id>` pelo seu ID do locatário.

      Para encontrar o ID do locatário, consulte [Localizar informações do locatário](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/qcs-account-information.htm).

   5. Clique em Avançar: Permissões.
4. Na página Anexar permissões:
   1. Procure a política que você criou em [Criando uma política do IAM](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Amazon-S3.htm#Creating).
   2. Uma vez localizada, marque a caixa ao lado dela na tabela.
   3. Clique em Avançar: Tags.
5. Se quiser inserir alguma tag, faça-o na página Adicionar tags. Caso contrário, clique em Avançar: Revisar.
6. Na página Revisar:
   1. No campo Nome da função, cole `qlik_s3_<tenant-id>` e substitua `<tenant-id>` pelo seu ID do locatário.

      Para encontrar o ID do locatário, consulte [Localizar informações do locatário](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/qcs-account-information.htm).

   2. Insira uma descrição no campo Descrição da função. Por exemplo: `Qlik role for Amazon S3 integration.`

   3. Clique em Criar função.

### Definindo o padrão de pesquisa

O campo Padrão de Pesquisa define os critérios de busca que o Qlik deve usar para selecionar e replicar arquivos. Esse campo aceita expressões regulares, que podem ser usadas para incluir um único arquivo ou vários arquivos.

Ao criar um padrão de pesquisa, tenha em mente o seguinte:

* Ao incluir vários arquivos para uma única tabela, cada arquivo deve ter os mesmos valores de linha de cabeçalho.
* Caracteres especiais, como pontos (`.`), têm um significado especial em expressões regulares. Para corresponder exatamente, eles precisarão ser caracteres de escape. Por exemplo: `.\`
* O Qlik usa Python para expressões regulares, cuja sintaxe pode variar em relação a outras variedades. Tente usar o [PyRegex](http://www.pyregex.com/) para testar suas expressões antes de salvar a integração.
* Os padrões de pesquisa do Parquet (`.parquet`) e Arvo (`.arvo`) também são aceitos.
* Os padrões de pesquisa devem levar em conta como os dados nos arquivos são atualizados. Considere estes exemplos:

| **Cenário** | Arquivo único, atualizado periodicamente | Vários arquivos, gerados diariamente |
| --- | --- | --- |
| **Como as atualizações são feitas** | Um único arquivo JSONL é atualizado periodicamente com dados de clientes novos e atualizados. | Todos os dias é criado um novo arquivo CSV que contém dados novos e atualizados dos clientes. Os arquivos antigos nunca são atualizados após serem criados. |
| **Nome do arquivo** | `customers.jsonl` | `customers-[STRING].csv`, em que `[STRING]` é uma string aleatória exclusiva |
| **Padrão de pesquisa** | Como haverá apenas um arquivo, você pode inserir o nome exato do arquivo no seu compartimento S3:<br><br>```<br>customers\.jsonl<br>```<br><br>`customers\.jsonl`customers\.\.jsonl | Para garantir que os arquivos novos e atualizados sejam identificados, você deve inserir um padrão de busca que corresponda a todos os arquivos que começam com `customers`, independentemente dos caracteres de busca no nome do arquivo:<br><br>```<br>(customers-).*\.csv<br>```<br><br>`(customers-).*\.csv`((customers-)).\*\*\.\.csv |
| **Corresponde** | `customer.jsonl`, exatamente | <ul> <li><code>customers-reQDSwNG6U.csv</code> </li> <li><code>customers-xaPTXfN4tD.csv</code> </li> <li><code>customers-MBJMhCbNCp.csv</code> </li> <li>etc.</li> </ul> |

### Requisitos do arquivo

| Cabeçalho da primeira linha (somente arquivos CSV) | <ul> <li>Todo arquivo deve ter um cabeçalho na primeira linha com os nomes das colunas. A primeira linha de qualquer arquivo é considerada a linha de cabeçalho e apresentará esses valores como colunas disponíveis para seleção.                        </li> <li>Arquivos com os mesmos valores de cabeçalho da primeira linha, se incluir vários arquivos em uma tabela. A <span>Amazon S3</span> integração permite que você mapeie vários arquivos para uma única tabela de destino. Os valores da linha do cabeçalho são usados para determinar o esquema de uma tabela. Para obter os melhores resultados, cada arquivo deve ter os mesmos valores de linha de cabeçalho.                            <p>Isso é diferente de configurar várias tabelas. Consulte <a href="https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/SourcesConnections/Connecting-Amazon-S3.htm#Defining">Definindo o padrão de pesquisa</a> para obter exemplos.</p></li> </ul> |
| --- | --- |
| Tipos de arquivo | <ul> <li>CSV (<code>.csv</code>)</li> <li>Texto (<code>.txt</code>)</li> <li>JSONL (<code>.jsonl</code>)</li> <li>Parquet (<code>.parquet</code>)</li> <li>Arvo (<code>.arvo</code>)						<p>Os arquivos Avro devem incluir um esquema para serem aceitos.</p></li> </ul> |
| Tipos de compactação | Esses arquivos devem ser compactados corretamente ou ocorrerão erros durante a extração.<br><br><ul> <li>arquivos compactados com gzip (<code>.gz</code>)</li> </ul> |
| Delimitadores (somente arquivos CSV) | <ul> <li>Vírgula (<code>,</code>)</li> <li>Tabulação (<code>/t</code>)</li> <li>Tubo (<code>\|</code>)</li> <li>Ponto e vírgula (<code>;</code>)</li> </ul> |
| Codificação de caracteres | UTF-8 (`.csv`, `.txt` e `.jsonl` apenas)<br><br>Nota informativaOs arquivos `.parquet` e `.arvo` são arquivos binários brutos. |

## Criando a conexão

Para obter mais informações, consulte [Conectando-se a aplicativos SAP](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Landing/connecting-web-applications.htm).

1. Preencha as propriedades de conexão obrigatórias.

2. Forneça um nome para a conexão em Nome da conexão.

3. Selecione Abrir metadados de conexão para definir metadados para a conexão quando ela for criada.

4. Clique em Criar.

Configurações de conexão

| Configuração | Descrição |
| --- | --- |
| Gateway de dados | Selecione um Gateway do Data Movement se for necessário para seu caso de uso.<br><br>Nota informativa<br><br>Esse campo não está disponível com a assinatura do Iniciante do Qlik Talend Cloud, pois esta não é compatível com o Gateway do Data Movement. Se você tiver outro nível de assinatura e não quiser usar o Gateway do Data Movement, selecione Nenhum.<br><br>Para obter informações sobre os benefícios do Gateway do Data Movement e casos de uso que exigem isso, consulte [Qlik Data Gateway - Data Movement](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/replication-gateway.htm). |
| Data de Início | Digite a data, no formato `MM/DD/YYYY`, a partir da qual os dados devem ser replicados da fonte de dados para o destino. |
| Compartimento S3 | Nome do compartimento S3. |
| ID da conta AWS | O ID da conta AWS da conta em que o compartimento existe.<br><br>O ID da conta AWS pode ser encontrado no Console de Gerenciamento da AWS em Detalhes da conta. |
| Padrão de pesquisa | Digite os arquivos a serem incluídos em sua tabela. Você pode inserir um único nome de arquivo ou uma expressão regular.<br><br>Exemplo: `users\*.csv``products\*.jsonl`. |
| Diretório | Limite a pesquisa nesse caminho de diretório. Quando definido, apenas os arquivos nessa localização serão pesquisados e serão selecionados aqueles que corresponderem ao padrão de pesquisa. Você não pode usar uma expressão regular.<br><br>Exemplo: csv-exports-folder ou employee\_jsonl\_exports. |
| Configuração da tabela<br><br>Configure uma tabela especificando os arquivos que deseja incluir.<br><br>Você pode configurar várias tabelas. |  |
| Nome da tabela | Nome da tabela.<br><br>Cada destino tem suas próprias regras sobre como as tabelas podem ser nomeadas. Por exemplo, os nomes de tabelas do Amazon Redshift não podem exceder 127 caracteres. |
| Chave primária | Digite a chave primária para identificar linhas ou registros exclusivos. Quando você inserir mais de uma chave, use vírgulas para separar os valores.<br><br><ul><li>Para arquivos CSV, insira os campos de cabeçalho ou os nomes das colunas.</li><li>Para arquivos JSONL, digite os nomes dos atributos ou as chaves dos objetos.</li></ul><br><br>Exemplo: id, nome. |
| Especificar campos de data e hora | Digite os valores que devem aparecer como datetime em vez de string em sua tabela.<br><br>Exemplo: created\_at, modified\_at. |
| Delimitador | Selecione o delimitador na lista suspensa. |