

 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/). 

# Consultar Tabelas do Amazon S3 por meio do Amazon Redshift
<a name="querying-s3Tables"></a>

O Amazon Redshift se integra aos buckets de tabela do Amazon S3, permitindo que você acesse os recursos da tabela do S3 usando o Amazon Redshift. Se você está apenas começando ou gerencia milhares de tabelas em seu ambiente do Iceberg, os buckets de tabelas simplificam o gerenciamento de data lakes em qualquer escala. Para obter mais informações, consulte [Buckets de tabela](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets.html).

Este tópico descreve como começar a usar Tabelas do Amazon S3 e o Redshift e acessar objetos Tabelas do S3 usando o Amazon Redshift.

## Pré-requisitos
<a name="querying-s3Tables-prerequisites"></a>

Antes de consultar Tabelas do S3 do Amazon Redshift, você deve integrar as tabelas do S3 ao AWS Glue Data Catalog. Para receber instruções, consulte [Integrar Tabelas do Amazon S3 ao AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/glue-federation-s3tables.html)

Depois que as Tabelas do S3 são integradas ao AWS Glue Data Catalog, as entidades principais do IAM com as Tabelas do S3 e as permissões do AWS Glue IAM necessárias podem descobrir as Tabelas do S3 por meio do AWS Glue Data Catalog.

