

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Criar uma integração de eventos do S3 para copiar automaticamente arquivos de buckets do Amazon S3
<a name="loading-data-copy-job"></a>

**nota**  
A versão de pré-visualização para cópia automática foi encerrada. Consequentemente, os clusters de visualização serão removidos automaticamente trinta dias após o término do período de visualização. Se você planeja continuar usando a cópia automática, recomendamos recriar seus trabalhos de cópia automática existentes em outro cluster do Amazon Redshift. Não é possível fazer a atualização de um cluster de visualização prévia para a versão mais recente do Amazon Redshift.

Você pode usar uma tarefa de cópia automática para carregar dados em suas tabelas do Amazon Redshift usando arquivos armazenados no Amazon S3. O Amazon Redshift detecta quando novos arquivos do Amazon S3 são adicionados ao caminho especificado em seu comando COPY. Depois, um comando COPY é executado automaticamente sem que você precise criar um pipeline externo de ingestão de dados. O Amazon Redshift mantém o controle de quais arquivos foram carregados. O Amazon Redshift determina o número de arquivos agrupados por comando COPY. Você pode ver os comandos COPY resultantes nas visualizações do sistema.

O primeiro passo para criar um COPY JOB automático é criar uma integração de eventos do S3. Quando um novo arquivo aparece no bucket de origem do Amazon S3, o Amazon Redshift gerencia o carregamento dos arquivos no banco de dados usando o comando COPY.

## Pré-requisitos para criar uma integração de eventos do S3
<a name="loading-data-copy-job-prerequisites"></a>

