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
Consultar Tabelas do Amazon S3 por meio do Amazon Redshift
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.
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
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
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.
Consultar Tabelas do S3 por meio do Amazon Redshift
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
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:
Abra o console do IAM em https://console.aws.amazon.com/iam/
. No painel de navegação, escolha Policies.
Escolha Criar política.
Escolha a guia JSON.
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/*" ] } ] }Selecione Revisar política.
Na página Revisar política, insira
GlueCatalogS3Tables_Policypara 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:
Abra o console do IAM
. No painel de navegação, selecione Roles.
Escolha Criar Perfil.
Selecione Serviço da AWS como a entidade confiável e, depois, Redshift como caso de uso.
Em Caso de uso para outros serviços da AWS, escolha Redshift: personalizável e, depois, escolha Próximo.
Na página Adicionar permissões, anexe a política
GlueCatalogS3Tables_Policyque você criou anteriormente. Escolha Próximo.Para Role name (Nome da função), digite um nome para sua função, por exemplo,
RedshiftS3TablesRole.Revise as informações e escolha Criar perfil.
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
Associe o perfil do IAM configurado na Etapa 1 ao seu cluster do Amazon Redshift.
Usar o Console de Gerenciamento da AWS:
Faça login no Console de Gerenciamento da AWS e abra o console do Amazon Redshift em https://console.aws.amazon.com/redshiftv2/
. No menu de navegação, escolha Clusters, depois selecione o cluster que deseja atualizar.
Em Ações, escolha Gerenciar perfis do IAM para exibir a lista atual de perfis do IAM associados ao cluster.
Na página Gerenciar perfis do IAM, escolha o perfil do IAM para adição e selecione Adicionar perfil do IAM.
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 no Guia de gerenciamento do Amazon Redshift.
Etapa 3: consultar Tabelas do S3 por meio do Amazon Redshift
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:
Abra o console do AWS Glue em https://console.aws.amazon.com/glue/
. No painel de navegação, escolha Bancos de dados.
Escolha Criar e, depois, escolha Link de recurso.
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>.
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
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 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
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 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
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:
Conecte-se ao seu cluster do Redshift usando uma identidade do IAM com as seguintes permissões:
redshift:GetClusterCredentialsWithIAM(para clusters provisionados) ouredshift-serverless:GetCredentials(para tecnologia sem servidor).AmazonS3ReadOnlyAccessAWSGlueConsoleFullAccessPermissões de Tabelas do S3 (conforme definido na Etapa 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) ouIAMR:(para perfis).Como administrador do cluster, conceda ao usuário federado permissões para acessar o esquema externo. Substitua
my_userpelo 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 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;