**nota**  
O método 3 (awsdatacatalog montado automaticamente) tem pré-requisitos adicionais. Para mais detalhes, consulte [Método 3: awsdatacatalog montado automaticamente](#querying-s3Tables-method3).

## Consultar Tabelas do S3 por meio do Amazon Redshift
<a name="querying-s3Tables-steps"></a>

Para começar a consultar Tabelas do S3, siga estas etapas:
+ Etapa 1: criar um perfil do IAM para o Amazon Redshift
+ Etapa 2: anexar um perfil do IAM ao seu cluster do Amazon Redshift
+ Etapa 3: consultar Tabelas do S3 por meio do Amazon Redshift

### Etapa 1: criar um perfil do IAM para o Amazon Redshift
<a name="querying-s3Tables-step1"></a>

Seu cluster precisa de autorização para acessar o catálogo externo de Tabelas do S3 no AWS Glue. Para fornecer essa autorização, o Amazon Redshift usa um perfil do IAM que é anexado ao cluster. Criar um perfil do IAM com as permissões de política a seguir.

**nota**  
Na política e nos exemplos abaixo, substitua `us-west-2` pela sua região da AWS e `111122223333` pelo ID da sua conta da AWS.

**Para criar uma política:**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Policies**.

1. Escolha **Criar política**.

1. Escolha a guia **JSON**.

1. Cole no seguinte documento de política JSON:

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "GlueDataCatalogPermissions",
         "Effect": "Allow",
         "Action": [
           "glue:GetCatalog",
           "glue:GetDatabase",
           "glue:GetTable",
           "glue:GetTables",
           "glue:UpdateTable",
           "glue:DeleteTable"
         ],
         "Resource": [
           "arn:aws:glue:us-west-2:111122223333:catalog",
           "arn:aws:glue:us-west-2:111122223333:catalog/s3tablescatalog",
           "arn:aws:glue:us-west-2:111122223333:catalog/s3tablescatalog/*",
           "arn:aws:glue:us-west-2:111122223333:database/s3tablescatalog/*/*",
           "arn:aws:glue:us-west-2:111122223333:table/s3tablescatalog/*/*/*",
           "arn:aws:glue:us-west-2:111122223333:database/*",
           "arn:aws:glue:us-west-2:111122223333:table/*/*"
         ]
       },
       {
         "Sid": "S3TablesDataAccessPermissions",
         "Effect": "Allow",
         "Action": [
           "s3tables:GetTableBucket",
           "s3tables:GetNamespace",
           "s3tables:GetTable",
           "s3tables:GetTableMetadataLocation",
           "s3tables:GetTableData",
           "s3tables:ListTableBuckets",
           "s3tables:CreateTable",
           "s3tables:PutTableData",
           "s3tables:UpdateTableMetadataLocation",
           "s3tables:ListNamespaces",
           "s3tables:ListTables",
           "s3tables:DeleteTable"
         ],
         "Resource": [
           "arn:aws:s3tables:us-west-2:111122223333:bucket/*",
           "arn:aws:s3tables:us-west-2:111122223333:bucket/*/table/*"
         ]
       }
     ]
   }
   ```

1. Selecione **Revisar política**.

1. Na página **Revisar política**, insira `GlueCatalogS3Tables_Policy` para **Nome**. Como opção, insira uma descrição. Revise o resumo da política e escolha **Criar política**.

**Para criar um perfil do IAM para o Amazon Redshift:**

1. Abra o [console do IAM](https://console.aws.amazon.com/iam/).

1. No painel de navegação, selecione **Roles**.

1. Escolha **Criar Perfil**.

1. Selecione **Serviço da AWS** como a entidade confiável e, depois, **Redshift** como caso de uso.

1. Em **Caso de uso para outros serviços da AWS**, escolha **Redshift: personalizável** e, depois, escolha **Próximo**.

1. Na página **Adicionar permissões**, anexe a política `GlueCatalogS3Tables_Policy` que você criou anteriormente. Escolha **Próximo**.

1. Para **Role name (Nome da função)**, digite um nome para sua função, por exemplo, `RedshiftS3TablesRole`.

1. Revise as informações e escolha **Criar perfil**.

1. No painel de navegação, selecione **Roles**. Escolha o nome de seu novo perfil para visualizar o resumo e copie o **ARN do perfil** em sua área de transferência. Você usará esse ARN ao criar esquemas externos para namespaces de Tabelas do S3.

**nota**  
Limite o escopo a recursos específicos substituindo o caractere curinga por nomes dos recursos da Amazon (ARNs) exatos.

### Etapa 2: anexar um perfil do IAM ao seu cluster do Amazon Redshift
<a name="querying-s3Tables-step2"></a>

Associe o perfil do IAM configurado na Etapa 1 ao seu cluster do Amazon Redshift.

**Usar o Console de Gerenciamento da AWS:**

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 menu de navegação, escolha **Clusters**, depois selecione o cluster que deseja atualizar.

1. Em **Ações**, escolha **Gerenciar perfis do IAM** para exibir a lista atual de perfis do IAM associados ao cluster.

1. Na página **Gerenciar perfis do IAM**, escolha o perfil do IAM para adição e selecione **Adicionar perfil do IAM**.

1. Escolha **Done** (Concluído) para salvar as alterações.

**Usar a AWS CLI:**

Execute o comando a seguir para associar um perfil do IAM a um cluster ou namespace existente. Substitua `my-redshift-cluster` ou `my-redshift-namespace` pelo identificador do cluster ou namespace e `111122223333` pelo ID da conta da AWS.

```
aws redshift modify-cluster-iam-roles \
    --cluster-identifier my-redshift-cluster \
    --add-iam-roles arn:aws:iam::111122223333:role/RedshiftS3TablesRole

-- for serverless
aws redshift-serverless update-namespace \
    --namespace-name my-redshift-namespace \
    --iam-roles "arn:aws:iam::111122223333:role/RedshiftS3TablesRole"
