Acessar tabelas do Amazon S3 usando o endpoint Iceberg REST do AWS Glue - Amazon Simple Storage Service

Acessar tabelas do Amazon S3 usando o endpoint Iceberg REST do AWS Glue

Depois que os buckets de tabela do S3 estiverem integrados ao AWS Glue Data Catalog, você poderá usar o endpoint Iceberg REST do AWS Glue para se conectar às tabelas do S3 por meio de clientes compatíveis com o Apache Iceberg, como PyIceberg ou Spark. O endpoint Iceberg REST do AWS Glue implementa a Especificação da API Catalog Open do Iceberg REST, que fornece uma interface padronizada para interagir com tabelas do Iceberg. Para acessar as tabelas do S3 usando o endpoint, você precisa configurar as permissões por meio de uma combinação de políticas do IAM e concessões do AWS Lake Formation. As seções a seguir explicam como configurar o acesso, incluindo instruções sobre como criar o perfil do IAM necessário, definir as políticas essenciais e estabelecer permissões do Lake Formation para acesso em nível de banco de dados e de tabela.

Consulte uma explicação completa sobre como usar o PyIceberg em Access data in Amazon S3 Tables using PyIceberg through the AWS Glue Iceberg REST endpoint.

Criar um perfil do IAM para o cliente

