Verificação da configuração de catálogo REST¶
É possível usar os cenários a seguir para verificar se a autorização e o controle de acesso com o catálogo do Iceberg REST foram configurados corretamente, para que o Snowflake possa interagir com o servidor do catálogo.
Use SYSTEM$VERIFY_CATALOG_INTEGRATION¶
É possível usar a função SYSTEM$VERIFY_CATALOG_INTEGRATION para verificar a configuração de integração do catálogo.
O exemplo a seguir demonstra como a função do sistema detecta e relata problemas com uma integração de catálogo configurada incorretamente.
O exemplo de instrução a seguir cria uma integração de catálogo REST usando um segredo de cliente OAuth inválido (isso é executado sem erros):
Utilize a função do sistema para verificar a integração do catálogo, esperando uma falha:
Saída:
Verificação de uma configuração para OAuth¶
Siga estas etapas para verificar sua configuração para OAuth com o catálogo REST remoto.
Etapa 1: recuperação de um token de acesso¶
Use um comando curl para recuperar um token de acesso de seu catálogo. O exemplo a seguir solicita um token de acesso no Snowflake Open Catalog:
Onde:
https://xx123xx.us-west-2.aws.snowflakecomputing.com/polaris/api/catalog/v1/oauth/tokensé o ponto de extremidade para recuperar um token OAuth (getToken).scopeé o mesmo valor que você especifica para o parâmetroOAUTH_ALLOWED_SCOPESao criar uma integração de catálogo. Para vários escopos, use um espaço como separador.my_client_idé o mesmo ID de cliente que você especifica para o parâmetroOAUTH_CLIENT_IDao criar uma integração de catálogo.my_client_secreté o mesmo segredo de cliente que você especifica para o parâmetroOAUTH_CLIENT_SECRETao criar uma integração de catálogo.
Exemplo de valor de retorno:
Etapa 2: verifique as permissões do token de acesso¶
Usando o token de acesso recuperado na etapa anterior, verifique se você tem permissão para acessar o servidor de catálogo.
É possível usar o comando curl para listar as definições de configuração de seu catálogo:
Onde:
?warehouse=warehouseespecifica opcionalmente o nome do warehouse a ser solicitado de seu catálogo (se compatível). Para Snowflake Open Catalog, o nome do warehouse é o nome do catálogo.ACCESS_TOKENé uma variável que contém oaccess_tokenrecuperado na etapa anterior.
Exemplo de valor de retorno:
Etapa 3: carregamento de uma tabela do catálogo¶
Você também pode fazer uma solicitação GET para carregar uma tabela. O Snowflake usa a operação loadTable para carregar dados de tabela de seu catálogo REST.
Onde:
prefixespecifica opcionalmente o prefixo obtido da resposta anterior degetConfig.namespaceé o namespace da tabela que você deseja recuperar. Se o namespace estiver aninhado, use o separador%1F; por exemplo,parentNamespace%1FchildNamespace.tableé o nome da tabela.
Verificação de uma configuração para um token de portador¶
Siga estas etapas para verificar sua configuração com o catálogo REST remoto e usar um token de portador.
Etapa 1: verificação das permissões do token de acesso¶
Use um comando curl para verificar se você tem permissão para acessar o servidor de catálogo:
Onde:
https://xx123xx.us-west-2.aws.snowflakecomputing.com/polaris/api/catalog/v1/oauth/tokensé o ponto de extremidade para recuperar um token OAuth (getToken).?warehouse=warehouseespecifica opcionalmente o nome do warehouse a ser solicitado de seu catálogo (se compatível).BEARER_TOKENé uma variável que contém oaccess_tokenrecuperado na etapa anterior.
Exemplo de valor de retorno:
Etapa 2: carregamento de uma tabela do catálogo¶
Você também pode fazer uma solicitação GET para carregar uma tabela. O Snowflake usa a operação loadTable para carregar dados de tabela de seu catálogo REST.
Onde:
prefixespecifica opcionalmente o prefixo obtido da resposta anterior degetConfig.namespaceé o namespace da tabela que você deseja recuperar. Se o namespace estiver aninhado, use o separador%1F; por exemplo,parentNamespace%1FchildNamespace.tableé o nome da tabela.
Verificação de uma configuração para SigV4¶
Siga estas etapas para verificar sua configuração para SigV4 com AWS.
Etapa 1: adicione seu usuário à relação de confiança da função IAM¶
Ao criar uma integração de catálogo REST para SigV4, o Snowflake provisiona um usuário AWS IAM para sua conta Snowflake. Você adiciona esse usuário do Snowflake IAM à relação de confiança para uma função IAM com permissão para acessar os recursos do API Gateway.
Para testar a configuração, você pode assumir a função de usuário em sua conta AWS após adicionar o usuário AWS ao documento de política de confiança da função. Para recuperar o ARN de seu usuário IAM atual, use o comando sts get-caller-identity para a interface de linha de comando (CLI) AWS :
Exemplo de saída:
O documento de política de confiança atualizado deve incluir o ARN do usuário Snowflake e o ARN do usuário da seguinte forma:
Para obter instruções completas, consulte Atualização de uma política de confiança de função na documentação AWS IAM.
Etapa 2: assuma sua função IAM para obter credenciais temporárias¶
Para obter credenciais de segurança temporárias para AWS, use o comando sts assume-role para AWS CLI.
Onde:
my_role_arné o nome de recurso da Amazon (ARN) da função IAM que você configurou para o Snowflake.session_nameé um identificador de cadeia de caracteres de sua escolha para a sessão de função assumida; por exemplo,my_rest_session.
Exemplo de saída:
Nota
Se o comando assume-role falhar, isso significa que o usuário AWS atual não está incluso na política de confiança da função como uma entidade permitida.
Da mesma forma, se o ARN do usuário Snowflake IAM não estiver incluso em sua política de confiança, o Snowflake não conseguirá se conectar aos seus recursos do gateway API. Para obter mais informações, consulte Configurar a relação de confiança no IAM.
Etapa 3: verifique se a função IAM tem as permissões corretas¶
Usando as credenciais temporárias que você recuperou na etapa anterior, verifique se a função IAM tem permissão para invocar as APIs do API Gateway.
É possível usar o comando curl para listar as definições de configuração de seu catálogo:
Onde:
123xxxxxxx.execute-api.us-west-2.amazonaws.comé o nome de host do API Gateway.test_v2é o nome do estágio em que seu API foi implementado.v1/configespecifica a operação getConfig da definição OpenAPI do catálogo Iceberg.?warehouse=warehouseespecifica opcionalmente o nome do warehouse a ser solicitado de seu catálogo (se compatível).$AWS_ACCESS_KEY_IDé uma variável que contém oAccessKeyIdque você recuperou usando o comandosts assume-role.$AWS_SECRET_ACCESS_KEYé uma variável que contém oSecretAccessKeyque você recuperou usando o comandosts assume-role.aws:amz:us-west-2:execute-apié o nome de assinatura do protocolo SigV4. Para AWS Glue, useaws:amz:us-west-2:glue.$AWS_SESSION_TOKENé uma variável que contém oSessionTokenque você recuperou usando o comandosts assume-role.
Exemplo de valor de retorno:
Você também pode fazer uma solicitação GET para carregar uma tabela. O Snowflake usa a operação loadTable para carregar dados de tabela de seu catálogo REST.
Onde:
prefixespecifica opcionalmente o prefixo obtido da resposta anterior degetConfig.namespaceé o namespace da tabela que você deseja recuperar. Se o namespace estiver aninhado, use o separador%1F; por exemplo,parentNamespace%1FchildNamespace.tableé o nome da tabela.
API privada
Para uma API privada, é possível especificar o ponto de extremidade da VPC e o nome de host privado do Amazon API Gateway nos mesmos comandos curl.
Por exemplo:
Onde:
https://vpce-xxxxxxxxxxxxxxxxxxxxxxxxxx.execute-api.us-west-2.vpce.amazonaws.com/...é o nome de host de seu ponto de extremidade de VPC.abc1defgh2.execute-api.us-west-2.amazonaws.comé o nome de host de sua API privada no Amazon API Gateway.