```

Para obter mais informações, consulte [Associar perfis do IAM a clusters](https://docs.aws.amazon.com/redshift/latest/mgmt/copy-unload-iam-role.html) no *Guia de gerenciamento do Amazon Redshift*.

### Etapa 3: consultar Tabelas do S3 por meio do Amazon Redshift
<a name="querying-s3Tables-step3"></a>

Quando você integra as Tabelas do S3 ao AWS Glue Data Catalog, o serviço cria uma estrutura de catálogo federado que associa os recursos das Tabelas do S3 a objetos do catálogo do AWS Glue:
+ Um bucket de tabelas do S3 se torna um **catálogo** no AWS Glue Data Catalog.
+ Um namespace do S3 se torna um **banco de dados do AWS Glue**.
+ Uma tabela do S3 se torna um **objeto de tabela do AWS Glue**.

A integração cria a seguinte hierarquia:
+ **Catálogo federado:**`s3tablescatalog` (criado automaticamente).
+ **Catálogos secundários:** cada bucket de tabelas do S3 se torna um catálogo secundário em `s3tablescatalog`.
+ **Bancos de dados:** cada namespace do S3 em um bucket de tabelas se torna um banco de dados.
+ **Tabelas:** cada tabela do S3 em um namespace se torna uma tabela.

Por exemplo, se você tiver um bucket de tabelas do S3 denominado `analytics-bucket` com um namespace `sales` contendo uma tabela `transactions`, o caminho completo no AWS Glue Data Catalog será: `s3tablescatalog/analytics-bucket/sales/transactions`.

**Crie um link de recurso**

Antes de usar qualquer um dos três métodos de consulta abaixo, você deve criar um link de recurso no AWS Glue Data Catalog. Os links de recursos permitem que o Amazon Redshift faça referência aos bancos de dados de Tabelas do S3 por meio do catálogo padrão.

*Usar o console do AWS Glue:*

1. Abra o console do AWS Glue em [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. No painel de navegação, escolha **Bancos de dados**.

1. Escolha **Criar** e, depois, escolha **Link de recurso**.

1. Na página **Criar link de recurso**, forneça as seguintes informações:
   + **Nome do link de recurso:** insira um nome para o link de recurso (por exemplo, `sales_resource_link`).
   + **Banco de dados compartilhado:** insira o caminho do banco de dados de Tabelas do S3 (por exemplo, `s3tablescatalog/analytics-bucket/sales`).
   + **Proprietário do banco de dados compartilhado:** insira o ID da conta da AWS.
   + **ID do catálogo do banco de dados compartilhado:** insira o ID do catálogo no formato `<account-id>:s3tablescatalog/<bucket-name>`.

1. Escolha **Criar**.

*Usar a AWS CLI:*

```
aws glue create-database \
  --region us-west-2 \
  --cli-input-json '{
        "CatalogId": "111122223333",
        "DatabaseInput": {
            "Name": "sales_resource_link",
            "TargetDatabase": {
                "CatalogId": "111122223333:s3tablescatalog/analytics-bucket",
                "DatabaseName": "sales"
            }
        }
  }'
```

Esse comando cria um link de recurso chamado `sales_resource_link` em seu catálogo de dados do AWS Glue padrão que aponta para o banco de dados `sales` no bucket de tabelas do S3 `analytics-bucket`.

Depois que os links de recursos são criados, o Amazon Redshift fornece três métodos para consultar Tabelas do S3. Escolha o método mais adequado ao seu caso de uso.

**nota**  
Para criar um link de recurso em nível de banco de dados, o administrador do Redshift deve ter a permissão `AWS Glue:CreateDatabase` no catálogo padrão e no banco de dados que está sendo criado.

#### Método 1: CREATE EXTERNAL SCHEMA
<a name="querying-s3Tables-method1"></a>

Use `CREATE EXTERNAL SCHEMA` para criar um esquema externo que faça referência ao seu banco de dados de Tabelas do S3. Esse método fornece controle explícito sobre a nomenclatura e a configuração do esquema.

Para receber detalhes completos da sintaxe, consulte [CREATE EXTERNAL SCHEMA](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html) no *Guia do desenvolvedor de banco de dados do Amazon Redshift*.

**Exemplo**

Use o nome do banco de dados e o ID do catálogo da etapa 3. Substitua `111122223333` pelo ID de sua conta da AWS.

```
CREATE EXTERNAL SCHEMA s3tables_schema
FROM DATA CATALOG DATABASE 'sales_resource_link'
IAM_ROLE 'arn:aws:iam::111122223333:role/RedshiftS3TablesRole'
REGION 'us-west-2'
CATALOG_ID '111122223333';