Para acessar tabelas por meio de endpoints do AWS Glue, você precisa criar um perfil do IAM com permissões para ações do AWS Glue e do Lake Formation. Este procedimento explica como criar esse perfil e configurar suas permissões.

  1. Abra o console do IAM, em https://console.aws.amazon.com/iam/.

  2. No painel de navegação à esquerda, escolha Políticas.

  3. Escolha Criar uma política e selecione JSON no editor de políticas.

  4. Adicione a seguinte política em linha que concede permissões para acessar ações do AWS Glue e do Lake Formation:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "glue:GetCatalog", "glue:GetDatabase", "glue:GetDatabases", "glue:GetTable", "glue:GetTables", "glue:CreateTable", "glue:UpdateTable" ], "Resource": [ "arn:aws:glue:<region>:<account-id>:catalog", "arn:aws:glue:<region>:<account-id>:catalog/s3tablescatalog", "arn:aws:glue:<region>:<account-id>:catalog/s3tablescatalog/<s3_table_bucket_name>", "arn:aws:glue:<region>:<account-id>:table/s3tablescatalog/<s3_table_bucket_name>/<namespace>/*", "arn:aws:glue:<region>:<account-id>:database/s3tablescatalog/<s3_table_bucket_name>/<namespace>" ] }, { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" } ] }
  5. Depois de criar a política, crie um perfil do IAM e escolha Política de confiança personalizada como Tipo de entidade confiável.

  6. Insira o seguinte em Política de confiança personalizada:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<accountid>:role/<Admin_role>" }, "Action": "sts:AssumeRole", "Condition": {} } ] }

Definir o acesso no Lake Formation

O Lake Formation oferece controles de acesso detalhado para tabelas do data lake. Quando você integrou o bucket do S3 ao AWS Glue Data Catalog, as tabelas foram automaticamente registradas como recursos no Lake Formation. Para acessar essas tabelas, você deve conceder permissões específicas do Lake Formation à sua identidade do IAM, além das permissões de política do IAM.

As etapas a seguir explicam como aplicar os controles de acesso do Lake Formation para permitir que o cliente do Iceberg se conecte às tabelas. Você deve fazer login como administrador do data lake para aplicar essas permissões.

Permitir que mecanismos externos acessem os dados da tabela

No Lake Formation, você deve habilitar o acesso total à tabela para que mecanismos externos acessem os dados. Isso permite que aplicações de terceiros obtenham credenciais temporárias do Lake Formation ao usar um perfil do IAM que tenha permissões completas na tabela solicitada.

Abra o console do Lake Formation em https://console.aws.amazon.com/lakeformation/.

  1. Abra o console do Lake Formation em https://console.aws.amazon.com/lakeformation/ e faça login como administrador de data lake.

  2. No painel de navegação, em Administração, selecione Configurações de integração de aplicações.

  3. Selecione Permitir que mecanismos externos acessem dados em locais do Amazon S3 com acesso total à tabela. Em seguida, escolha Salvar.

Conceder permissões do Lake Formation nos recursos de tabela

Depois, conceda permissões do Lake Formation ao perfil do IAM que você criou para o cliente compatível com o Iceberg. Essas permissões possibilitarão que o perfil crie e gerencie tabelas no namespace. Você precisa fornecer permissões em nível de banco de dados e de tabela:

Como conceder permissões de banco de dados

  1. Abra o console do AWS Lake Formation em https://console.aws.amazon.com/lakeformation/ e faça login como administrador do data lake.

  2. No painel de navegação, escolha Permissões de dados e Conceder.

  3. Na página Conceder permissões, em Entidades principais, escolha Usuários e perfis do IAM e selecione o perfil do IAM que você criou para acesso ao REST endpoint do Iceberg do AWS Glue.

  4. Em Tags do LF ou recursos de catálogo, escolha Recursos do catálogo de dados nomeados.

  5. Em Catálogos, escolha o catálogo de dados do AWS Glue que foi criado para o bucket de tabela. Por exemplo, .<accoundID>:s3tablescatalog/<table-bucket-name>

  6. Para Bancos de dados, escolha mynamespace.

  7. Em Permissões de tabela, selecione Criar tabela e Descrever.

  8. Selecione Conceder.

Como conceder permissões de tabela

  1. Abra o console do AWS Lake Formation em https://console.aws.amazon.com/lakeformation/ e faça login como administrador do data lake.

  2. No painel de navegação, escolha Permissões de dados e Conceder.

  3. Na página Conceder permissões, em Entidades principais, escolha Usuários e perfis do IAM e selecione o perfil do IAM que você criou para acesso ao REST endpoint do Iceberg do AWS Glue.

  4. Em Tags do LF ou recursos de catálogo, escolha Recursos do catálogo de dados nomeados.

  5. Em Catálogos, escolha o catálogo de dados do AWS Glue que foi criado para o bucket de tabela. Por exemplo, .<accoundID>:s3tablescatalog/<table-bucket-name>

  6. Em Bancos de dados, escolha o namespace do bucket de tabela do S3 que você criou.

  7. Em Tabelas, escolha ALL_TABLES.

  8. Em Permissões de tabela, escolha Super.

  9. Selecione Conceder.

Configurar o ambiente para usar o endpoint

Depois de configurar o perfil do IAM com as permissões necessárias para o acesso à tabela, você pode usá-lo para executar clientes do Iceberg em sua máquina local configurando a AWS CLI com o perfil por meio do seguinte comando:

aws sts assume-role --role-arn "arn:aws:iam::<accountid>:role/<glue-irc-role>" --role-session-name <glue-irc-role>

Para acessar tabelas por meio do endpoint REST do AWS Glue, você precisa inicializar um catálogo em seu cliente compatível com o Iceberg. Essa inicialização requer a especificação de propriedades personalizadas, incluindo propriedades do Sigv4, o URI do endpoint e o local do warehouse. Especifique essas propriedades da seguinte forma:

  • Propriedades do Sigv4: o Sigv4 deve estar habilitado e o nome de assinatura é glue.

  • Local do warehouse: o bucket de tabela, especificado no formato <accountid>:s3tablescatalog/<table-bucket-name>.

  • URI do endpoint: consulte o Guia de referência dos endpoints de serviço do AWS Glue para o endpoint específico da região.

O exemplo a seguir mostra como inicializar um catálogo do pyIceberg.

rest_catalog = load_catalog( s3tablescatalog, **{ "type": "rest", "warehouse": "<accountid>:s3tablescatalog/<table-bucket-name>", "uri": "https://glue.<region>.amazonaws.com/iceberg", "rest.sigv4-enabled": "true", "rest.signing-name": "glue", "rest.signing-region": region } )

Consulte mais informações sobre a implementação do endpoint Iceberg REST do AWS Glue em Conectar ao Catálogo de Dados usando o endpoint Iceberg REST do AWS Glue no Guia do usuário do AWS Glue.