View a markdown version of this page

Configuração de um destino para um integração ETL zero - AWS Glue

Configuração de um destino para um integração ETL zero

Há várias opções oferecidas pela AWS Glue para configurar um destino para uma integração ETL zero. O destino pode ser um data warehouse criptografado do Amazon Redshift ou uma arquitetura Lakehouse do Amazon SageMaker.

Antes de selecionar o destino para a integração ETL zero, você precisa configurar um dos seguintes recursos de destino. As opções de configuração para um destino em uma integração ETL zero incluem:

nota

Não é possível modificar o destino de uma integração ETL zero após a criação.

Configuração de um destino de bucket de uso geral do S3

Esta seção descreve os pré-requisitos e as etapas de configuração para definir um bucket de uso geral do S3 como armazenamento para seu destino em uma integração ETL zero usando a arquitetura Lakehouse do Amazon SageMaker.

Antes de criar uma integração ETL zero com a arquitetura Lakehouse do Amazon SageMaker usando o armazenamento de uso geral do S3, você precisa concluir as seguintes tarefas de configuração:

  • Configurar um banco de dados do AWS Glue

  • Fornecer uma política RBAC do Catálogo

  • Criar um perfil do IAM de destino

  • Associe o perfil de destino, o KMS (opcional) e a conexão (opcional) ao recurso de destino

  • (Opcional) Configure as propriedades da tabela de destino

Configurar um banco de dados do AWS Glue

Para configurar um banco de dados de destino no Catálogo de Dados com uma localização do bucket de uso geral do Amazon S3:

  1. Na página inicial do console do AWS Glue, selecione Banco de dados em Catálogo de Dados.

  2. Escolha Adicionar dados no canto superior direito. Se você já criou um banco de dados, certifique-se de que o local com o URI do Amazon S3 esteja definido para o banco de dados.

  3. Insira um nome e um Local (URI do Amazon S3). Observe que o local é necessário para a integração ETL zero. Clique em Criar banco de dados quando terminar.

nota

O bucket de uso geral do Amazon S3 deve estar na mesma região que o banco de dados do AWS Glue.

Para obter informações sobre como criar um novo banco de dados no AWS Glue, consulte Conceitos básicos do Catálogo de Dados.

Você também pode usar a CLI create-database para criar o banco de dados no AWS Glue. Observe que o LocationUri em --database-input é obrigatório.

Otimizar tabelas Iceberg

Depois que uma tabela é criada pelo AWS Glue no banco de dados de destino, é possível habilitar a compactação para acelerar as consultas no Amazon Athena. Para obter informações sobre como configurar os recursos (perfil do IAM) para compactação, consulte Pré-requisitos da otimização de tabelas.

Para obter mais informações sobre como configurar a compactação na tabela do AWS Glue criada pela integração, consulte Otimizar tabelas do Iceberg.

Fornecer uma política de acesso baseado em recursos (RBAC) do catálogo

Para integrações que usam um banco de dados do AWS Glue, adicione as seguintes permissões à política RBAC do catálogo para permitir integrações entre a origem e o destino.

nota

Para integrações entre contas, tanto o usuário que cria a política de perfil de integração quanto a política de recurso do catálogo precisam permitir glue:CreateInboundIntegration no recurso. Para a mesma conta, uma política de recursos ou uma política de perfil que permita glue:CreateInboundIntegration no recurso é suficiente. Ambos os cenários ainda precisam permitir glue.amazonaws.com em glue:AuthorizeInboundIntegration.

Você pode acessar as Configurações do catálogo em Catálogo de Dados. Em seguida, forneça as permissões a seguir e preencha as informações que faltam.

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/Alice" ] }, "Effect": "Allow", "Action": [ "glue:CreateInboundIntegration" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:database/database-name" ], "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:dynamodb:us-east-1:444455556666:table/table-name" } } }, { "Principal": { "Service": [ "glue.amazonaws.com" ] }, "Effect": "Allow", "Action": [ "glue:AuthorizeInboundIntegration" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:database/database-name" ], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:dynamodb:us-east-1:444455556666:table/table-name" } } } ] }