Para configurar a integração de eventos do S3, confirme se os pré-requisitos a seguir foram atendidos.
+ O bucket do Amazon S3 deve ter uma política de bucket que conceda diversas permissões do Amazon S3. Por exemplo, a política de exemplo a seguir concede permissões para o bucket de recursos `amzn-s3-demo-bucket` que está hospedado em {{us-east-1}}. Tanto o bucket do Amazon S3 quanto a integração estão na mesma Região da AWS.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "Auto-Copy-Policy-01",
              "Effect": "Allow",
              "Principal": {
                  "Service": "redshift.amazonaws.com"
                  },
              "Action": [
                  "s3:GetBucketNotification",
                  "s3:PutBucketNotification",
                  "s3:GetBucketLocation"
              ],
              "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}:*",
              "Condition": {
                  "ArnLike": {
                      "aws:SourceArn": "arn:aws:redshift:{{us-east-1}}:{{111122223333}}:integration:*"
                  },
                  "StringEquals": {
                      "aws:SourceAccount": "{{111122223333}}"
                  }
              }
          }
      ]
  }
  ```

------
+ O cluster provisionado do Amazon Redshift de destino ou o namespace do Redshift sem servidor deve ter permissão para o bucket. Confirme se o perfil do IAM associado ao cluster ou namespace sem servidor tem uma política do IAM que concede as permissões adequadas. A política deve permitir `s3:GetObject` para um recurso de bucket, como `{{amzn-s3-demo-bucket}}`, e `s3:ListBucket` para um recurso de bucket e o respectivo conteúdo, como `{{amzn-s3-demo-bucket}}/*`.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AutoCopyReadId",
              "Effect": "Allow",
              "Action": [
                  "s3:GetObject",
                  "s3:ListBucket"
              ],
              "Resource": [
                  "arn:aws:s3:::{{amzn-s3-demo-bucket}}",  
                  "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*" 
              ]
          }
      ]
  }
  ```

------

  Adicione a política a um perfil do IAM que tenha uma relação de confiança para o perfil da seguinte maneira:

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "Service": [
                      "redshift.amazonaws.com"
                  ]
              },
              "Action": "sts:AssumeRole"
          }
      ]
  }
  ```

------

  Se o data warehouse de destino for um cluster provisionado, você poderá associar um perfil do IAM ao cluster provisionado usando o console do Amazon Redshift na guia **Permissões do cluster** nos detalhes do cluster. Para obter informações sobre como associar um perfil ao cluster provisionado, consulte [Associar funções do IAM a clusters](https://docs.aws.amazon.com/redshift/latest/mgmt/copy-unload-iam-role-associating-with-clusters.html) no *Guia de gerenciamento do Amazon Redshift*.

  Se o data warehouse de destino for o Redshift sem servidor, você poderá associar o perfil do IAM ao namespace sem servidor usando o console do Redshift sem servidor, na guia **Segurança e criptografia** nos detalhes do namespace. Para obter informações sobre como associar um perfil ao namespace sem servidor, consulte [Conceder as permissões necessárias para o Amazon Redshift Serverless](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-security-other-services.html) no *Guia de gerenciamento do Amazon Redshift*.
+ O data warehouse do Amazon Redshift também deve ter uma política de recursos que permita o bucket do Amazon S3. Se você usar o console do Amazon Redshift, ao criar a integração de eventos do S3, o Amazon Redshift fornecerá a opção **Corrigir para mim** para adicionar essa política ao data warehouse do Amazon Redshift. Para atualizar uma política de recursos, você pode usar o comando [put-resource-policy](https://docs.aws.amazon.com/cli/latest/reference/redshift/put-resource-policy.html) da AWS CLI. Por exemplo, para anexar uma política de recursos ao cluster provisionado do Amazon Redshift e realizar uma integração de eventos do S3 com um bucket do Amazon S3, execute um comando da AWS CLI semelhante ao apresentado abaixo. O exemplo a seguir mostra uma política para um namespace de cluster provisionado na Região da AWS {{us-east-1}} referente à conta de usuário {{123456789012}}. O nome do bucket é {{amzn-s3-demo-bucket}}.

  ```
  aws redshift put-resource-policy \
  --policy file://rs-rp.json \
  --resource-arn "arn:aws:redshift: {{us-east-1}}:{{123456789012}}:namespace/cc4ffe56-ad2c-4fd1-a5a2-f29124a56433"
  ```

  Onde `rs-rp.json` contém:

------
#### [ JSON ]

****  

  ```
  {
  	"Version":"2012-10-17",		 	 	 
  	"Statement": [
  		{
  			"Effect": "Allow",
  			"Principal": {
  				"Service": "redshift.amazonaws.com"
  			},
  			"Action": "redshift:AuthorizeInboundIntegration",
  			"Resource": "arn:aws:redshift:{{us-east-1}}:{{123456789012}}:namespace:cc4ffe56-ad2c-4fd1-a5a2-f29124a56433",
  			"Condition": {
  				"StringEquals": {
  					"aws:SourceArn": "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
  					"aws:SourceAccount": {{111122223333}}
  				}
  			}
  		},
  		{
  			"Effect": "Allow",
  			"Principal": {
  				"AWS": "arn:aws:iam::{{111122223333}}:role/myRedshiftRole"
  			},
  			"Action": "redshift:CreateInboundIntegration",
  			"Resource": "arn:aws:redshift:{{us-east-1}}:{{123456789012}}:namespace:cc4ffe56-ad2c-4fd1-a5a2-f29124a56433",
  			"Condition": {
  				"StringEquals": {
  					"aws:SourceArn": "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
  					"aws:SourceAccount": {{111122223333}}
  				}
  			}
  		}
  	]
  }
  ```

------

  Para anexar uma política de recursos ao namespace do Redshift sem servidor e realizar uma integração de eventos do S3 com um bucket do Amazon S3, execute um comando da AWS CLI semelhante ao apresentado abaixo. O exemplo a seguir mostra uma política para um namespace sem servidor na Região da AWS {{us-east-1}} referente à conta de usuário {{123456789012}}. O nome do bucket é {{amzn-s3-demo-bucket}}.

  ```
  aws redshift put-resource-policy \
  --policy file://rs-rp.json \
  --resource-arn "arn:aws:redshift-serverless:{{us-east-1}}:{{123456789012}}:namespace/namespace-1"
  ```

  Onde `rs-rp.json` contém:

------
#### [ JSON ]

****  

  ```
  {
  	"Version":"2012-10-17",		 	 	 
  	"Statement": [
  		{
  			"Effect": "Allow",
  			"Principal": {
  				"Service": "redshift.amazonaws.com"
  			},
  			"Action": "redshift:AuthorizeInboundIntegration",
  			"Resource": "arn:aws:redshift-serverless:{{us-east-1}}:{{123456789012}}:namespace/namespace-1",
  			"Condition": {
  				"StringEquals": {
  					"aws:SourceArn": "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
  					"aws:SourceAccount": {{111122223333}}
  	
  				}
  			}
  		},
  		{
  			"Effect": "Allow",
  			"Principal": {
  				"AWS": "arn:aws:iam::{{123456789012}}:user/myUser"
  			},
  			"Action": "redshift:CreateInboundIntegration",
  			"Resource": "arn:aws:redshift-serverless:{{us-east-1}}:{{123456789012}}:namespace/namespace-1",
  			"Condition": {
  				"StringEquals": {
  					"aws:SourceArn": "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
  					"aws:SourceAccount": {{111122223333}}
  				}
  			}
  		}
  	]
  }
  ```

------

## Criar uma integração de eventos do S3
<a name="loading-data-copy-job-create-s3-event-integration"></a>

Para configurar o trabalho de cópia, primeiro defina uma integração de eventos do S3.

------
#### [ Amazon Redshift console ]

**Como criar uma integração de eventos do Amazon S3 no console do Amazon Redshift**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon Redshift em [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/).

1. No painel de navegação à esquerda, selecione **Integração de eventos do S3**.

1. Escolha **Criar integração de eventos do Amazon S3** para abrir o assistente e criar uma integração de eventos do S3 para usar com cópia automática. O bucket de origem do Amazon S3 e o data warehouse de destino do Amazon Redshift devem estar na mesma Região da AWS. Especifique as seguintes informações ao executar as etapas para criar uma integração:
   + **Nome da integração**: é um identificador exclusivo entre todas as integrações de propriedade da Conta da AWS na Região da AWS atual.
   + **Descrição**: é um texto que descreve a integração de eventos do Amazon S3 para referência posterior.
   + **Bucket do S3 de origem**: o bucket do Amazon S3 está na Conta da AWS e Região da AWS atual, que é a origem dos dados de ingestão no Amazon Redshift.
   + **Data warehouse do Amazon Redshift**: é o cluster provisionado do Amazon Redshift de destino ou o grupo de trabalho do Redshift sem servidor que recebe os dados da integração.

     Se o Amazon Redshift de destino estiver na mesma conta, você poderá selecionar o destino. Se o destino estiver em uma conta diferente, especifique o **ARN do data warehouse do Amazon Redshift**. O destino deve ter uma política de recursos com entidades principais autorizadas e origem de integração. Se você não tiver as políticas de recursos corretas no destino e ele estiver na mesma conta, selecione a opção **Corrigir isso para mim** para aplicar automaticamente as políticas de recursos durante o processo de criação da integração. Se o destino estiver em uma Conta da AWS diferente, você precisará aplicar manualmente a política de recursos no warehouse do Amazon Redshift.

1. Insira até 50 **Chaves** de tag e com um **valor** opcional para fornecer metadados adicionais sobre a integração.

1. É exibida uma página de revisão na qual você pode selecionar **Criar integração de eventos do S3**.

------
#### [ AWS CLI ]

Para criar uma integração de eventos do Amazon S3 usando a AWS CLI, use o comando `create-integration` com as seguintes opções:
+ `integration-name`: especifique um nome para a integração.
+ `source-arn`: especifique o ARN do bucket de origem do Amazon S3.
+ `target-arn`: especifique o ARN do namespace do cluster provisionado do Amazon Redshift ou do destino do grupo de trabalho do Redshift sem servidor.

O exemplo a seguir cria uma integração fornecendo o nome da integração, o ARN de origem e o ARN de destino. A integração não é criptografada.

```
aws redshift create-integration \
--integration-name s3-integration \
--source-arn arn:aws:s3:us-east-1::s3-example-bucket \
--target-arn arn:aws:redshift:us-east-1:123456789012:namespace:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222
          {
    "IntegrationArn": "arn:aws:redshift:us-east-1:123456789012:integration:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
    "IntegrationName": "s3-integration",
    "SourceArn": "arn:aws:s3:::s3-example-bucket",
    "SourceType": "s3-event-notifications",
    "TargetArn": "arn:aws:redshift:us-east-1:123456789012:namespace:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
    "Status": "creating",
    "Errors": [],
    "CreateTime": "2024-10-09T19:08:52.758000+00:00",
    "Tags": []
}
```

Você também pode usar os comandos da AWS CLI a seguir para gerenciar sua integração de eventos do S3.
+ `delete-integration`: especifique um ARN de integração para excluir uma integração de eventos do S3.
+ `modify-integration`: especifique um ARN de integração para alterar o nome ou a descrição (ou ambos) de uma integração de eventos do S3.
+ `describe-integrations`: especifique um ARN de integração para visualizar as propriedades de uma integração de eventos do S3.

Consulte o [https://docs.aws.amazon.com/cli/latest/reference/redshift/](https://docs.aws.amazon.com/cli/latest/reference/redshift/) para obter mais informações sobre esses comandos.

------

O Amazon Redshift então cria uma integração de eventos do S3 com a origem e o destino associados, o status e as informações sobre o status de um trabalho de cópia automática correspondente. Você pode visualizar informações sobre uma integração de eventos do S3 no console do Amazon Redshift escolhendo **Integrações de eventos do S3** e selecionando a integração para mostrar os detalhes. As integrações são separadas entre aquelas criadas **Na minha conta** e **De outras contas**. A lista **Na minha conta** mostra integrações em que a origem e o destino estão na mesma conta. A lista **De outras contas** mostra integrações em que a origem pertence a outra conta.

Se você excluir uma integração de eventos do S3, o status correspondente do COPY JOB mudará de `1` (ativo) para `0` (inativo/pendente). Entretanto, o COPY JOB correspondente não é descartado automaticamente. Se mais tarde você tentar criar um COPY JOB com o mesmo nome, poderá haver um conflito.

## Criar e monitorar um COPY JOB
<a name="loading-data-copy-job-create-s3-autocopy"></a>

Depois que a integração for criada, na página **Detalhes da integração de eventos do S3** da integração que você criou, selecione **Criar tarefa de cópia automática** para acessar o Editor de Consultas V2 do Amazon Redshift, no qual você pode criar a tarefa de cópia automática para a integração. O Amazon Redshift compara o bucket na cláusula FROM na instrução COPY JOB CREATE com o bucket usado na integração de eventos do S3. Para obter mais informações sobre o Editor de Consultas V2 do Amazon Redshift, acesse [Consultar um banco de dados usando o Editor de Consultas V2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2.html) no *Guia de gerenciamento do Amazon Redshift*. Por exemplo, execute o comando COPY a seguir no Editor de Consultas V2 para criar um COPY JOB automático que associe o bucket `s3://amzn-s3-demo-bucket/staging-folder` do Amazon S3 a uma integração de eventos do Amazon S3.

```
COPY public.target_table
FROM 's3://amzn-s3-demo-bucket/staging-folder'
IAM_ROLE 'arn:aws:iam::123456789012:role/MyLoadRoleName'
JOB CREATE my_copy_job_name
AUTO ON;
```

Você define um COPY JOB uma vez. Os mesmos parâmetros serão usados em execuções futuras.

Para definir e gerenciar um COPY JOB, você deve ter permissão. Para obter informações sobre como conceder e revogar permissão em um COPY JOB, consulte [GRANT](r_GRANT.md) e [REVOKE](r_REVOKE.md). Para obter mais informações sobre como conceder e revogar permissões com escopo definido para um COPY JOB, consulte [Concessão de permissões em escopo](r_GRANT.md#grant-scoped-syntax) e [Revogação de permissões em escopo](r_REVOKE.md#revoke-scoped-permissions).

Você gerencia as operações de carregamento usando as opções CREATE, LIST, SHOW, DROP, ALTER e RUN para trabalhos. Para obter mais informações, consulte [COPY JOB](r_COPY-JOB.md).

Você pode consultar as visualizações do sistema para ver o status e o progresso de COPY JOB. As visualizações são fornecidas da seguinte forma:
+ [SYS\_COPY\_JOB](SYS_COPY_JOB.md): contém uma linha para cada COPY JOB definido no momento.
+ [SYS\_COPY\_JOB\_DETAIL](SYS_COPY_JOB_DETAIL.md): contém detalhes sobre arquivos pendentes, com erro e ingeridos para cada COPY JOB.
+ [SYS\_COPY\_JOB\_INFO](SYS_COPY_JOB_INFO.md): contém mensagens registradas sobre um COPY JOB.
+ [SYS\_LOAD\_HISTORY](SYS_LOAD_HISTORY.md): contém detalhes de comandos COPY.
+ [SYS\_LOAD\_ERROR\_DETAIL](SYS_LOAD_ERROR_DETAIL.md): contém detalhes de erros de comandos COPY.
+ [SVV\_COPY\_JOB\_INTEGRATIONS](SVV_COPY_JOB_INTEGRATIONS.md): contém detalhes das integrações de eventos do S3.
+ [STL\_LOAD\_ERRORS](r_STL_LOAD_ERRORS.md): contém erros de comandos COPY.
+ [STL\_LOAD\_COMMITS](r_STL_LOAD_COMMITS.md): contém informações usadas para solucionar problemas de carregamento de dados do comando COPY.

Para obter informações sobre como solucionar erros de integração de eventos do S3, consulte [Solução de problemas de integração de eventos do S3 e erros de COPY JOB](s3-integration-troubleshooting.md).

Para obter a lista de arquivos carregados por um COPY JOB, execute o seguinte SQL, mas primeiro substitua {{<job\_id>}}:

```
SELECT job_id, job_name, data_source, copy_query, filename, status, curtime
FROM sys_copy_job copyjob
JOIN stl_load_commits loadcommit
ON copyjob.job_id = loadcommit.copy_job_id
WHERE job_id = {{<job_id>}};
```

## Considerações ao criar uma integração de eventos do S3 para cópia automática
<a name="loading-data-copy-job-considerations"></a>

Considere o seguinte ao usar a cópia automática:
+ Você pode criar no máximo 200 COPY JOBS para cada cluster ou grupo de trabalho em uma Conta da AWS.
+ Você pode criar no máximo 50 integrações de eventos do S3 para cada destino do Amazon Redshift.
+ Não é possível criar uma integração de eventos do S3 com um bucket de origem do Amazon S3 que tenha um ponto (.) no nome do bucket.
+ Só é possível criar uma integração de eventos do S3 entre a mesma origem e destino. Ou seja, só pode haver uma integração de eventos do S3 entre um bucket do Amazon S3 e um data warehouse do Amazon Redshift por vez.
+ Você não pode ter nenhuma notificação de evento existente para o tipo de evento `S3_OBJECT_CREATED` que esteja definido no bucket de origem do Amazon S3. No entanto, após a criação de uma integração de eventos do S3, é possível atualizar a notificação de eventos do bucket do Amazon S3 usando um prefixo/sufixo com um escopo mais restrito. Dessa forma, você também pode configurar `S3_OBJECT_CREATED` para outro prefixo/sufixo de outros destinos e evitar um conflito com a integração de eventos do S3. Se você enfrentar problemas em que a cópia automática não estava sendo executada como esperado, prepare o log do AWS CloudTrail da ação `s3:PutBucketNotificationConfiguration` no bucket do S3 para o período em questão ao entrar em contato com o AWS Support.

## Regiões com suporte
<a name="loading-data-copy-job-regions"></a>

As regiões a seguir estão disponíveis para cópia automática.


| Região | Cópia automática | 
| --- | --- | 
| África (Cidade do Cabo) | Available (Disponível) | 
| Ásia-Pacífico (Hong Kong) | Available (Disponível) | 
| Ásia-Pacífico (Taipei) | Available (Disponível) | 
| Ásia-Pacífico (Tóquio) | Available (Disponível) | 
| Ásia-Pacífico (Seul) | Available (Disponível) | 
| Ásia-Pacífico (Osaka) | Available (Disponível) | 
| Ásia-Pacífico (Mumbai) | Available (Disponível) | 
| Ásia-Pacífico (Hyderabad) | Available (Disponível) | 
| Ásia-Pacífico (Singapura) | Available (Disponível) | 
| Ásia-Pacífico (Sydney) | Available (Disponível) | 
| Ásia-Pacífico (Jacarta) | Available (Disponível) | 
| Ásia-Pacífico (Melbourne) | Available (Disponível) | 
| Ásia-Pacífico (Malásia) | Available (Disponível) | 
| Ásia-Pacífico (Nova Zelândia) | Indisponível | 
| Ásia-Pacífico (Tailândia) | Available (Disponível) | 
| Canadá (Central) | Available (Disponível) | 
| Oeste do Canadá (Calgary) | Available (Disponível) | 
| China (Pequim) | Available (Disponível) | 
| China (Ningxia) | Available (Disponível) | 
| Europa (Frankfurt) | Available (Disponível) | 
| Europa (Zurique) | Available (Disponível) | 
| Europa (Estocolmo) | Available (Disponível) | 
| Europa (Milão) | Available (Disponível) | 
| Europa (Espanha) | Available (Disponível) | 
| Europa (Irlanda) | Available (Disponível) | 
| Europa (Londres) | Available (Disponível) | 
| Europa (Paris) | Available (Disponível) | 
| Israel (Tel Aviv) | Available (Disponível) | 
| Oriente Médio (Emirados Árabes Unidos) | Available (Disponível) | 
| Oriente Médio (Bahrein) | Available (Disponível) | 
| México (Centro) | Available (Disponível) | 
| América do Sul (São Paulo) | Available (Disponível) | 
| Leste dos EUA (Norte da Virgínia) | Available (Disponível) | 
| Leste dos EUA (Ohio) | Available (Disponível) | 
| Oeste dos EUA (N. da Califórnia) | Available (Disponível) | 
| Oeste dos EUA (Oregon) | Available (Disponível) | 
| AWS GovCloud (Leste dos EUA) | Available (Disponível) | 
| AWS GovCloud (Oeste dos EUA) | Available (Disponível) | 