SELECT * FROM s3tables_schema.transactions;
```

#### Método 2: CREATE DATABASE FROM ARN
<a name="querying-s3Tables-method2"></a>

Use `CREATE DATABASE` com a cláusula `FROM ARN` para criar um banco de dados federado que faça referência direta ao seu link de recurso do AWS Glue. Esse método associa automaticamente o banco de dados do AWS Glue a um banco de dados do Redshift.

Para receber detalhes completos da sintaxe, consulte [CREATE DATABASE](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_DATABASE.html) no *Guia do desenvolvedor de banco de dados do Amazon Redshift*.

**Exemplo**

Substitua `111122223333` pelo ID de sua conta da AWS.

```
CREATE DATABASE s3tables_db
FROM ARN 'arn:aws:glue:us-west-2:111122223333:database/sales_resource_link'
WITH DATA CATALOG SCHEMA analytics_schema
IAM_ROLE 'arn:aws:iam::111122223333:role/RedshiftS3TablesRole';

SELECT * FROM s3tables_db.analytics_schema.transactions;
```

#### Método 3: awsdatacatalog montado automaticamente
<a name="querying-s3Tables-method3"></a>

O Amazon Redshift pode montar automaticamente bancos de dados do AWS Glue Data Catalog, incluindo links de recursos de Tabelas do S3, por meio do banco de dados `awsdatacatalog`. Esse método exige que o acesso federado ao Spectrum (FAS) seja habilitado em seu cluster.

**Pré-requisitos**

Para usar o banco de dados `awsdatacatalog` montado automaticamente, você deve habilitar o acesso federado ao Spectrum. Isso permite que o Amazon Redshift use credenciais de identidade federadas para acessar o AWS Glue Data Catalog e fontes de dados externas.

Como habilitar o acesso federado ao Spectrum:

1. Conecte-se ao seu cluster do Redshift usando uma identidade do IAM com as seguintes permissões:
   + `redshift:GetClusterCredentialsWithIAM` (para clusters provisionados) ou `redshift-serverless:GetCredentials` (para tecnologia sem servidor).
   + `AmazonS3ReadOnlyAccess`
   + `AWSGlueConsoleFullAccess`
   + Permissões de Tabelas do S3 (conforme definido na Etapa 1)

1. Quando você se conecta com uma identidade do IAM, o Amazon Redshift cria automaticamente um usuário de banco de dados prefixado com `IAM:` (para usuários) ou `IAMR:` (para perfis).

1. Como administrador do cluster, conceda ao usuário federado permissões para acessar o esquema externo. Substitua `my_user` pelo nome de usuário ou o perfil do IAM:

   ```
   GRANT ALL ON SCHEMA awsdatacatalog TO "IAMR:my_user";
   ```

Para receber informações detalhadas sobre como configurar um acesso federado, consulte [Usar uma identidade federada para gerenciar o acesso do Amazon Redshift aos recursos locais e a tabelas externas do Amazon Redshift Spectrum](https://docs.aws.amazon.com/redshift/latest/mgmt/authorization-fas-spectrum.html) no *Guia de gerenciamento do Amazon Redshift*.

**Consultar Tabelas do S3**

Depois que o acesso federado estiver configurado, verifique os esquemas montados e consulte suas Tabelas do S3.

Verifique os esquemas montados:

```
SHOW SCHEMAS FROM DATABASE awsdatacatalog;
```

Consulte as Tabelas do S3 usando o nome do link do recurso da Etapa 3:

```
SELECT * FROM awsdatacatalog.sales_resource_link.transactions;
```