Criar um perfil do IAM de destino

Crie um perfil do IAM de destino com as permissões e relação de confiança a seguir.

{ "Version": "2012-10-17", "Statement": [ { "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-bucket", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/*", "Effect": "Allow" }, { "Action": [ "glue:GetDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:database/database-name" ], "Effect": "Allow" }, { "Action": [ "glue:CreateTable", "glue:GetTable", "glue:GetTables", "glue:DeleteTable", "glue:UpdateTable", "glue:GetTableVersion", "glue:GetTableVersions", "glue:GetResourcePolicy" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:database/database-name", "arn:aws:glue:us-east-1:111122223333:table/database-name/*" ], "Effect": "Allow" }, { "Action": [ "cloudwatch:PutMetricData" ], "Resource": "*", "Condition": { "StringEquals": { "cloudwatch:namespace": "AWS/Glue/ZeroETL" } }, "Effect": "Allow" }, { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*", "Effect": "Allow" } ] }

Adicione seguinte a política de confiança para permitir que o serviço AWS Glue assuma o perfil:

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

Associe o perfil de destino, o KMS (opcional) e a conexão (opcional) ao recurso de destino

Associe o perfil de destino acima ao recurso de destino, ou seja, o banco de dados do AWS Glue. Opcionalmente, o KMS para criptografar os dados antes de serem armazenados na tabela Iceberg de destino e o ARN da conexão para acessar o bucket do S3 podem ser configurados para o banco de dados de destino do AWS Glue. Isso permitirá que o AWS Glue acesse dados no local de destino do S3 usando o perfil fornecido e, opcionalmente, criptografar usando a chave do KMS fornecida. Se o bucket do S3 de destino estiver configurado para ser acessível usando uma determinada VPC, o ARN da conexão poderá ser associado para permitir que o AWS Glue execute o processamento dentro dessa VPC. Para obter mais informações sobre como configurar uma VPC, consulte Criar uma VPC.

A captura de tela mostra a configuração de um destino em uma integração ETL zero.

Ou usando a API ou a CLI do AWS Glue:

aws glue create-integration-resource-property \ --resource-arn arn:aws:glue:us-east-1:123456789012:database/database-name \ --target-processing-properties '{"RoleArn": "arn:aws:iam::123456789012:role/gmi_target_role"}' \ --region us-east-1

(Opcional) Configure as propriedades da tabela de destino

Opcionalmente, as propriedades da tabela de destino podem ser configuradas para as tabelas de destino que serão sincronizadas com o destino.

Você pode definir essas configurações na seção Configurações de saída do fluxo de trabalho de criação da integração no console do AWS Glue:

A captura de tela mostra a seção Configurações de saída com opções de desaninhamento de esquema, opções de particionamento de dados e a configuração do nome da tabela de destino.

Ao selecionar Especificar chaves de partição personalizadas, você pode configurar as chaves de partição e suas especificações de função e conversão:

A captura de tela mostra as configurações de saída com a configuração de chaves de partição personalizadas e a tabela de configuração de especificações de partição.

Se a origem e o destino estiverem na mesma conta, essa configuração poderá ser feita como parte do fluxo de trabalho de criação da integração na interface do usuário do console do AWS Glue. Mas se o destino estiver em outra conta, essa configuração deverá ser concluída antes da criação da integração. Ao usar a CLI ou a API, isso deverá ser feito antes de invocar a API Create-Integration, mesmo quando a origem e o destino estiverem na mesma conta. A interface de usuário do console do AWS Glue apenas encapsula essa chamada de API para o mesmo cenário de conta.

Se isso não estiver configurado, os valores padrão serão usados ao sincronizar a tabela. Essa configuração também poderá ser alterada a qualquer momento após a criação da integração.

nota

Se essa propriedade for atualizada após a criação da integração, ela poderá acionar uma ressincronização completa da tabela quando a configuração atualizada entrar em conflito com a configuração existente. Por exemplo, atualizar a tabela “un-nesting” de “No-Unnest” para “Full-Unnest” ou alterar a coluna de partição.

Usando a CLI ou a API:

aws glue create-integration-table-properties \ --resource-arn arn:aws:glue:us-east-1:123456789012:database/database-name \ --table-name table-name \ --target-table-config '{ "UnnestSpec":"TOPLEVEL"|"FULL"|"NOUNNEST", "PartitionSpec": [ { "FieldName":"string", "FunctionSpec":"string", "ConversionSpec":"string"} ... ], "TargetTableName":"string" }' \ --region us-east-1

Depois de configurar a arquitetura Lakehouse do Amazon SageMaker com um armazenamento de buckets de uso geral do Amazon S3, você pode prosseguir com Configurar a integração com seu destino para concluir a configuração da integração.

Configuração de um destino de bucket das Tabelas do Amazon S3

Esta seção descreve os pré-requisitos e as etapas de configuração para configurar as Tabelas do Amazon S3 como um destino para sua integração ETL zero usando a arquitetura Lakehouse do Amazon SageMaker.

Antes de criar uma integração ETL zero com as Tabelas do Amazon S3 como destino, você precisa concluir as seguintes tarefas de configuração:

  • Configurar o bucket das Tabelas do Amazon S3 (e a integração dos serviços de analytics)

  • Fornecer uma política RBAC do Catálogo

  • Criar um perfil do IAM de destino

  • Associe o perfil de destino, o KMS (opcional) e a conexão (opcional) ao recurso de destino

  • (Opcional) Configure as propriedades da tabela de destino

Configurar o bucket das Tabelas do Amazon S3 (com a integração dos serviços de analytics)

  1. Crie um bucket de tabelas do S3 em sua conta seguindo as instruções em Introdução às Tabelas do Amazon S3.

  2. Habilite as integrações do Analytics com seu bucket das Tabelas do S3 seguindo estas instruções: Integração de serviços da AWS com as Tabelas do Amazon S3.

  3. Isso criará um novo catálogo das Tabelas do S3 no AWS Lake Formation.

Fornecer uma política RBAC do Catálogo

As seguintes permissões devem ser adicionadas à política RBAC do Catálogo para permitir integrações entre o destino do catálogo de origem e das Tabelas do Amazon S3.

A política de recursos do Catálogo do AWS Glue de destino precisa incluir as permissões do serviço do AWS Glue para AuthorizeInboundIntegration. Além disso, a permissão CreateInboundIntegration é necessária na entidade principal da origem que cria a integração ou no destino da política de recursos do AWS Glue.

nota

Para um cenário entre contas, tanto a política de recursos do Catálogo do AWS Glue de destino quanto da entidade principal de origem precisam incluir as permissões glue:CreateInboundIntegration no recurso.

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/Alice" ] }, "Effect": "Allow", "Action": [ "glue:CreateInboundIntegration" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog/s3tablescatalog/*" ], "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:dynamodb:us-east-1:444455556666:table/table-name" } } }, { "Principal": { "Service": [ "glue.amazonaws.com" ] }, "Effect": "Allow", "Action": [ "glue:AuthorizeInboundIntegration" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog/s3tablescatalog/*" ], "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:dynamodb:us-east-1:444455556666:table/table-name" } } } ] }
nota

Substitua s3tablescatalog pelo nome do catálogo principal das suas Tabelas do S3 (se diferente). O valor padrão (ao hospedar o catálogo das Tabelas do S3 na mesma conta) para isso é s3tablescatalog.

Criar um perfil do IAM de destino

Crie um perfil do IAM de destino com as permissões e relação de confiança a seguir.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3tables:ListTableBuckets", "s3tables:GetTableBucket", "s3tables:GetTableBucketEncryption", "s3tables:GetNamespace", "s3tables:CreateNamespace", "s3tables:ListNamespaces", "s3tables:CreateTable", "s3tables:DeleteTable", "s3tables:GetTable", "s3tables:GetTableEncryption", "s3tables:ListTables", "s3tables:GetTableMetadataLocation", "s3tables:UpdateTableMetadataLocation", "s3tables:GetTableData", "s3tables:PutTableData" ], "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/s3-table-bucket", "Effect": "Allow" }, { "Action": [ "cloudwatch:PutMetricData" ], "Resource": "*", "Condition": { "StringEquals": { "cloudwatch:namespace": "AWS/Glue/ZeroETL" } }, "Effect": "Allow" }, { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*", "Effect": "Allow" } ] }

Adicione a seguinte política de confiança no perfil do IAM de destino para permitir que o serviço do AWS Glue assuma:

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

Certifique-se de que não haja uma declaração DENY explícita para esse perfil do IAM de destino na política de recursos do bucket das Tabelas do S3. Uma declaração DENY explícita substituiria todas as permissões ALLOW e impediria que a integração funcionasse corretamente.

Associe o perfil de destino, o KMS (opcional) e a conexão (opcional) ao recurso de destino

Associe o perfil de destino acima ao recurso de destino. Opcionalmente, o KMS para criptografar os dados antes de serem armazenados na tabela Iceberg de destino e o ARN da conexão para acessar o bucket de destino do S3 podem ser configurados. Se o bucket do S3 de destino estiver configurado para ser acessível usando uma determinada VPC, o ARN da conexão poderá ser associado para permitir que o AWS Glue execute o processamento dentro dessa VPC. Para obter mais informações sobre como configurar uma VPC, consulte Criar uma VPC.

Usando a API ou a CLI do AWS Glue:

aws glue create-integration-resource-property \ --resource-arn arn:aws:glue:us-east-1:123456789012:catalog/s3tablescatalog/S3 table bucket name \ --target-processing-properties '{ "RoleArn": "arn:aws:iam::123456789012:role/target_role" }' \ --region us-east-1

(Opcional) Configure as propriedades da tabela de destino

Opcionalmente, as propriedades da tabela de destino podem ser configuradas para as tabelas de destino que serão sincronizadas com o destino. As mesmas regras se aplicam, conforme descrito na seção de destino de uso geral do S3.

Usando a CLI ou a API:

aws glue create-integration-table-properties \ --resource-arn arn:aws:glue:us-east-1:123456789012:catalog/s3tablescatalog/S3 table bucket name \ --table-name table-name \ --target-table-config '' \ --region us-east-1

Depois de configurar o armazenamento das Tabelas do Amazon S3 usando a arquitetura Lakehouse do Amazon SageMaker, você pode prosseguir com Configurar a integração com seu destino para concluir a configuração da integração.

Configuração de um destino de armazenamento gerenciado do Amazon Redshift

Esta seção descreve os pré-requisitos e as etapas de configuração para configurar um armazenamento gerenciado (RMS) do Amazon Redshift como destino para sua integração ETL zero usando a arquitetura Lakehouse do Amazon SageMaker.

Antes de criar uma integração ETL zero com uma arquitetura Lakehouse do Amazon SageMaker usando o armazenamento gerenciado do Redshift, você precisa concluir as seguintes tarefas de configuração:

  • Configurar um cluster do Amazon Redshift ou grupo de trabalho do Serverless

  • Registrar a integração do Amazon Redshift com o Lake Formation

  • Criar um catálogo gerenciado no Lake Formation

  • Configurar permissões do IAM

Configurar o armazenamento gerenciado do Amazon Redshift

Para configurar um armazenamento gerenciado do Amazon Redshift para sua integração ETL zero:

Depois de configurar o catálogo do Amazon SageMaker Lakehouse com o armazenamento gerenciado do Amazon Redshift, você pode prosseguir para Configurar a integração com seu destino para concluir a configuração da integração.

Configurar um destino de data warehouse do Amazon Redshift

Esta seção descreve os pré-requisitos e as etapas de configuração para configurar o data warehouse do Amazon Redshift como um destino para sua integração ETL zero.

Antes de criar uma integração ETL zero com um destino de data warehouse do Amazon Redshift, você precisa concluir as seguintes tarefas de configuração:

  • Configurar um cluster do Amazon Redshift ou grupo de trabalho do Serverless

  • Configurar a diferenciação de maiúsculas e minúsculas

  • Configurar permissões do IAM

Configurar o data warehouse do Amazon Redshift

Para configurar um data warehouse do Amazon Redshift para sua integração ETL zero:

  1. Navegue até o console do Amazon Redshift e clique em Criar cluster ou use um cluster existente. Para criar um cluster do Amazon Redshift, consulte Criar um cluster. No Amazon Redshift sem servidor, clique em Criar grupo de trabalho. Para criar um grupo de trabalho do Amazon Redshift sem servidor, consulte Criar um grupo de trabalho com um namespace.

  2. Ao criar um novo cluster, escolha um tamanho de cluster apropriado e garanta que seu cluster esteja criptografado. Para o Serverless, defina as configurações do grupo de trabalho de acordo com seus requisitos.

  3. Confirme se o grupo de trabalho ou cluster de destino do Amazon Redshift tem o parâmetro enable_case_sensitive_identifier ativado para que a integração tenha êxito. Para obter mais informações sobre como habilitar a diferenciação de maiúsculas e minúsculas, consulte Ativar diferenciação de maiúsculas e minúsculas para seu data warehouse no guia de gerenciamento do Amazon Redshift.

  4. Configure as permissões do IAM para permitir que a integração ETL zero acesse seu data warehouse do Amazon Redshift. Você precisará criar um perfil do IAM com as permissões a seguir:

    • Permissões para acessar o cluster ou grupo de trabalho do Amazon Redshift

    • Permissões para criar e gerenciar bancos de dados e tabelas no Amazon Redshift

    • Permissões do CloudWatch e do CloudWatch Logs para monitoramento

  5. Depois que a configuração do grupo de trabalho ou cluster do Amazon Redshift estiver concluída, você precisará configurar o data warehouse ou as integrações ETL zero. Consulte Introdução a integrações ETL zero no Guia de gerenciamento do Amazon Redshift para obter mais informações.

nota

Ao usar um data warehouse do Amazon Redshift como destino, a integração cria um esquema no banco de dados especificado para armazenar os dados replicados. O nome do esquema é derivado do nome da integração.

nota

O grupo de trabalho ou cluster de destino do Amazon Redshift deve ter o parâmetro enable_case_sensitive_identifier ativado para que a integração seja bem-sucedida.

Depois de configurar o data warehouse do Amazon Redshift, você pode prosseguir para Configurar a integração com seu destino para concluir a configuração da integração.

Configurar a integração com seu destino

Depois de configurar os recursos de origem e destino, siga estas etapas para concluir a configuração da integração:

  1. Navegue até a página “Integrações ETL zero” e inicie o fluxo de trabalho de criação da integração.

  2. Selecione o recurso de origem configurado nas etapas anteriores.

  3. Selecione ou especifique o recurso de destino (mesma conta ou conta cruzada) configurado nas etapas anteriores.

  4. Selecione o perfil de destino do IAM configurado anteriormente.

  5. Selecione a opção Corrigir para mim (disponível somente quando o destino está na mesma conta).

    • Para o destino normal do Amazon S3 (banco de dados do AWS Glue) e das Tabelas do S3 (catálogo), isso será:

      • Aplique uma entidade principal de serviço autorizada na política de recursos do Catálogo de destino.

      • Aplique um ARN da entidade principal de origem autorizada do AWS Glue à política de recursos do catálogo de destino.

    • Para o Amazon Redshift de destino, isso fará:

      • Aplicar uma entidade principal autorizada no cluster Amazon Redshift ou grupo de trabalho do Serverless.

      • Aplicar um ARN de origem autorizado do AWS Glue ao cluster do Amazon Redshift ou ao grupo de trabalho do Serverless.

      • Associar um novo grupo de parâmetros a enable_case_sensitive_identifier = true.

Use o seguinte para criar a integração via API ou CLI: API CreateIntegration.