As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Federate to Snowflake Iceberg Catalog
AWS Glue Data Catalog federa para Snowflake usar as OAuth2 credenciais de um diretor de Snowflake serviço. Você pode usar essa federação para se conectar Snowflake Horizon e Snowflake Polaris catalogar. Esse mecanismo de autenticação permite que o Catálogo de Dados acesse os metadados de vários objetos (como catálogos, bancos de dados e tabelas) em seu catálogo, com base nos privilégios associados ao principal de serviço. Para garantir o acesso aos objetos certos, é essencial conceder ao responsável pelo serviço as permissões necessárias para ler os metadados desses objetos. Snowflake
Pré-requisitos
Antes de criar um catálogo federado no Catálogo de Dados que seja controlado pelo Lake Formation, verifique se você tem as seguintes permissões:
Seu diretor do IAM (usuário ou função) deve ter as seguintes permissões:
-
Permissões do Lake Formation —
lakeformation:RegisterResource,lakeformation:DescribeResource -
AWS Glue permissões —
glue:CreateConnection,glue:CreateCatalog,glue:GetConnection,glue:PassConnection -
Permissões do Secrets Manager —
secretsmanager:CreateSecret,secretsmanager:GetSecretValue -
Permissões do IAM —
iam:CreateRole,iam:AttachRolePolicy,iam:PassRole
Você deve ser administrador do data lake do Lake Formation ou ter CREATE_CATALOG permissão no catálogo de dados.
Criar catálogo federado
Faça login no console e abra o console do Lake Formation em https://console.aws.amazon.com/lakeformation/
. Escolha a AWS região preferida na seção superior direita da página.
No painel de navegação à esquerda, selecione Catálogos.
Escolha Criar catálogo para abrir o fluxo de trabalho Criar catálogo.
Na etapa Escolher fonte de dados, Snowflake selecione entre as opções disponíveis.
Na etapa Definir detalhes do catálogo, você fornece três informações: detalhes do catálogo, detalhes da conexão e detalhes do registro.
No contêiner de detalhes do catálogo, forneça um nome exclusivo para seu catálogo AWS Glue federado e insira o nome do Snowflake catálogo existente.
No contêiner de detalhes de conexões, você pode escolher entre uma conexão existente à qual você tem acesso ou fornecer configuração para criar um novo conector.
As novas configurações de conexão incluem:
Nome da conexão — Um nome exclusivo do objeto de AWS Glue conexão.
URL da instância — O URL do endpoint da sua Snowflake conta existente.
Autenticação — Especifique a configuração de autenticação AWS Glue usada para se conectar ao servidor de catálogo remoto. AWS Glue suporta tanto a autenticação OAuth2 quanto a autenticação personalizada.
URL do token — especifique a URL do provedor de identidade do catálogo remoto.
OAuth2 ID do cliente — especifique o ID do cliente da OAuth2 credencial associada ao seu catálogo remoto.
Segredo — Armazene e use o segredo OAuth2 do cliente usando AWS Secrets Manager ou insira o valor secreto na caixa de texto. Quando você insere o segredo manualmente no console, AWS Glue cria o segredo em seu nome.
Escopo do URL do token — Especifique o OAuth escopo da autenticação.
Filtro de caixa do catálogo — Escolha se deseja trazer objetos em minúsculas ou maiúsculas do seu catálogo remoto para o Catálogo de Dados.
Crie uma função do IAM que AWS Glue os diretores de serviço do Lake Formation possam usar para acessar locais secretos AWS Secrets Manager e locais do Amazon S3 de tabelas remotas do Iceberg, respectivamente. Selecione a função do IAM no menu suspenso de registro. Consulte as etapas 2 e 3 na seção CLI a seguir para obter detalhes da política do IAM.
Selecione Testar conexão para testar se suas propriedades de conexão e o acesso à função do IAM estão configurados corretamente.
Selecione Avançar para revisar suas configurações.
Selecione Criar catálogo na página de revisão.
-
Crie um AWS Secrets Manager segredo
O AWS Glue conector oferece suporte a dois tipos de autenticação: OAuth2e personalizada. Ao usar OAuth2 a opção, use AWS Secrets Manager para armazenar o segredo do cliente do principal do Snowflake serviço. Posteriormente, você usará esse segredo ao criar a AWS Glue Conexão. Para autenticação personalizada, use AWS Secrets Manager para armazenar e recuperar o token de acesso.
No exemplo a seguir, substitua
,your-snowflake-secret,client_secretpor suas próprias informações.regionaws secretsmanager create-secret \ --nameyour-snowflake-secret\ --description "Snowflake secret" \ --secret-string '{ "USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET": "client_secret" }' \ --regionregionnota
USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRETé uma palavra-chave reservada AWS Glue usada para se referir a um valor secreto do cliente no segredo. Use a mesma palavra-chave ao criar o segredo no console do Lake Formation também. -
Crie uma função do IAM que dê acesso ao objeto de AWS Glue conexão ao segredo criado na etapa anterior
O objeto de AWS Glue conexão requer acesso ao AWS Secrets Manager segredo quando você o usa AWS Secrets Manager para armazenar, recuperar e atualizar seu token OAuth secreto. O objeto de AWS Glue conexão também requer acesso para criar, descrever e usar as interfaces de rede da Amazon VPC quando você usa um endpoint da Amazon VPC para restringir a conectividade com sua conta. Snowflake
Crie uma política do IAM e anexe-a a uma função do IAM. Adicione o principal de AWS Glue serviço à política de confiança.
No exemplo a seguir, substitua
your-secrets-manager-ARN, eyour-vpc-idpor suas próprias informações.your-subnet-id1exemplo Política do IAM
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:PutSecretValue" ], "Resource": [ "your-secrets-manager-ARN" ] }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": "*", "Condition": { "ArnEquals": { "ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/your-vpc-id", "ec2:Subnet": ["arn:aws:ec2:region:account-id:subnet/your-subnet-id1"] } } } ] }exemplo Política de confiança
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" }] } -
Crie uma política do IAM que dê à Lake Formation acesso de leitura à localização do catálogo no Amazon S3
Como proprietário de um catálogo federado no Catálogo de Dados, você usa o Lake Formation para conceder acesso a tabelas de baixa granularidade, acesso refinado em nível de coluna, nível de linha e nível de célula e acesso baseado em tags às suas equipes de dados. O Lake Formation usa uma função do IAM que lhe dá acesso às localizações subjacentes do Amazon S3 de suas tabelas remotas do Iceberg. Esse acesso permite que a Lake Formation forneça credenciais de acesso com escopo definido para mecanismos de análise que consultam tabelas remotas.
Crie uma política do IAM e anexe-a a uma função do IAM. Adicione o diretor de serviço do Lake Formation à política de confiança da função.
No exemplo a seguir, substitua
eamzn-s3-demo-bucketNpor suas próprias informações.your-kms-keyexemplo Política do IAM
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*", "arn:aws:s3:::amzn-s3-demo-bucket2/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket2" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt" ], "Resource": [ "your-kms-key" ] } ] }exemplo Política de confiança
{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "lakeformation.amazonaws.com" }, "Action": "sts:AssumeRole" }] }nota
Quando você usa o console do Lake Formation para criar um catálogo federado, o console usa uma única função do IAM com as duas políticas anexadas para concluir a configuração.
-
Criar um objeto de AWS Glue conexão
AWS Glue suportes de conectores OAuth2 e métodos de autenticação personalizados. O objeto de conexão do Catálogo de Dados oferece suporte à
CATALOG_CASING_FILTERconfiguração que permite trazer objetos em minúsculas ou maiúsculas do seu catálogo remoto para o Catálogo de Dados.O exemplo a seguir usa a configuração de OAuth2 autenticação para criar uma AWS Glue conexão. Substitua
por suas informações.highlighted sectionsaws glue create-connection \ --connection-input '{ "Name": "your-glue-connection-to-snowflake-account", "ConnectionType": "SNOWFLAKEICEBERGRESTCATALOG", "ConnectionProperties": { "INSTANCE_URL": "your-snowflake-account-URL", "ROLE_ARN": "your-IAM-role-for-secrets-and-VPC-access", "CATALOG_CASING_FILTER": "LOWERCASE_ONLY" }, "AuthenticationConfiguration": { "AuthenticationType": "OAUTH2", "OAuth2Properties": { "OAuth2GrantType": "CLIENT_CREDENTIALS", "TokenUrl": "your-internal-or-external-token-server-url", "OAuth2ClientApplication": { "UserManagedClientApplicationClientId": "our-client-id" }, "TokenUrlParametersMap": { "scope": "all-apis" } }, "SecretArn": "arn:aws:secretsmanager:your-aws-region:your-aws-account-id:secret:snowflake-secret" } }' -
Registre AWS Glue a conexão como um recurso do Lake Formation
Usando o objeto de AWS Glue conexão (criado na Etapa 4) e a função do IAM (criada na Etapa 3), agora você pode registrar o objeto de AWS Glue conexão como um recurso gerenciado do Lake Formation.
Substitua
eyour-glue-connector-arnpor suas informações.your-IAM-role-ARN-having-LF-accessaws lakeformation register-resource \ --resource-arnyour-glue-connector-arn\ --role-arnyour-IAM-role-ARN-having-LF-access\ --with-federation \ --with-privileged-access -
Crie um catálogo federado no Catálogo de Dados
Depois de criar um objeto de AWS Glue conexão e registrá-lo no Lake Formation, você pode criar um catálogo federado no Catálogo de Dados:
Forneça ao catálogo federado um nome exclusivo em
, faça referência ao catálogo Snowflake emyour-federated-catalog-namee insira o nome da conexão criada anteriormente emcatalog-name-in-Snowflake.your-glue-connection-nameaws glue create-catalog \ --nameyour-federated-catalog-name\ --catalog-input '{ "FederatedCatalog": { "Identifier":catalog-name-in-Snowflake", "ConnectionName":your-glue-connection-name" }, "CreateTableDefaultPermissions": [], "CreateDatabaseDefaultPermissions": [] }'
Considerações ao integrar com Snowflake
-
Quando você insere recursos (como bancos de dados e tabelas)Snowflake, o Lake Formation não revoga automaticamente as permissões concedidas nesse recurso federado. Para remover as permissões de acesso, você precisa revogar explicitamente as permissões que foram concedidas anteriormente no recurso federado usando o Lake Formation.
-
Quando você monta um catálogo remoto com
CATALOG_CASING_FILTER='UPPERCASE_ONLY'configuração, bancos de dados e tabelas com identificadores em maiúsculas são federados, mas objetos com identificadores em minúsculas não. -
Você pode reutilizar a mesma AWS Glue conexão para criar vários catálogos federados. A exclusão de um catálogo não excluirá a conexão associada. Para excluir uma conexão, use o
aws glue delete-connectioncomando AWS CLI e certifique-se de que todos os catálogos associados sejam excluídos primeiro. -
Não há suporte para namespaces aninhados no Polaris catálogo. Ou seja, a federação de catálogos pode acessar Iceberg tabelas remotas que seguem uma notação
catalog.database.tableem três partes.