Configure uma integração de catálogo para AWS Glue Iceberg REST¶
Siga as etapas deste tópico para criar uma integração de catálogo para o ponto de extremidade do Iceberg REST do AWS Glue com autenticação Signature Versão 4 (SigV4).
Etapa 1: configurar permissões de acesso para o catálogo de dados do AWS Glue¶
Crie uma política IAM para que o Snowflake acesse o AWS Glue Data Catalog. Anexe a política a uma função IAM, que você especifica ao criar uma integração de catálogo. Para obter instruções, consulte Criação de políticas de IAM e Modificação de uma política de permissões de função no Guia do usuário do gerenciamento de identidade e acesso do AWS.
Exemplo de política somente leitura¶
No mínimo, o Snowflake requer as seguintes permissões no AWS Glue Data Catalog para acessar informações usando o catálogo Glue Iceberg REST.
glue:GetCatalog
glue:GetDatabase
glue:GetDatabases
glue:GetTable
glue:GetTables
O exemplo de política a seguir (no formato JSON) fornece as permissões necessárias para acessar todas as tabelas em um banco de dados especificado.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowGlueCatalogTableAccess",
"Effect": "Allow",
"Action": [
"glue:GetCatalog",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:GetTable",
"glue:GetTables"
],
"Resource": [
"arn:aws:glue:*:<accountid>:table/*/*",
"arn:aws:glue:*:<accountid>:catalog",
"arn:aws:glue:*:<accountid>:database/<database-name>"
]
}
]
}
Nota
Você pode modificar o elemento
Resource
desta política para restringir ainda mais os recursos permitidos (por exemplo, catálogo, bancos de dados ou tabelas). Para obter mais informações, consulte Tipos de recursos definidos pelo AWS Glue.Se você usar criptografia para o AWS Glue, deverá modificar a política para adicionar permissões do AWS Key Management Service (AWS KMS). Para obter mais informações, consulte Configuração de criptografia no AWS Glue.
Exemplo de política de leitura e gravação¶
O exemplo de política a seguir (no formato JSON) fornece as permissões necessárias para acesso de leitura e gravação a todas as tabelas em todos os bancos de dados. Para configurar o acesso de gravação para tabelas gerenciadas externamente, use esta política como exemplo.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowGlueCatalogTableAccess",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"glue:GetCatalog",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:CreateDatabase",
"glue:DeleteDatabase",
"glue:GetTable",
"glue:GetTables",
"glue:CreateTable",
"glue:UpdateTable",
"glue:DeleteTable"
],
"Resource": [
"arn:aws:glue:*:<accountid>:table/*/*",
"arn:aws:glue:*:<accountid>:catalog",
"arn:aws:glue:*:<accountid>:database/*",
"arn:aws:s3:<external_volume_path>"
]
}
]
}
Nota
A política deve fornecer acesso ao seu local de armazenamento para que o catálogo do AWS Glue grave metadados no local da tabela.
A linha
"arn:aws:glue:*:<accountid>:database/*"
no elementoResource
desta política especifica todos os bancos de dados. Isso é necessário se você deseja criar um novo banco de dados no Glue a partir do Snowflake com o comando CREATE SCHEMA. Para limitar o acesso a um único banco de dados, você pode especificar o banco de dados pelo nome. Para obter mais informações sobre a definição de recursos, consulte Tipos de recursos definidos pelo AWS Glue.Se você usar criptografia para o AWS Glue, deverá modificar a política para adicionar permissões do AWS Key Management Service (AWS KMS). Para obter mais informações, consulte Configuração de criptografia no AWS Glue.
(Opcional) Configurar o controle de acesso do Lake Formation¶
Se você usar o AWS Lake Formation para controle de acesso refinado, certifique-se de que a configuração do Lake Formation permita que o Snowflake acesse seus objetos de catálogo e dados subjacentes.
A função do IAM que você criou na etapa anterior – a função que você especifica no Snowflake ao criar uma integração de catálogo – deve ter a permissão do IAM lakeformation:GetDataAccess
. Essa permissão concede acesso de leitura e gravação aos dados subjacentes:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "lakeformation:GetDataAccess",
"Resource": "*"
}
]
}
Para obter mais informações, consulte Controle de acesso a dados subjacentes na documentação do Lake Formation.
Você também deve conceder permissões de dados à função do IAM. O método usado para conceder permissões de dados depende da configuração do Lake Formation. Por exemplo, você pode usar o método de recursos nomeados para conceder permissões a objetos do AWS Glue ou pode usar o controle de acesso baseado em tags. Para obter mais informações e instruções, consulte a documentação do AWS Lake Formation.
Etapa 2: criar uma integração de catálogo no Snowflake¶
Crie uma integração de catálogo para o ponto de extremidade AWS Glue Iceberg REST usando o comando CREATE CATALOG INTEGRATION (Apache Iceberg™ REST). Especifique a função IAM que você configurou. Para CATALOG_NAME
, use seu AWS de conta ID.
CREATE CATALOG INTEGRATION glue_rest_catalog_int
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'rest_catalog_integration'
REST_CONFIG = (
CATALOG_URI = 'https://glue.us-west-2.amazonaws.com/iceberg'
CATALOG_API_TYPE = AWS_GLUE
CATALOG_NAME = '123456789012'
)
REST_AUTHENTICATION = (
TYPE = SIGV4
SIGV4_IAM_ROLE = 'arn:aws:iam::123456789012:role/my-role'
SIGV4_SIGNING_REGION = 'us-west-2'
)
ENABLED = TRUE;
Onde:
CATALOG_URI
é o ponto de extremidade do servidor para o catálogo AWS Glue Iceberg REST.CATALOG_NAME
é o ID de sua conta AWS.
Para obter mais informações, consulte CREATE CATALOG INTEGRATION (Apache Iceberg™ REST), que inclui instruções para configurar uma integração de catálogo para o AWS Glue.
Etapa 3: recuperar o usuário AWS IAM e o ID externo para sua conta Snowflake¶
Para recuperar informações sobre o usuário do AWS IAM e o ID externo para sua conta Snowflake, execute o comando DESCRIBE CATALOG INTEGRATION. Forneça essas informações à AWS na próxima etapa para estabelecer uma relação de confiança.
DESCRIBE CATALOG INTEGRATION glue_rest_catalog_int;
Registre os seguintes valores:
Valor
Descrição
GLUE_AWS_IAM_USER_ARN
O usuário AWS IAM criado para sua conta Snowflake, por exemplo,
arn:aws:iam::123456789001:user/abc1-b-self1234
. O Snowflake fornece um único usuário IAM para toda a sua conta Snowflake. Todas as integrações do catálogo do Glue em sua conta usam esse usuário IAM.
GLUE_AWS_EXTERNAL_ID
Um ID externo para estabelecer um relacionamento de confiança.
Etapa 4: Conceder ao usuário do IAM acesso ao Catálogo de dados do AWS Glue¶
Atualize a política de confiança para a mesma função IAM especificada com o ARN ao criar a integração de catálogo (GLUE_AWS_ROLE_ARN
). Adicione os valores registrados na etapa anterior à política de confiança.
Para obter instruções, consulte Modificação de uma política de confiança.
O exemplo de política a seguir mostra onde especificar os valores GLUE_AWS_IAM_USER_ARN
e GLUE_AWS_EXTERNAL_ID
:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "<glue_iam_user_arn>"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<glue_aws_external_id>"
}
}
}
]
}
Onde:
glue_iam_user_arn
é o valorGLUE_IAM_USER_ARN
que você registrou.
glue_aws_external_id
é o valorGLUE_AWS_EXTERNAL_ID
que você registrou.
Nota
Por motivos de segurança, se você criar uma nova integração de catálogo (ou recriar uma integração de catálogo existente usando a sintaxe CREATE OR REPLACE CATALOG INTEGRATION), a nova integração de catálogo terá um ID externo diferente e não poderá resolver o relacionamento de confiança, a menos que você modifique a política de confiança com o novo ID externo.
Para verificar se as suas permissões estão configuradas corretamente, crie uma tabela Iceberg que use essa integração de catálogo. O Snowflake não verifica se suas permissões estão definidas corretamente até que você crie uma tabela Iceberg que faça referência a essa integração de catálogo.
Próximos passos¶
Após configurar uma integração de catálogo para o Iceberg REST do AWS Glue, você pode criar uma tabela Iceberg.