Configuração de conexão¶
A configuração da conexão é uma etapa do assistente que vem logo após a configuração do conector. Esta etapa permite que o usuário especifique as propriedades necessárias para estabelecer uma conexão com o sistema de origem para começar a ingerir dados no Snowflake. O procedimento chamado PUBLIC.SET_CONNECTION_CONFIGURATION(connection_configuration VARIANT)
é o ponto de entrada responsável por esta fase do assistente. Este procedimento pode ser chamado pela UI ou da planilha. Ao substituir com lógica personalizada, este procedimento precisa ser substituído para especificar o manipulador Java personalizado.
Chamar este procedimento requer que o usuário tenha a função do aplicativo ADMIN
atribuída.
A etapa de configuração da conexão consiste internamente em várias fases. Alguns deles são totalmente personalizáveis e, por padrão, não fazem nada. As fases são as seguintes:
Validação de status
Validação de entrada
Atualização de configuração
Retorno de chamada interno
Validação de conexão
Atualização de status
Requisitos¶
A configuração da conexão requer pelo menos os seguintes arquivos SQL a serem executados durante a instalação do aplicativo nativo:
core.sql
(consulte: Referência de SQL essencial)configuration/app_config.sql
(consulte: Referência de SQL da configuração do aplicativo)configuration/connection_configuration.sql
(consulte: Referência de configurações de conexão)
Além disso, há um requisito dependente do usuário SDK:
implementação personalizada do procedimento
PUBLIC.TEST_CONNECTION()
Validação de status¶
Para executar a configuração da conexão, o status interno do conector precisa ser CONFIGURING
, com status de configuração: CONFIGURED
ou CONNECTED
. O primeiro status de configuração será definido logo após a etapa de configuração do conector; o último estará presente se, por algum motivo, a configuração de conexão tiver que ser atualizada durante etapas posteriores.
Esta validação não pode ser substituída usando ConnectionConfigurationHandlerBuilder
nem sobrescrevendo um procedimento armazenado. No entanto, é possível implementar um manipulador personalizado, que não terá esse tipo de validação.
Validação de entrada¶
A entrada precisa ser uma variant
contendo um mapa de propriedades, porém isso pode não funcionar para todos os casos. Por essa razão, o SDK fornece um procedimento armazenado interno chamado: PUBLIC.SET_CONNECTION_CONFIG_VALIDATE(config VARIANT)
. Por padrão, este procedimento apenas retorna 'responseCode': 'OK'
, substituí-lo pode atualizar a configuração fornecida durante a validação. Esse recurso permite lógica personalizada. Por exemplo, cortar a entrada ou converter para maiúsculas/minúsculas. Para retornar a configuração transformada de qualquer forma, a resposta precisa conter uma propriedade adicional "config"
na resposta Variant
, esta propriedade deve conter a configuração atualizada como Variant
. O procedimento pode ser personalizado por meio de sobreposição através do SQL ou usando ConnectionConfigurationHandlerBuilder
e fornecer implementação personalizada da interface ConnectionConfigurationInputValidator
.
A seguir está uma resposta válida da implementação personalizada com transformação:
{
"response_code" : "OK",
"config": {
"key1": "value1",
"key2": "value2"
}
}
Atualização de configuração¶
Depois que as validações forem aprovadas com sucesso, a configuração será salva na tabela APP_CONFIG
interna. O serviço responsável por isso salva a Variant
fornecida sob a chave connection_configuration
. Esta configuração não segue nenhum requisito adicional ao salvar, o conjunto de propriedades fornecida fica a critério do usuário.
Retorno de chamada interno¶
O retorno de chamada interno é outra etapa personalizável. Por padrão, ele invoca PUBLIC.SET_CONNECTION_CONFIGURATION_INTERNAL(connection_configuration VARIANT)
, que retorna 'response_code': 'OK'
. Por exemplo, ele pode ser usado para alterar outros procedimentos, concedendo-lhes integração de acesso externo. Pode ser sobrescrito através do script SQL ou usando um ConnectionConfigurationHandlerBuilder
para fornecer implementação personalizada da interface ConnectionConfigurationCallback
.
Validação de conexão¶
Esta etapa aciona um procedimento PUBLIC.TEST_CONNECTION
. Este procedimento tenta consultar o sistema de origem para obter os dados. Este procedimento não é implementado por padrão e precisa ser fornecido pelo usuário do SDK. Adicionalmente, a implementação da interface ConnectionValidator
pode ser fornecida ao ConnectionConfigurationHandlerBuilder
para personalizar esta fase, neste caso, não há necessidade de implementar um procedimento armazenado. A recomendação é executar apenas uma verificação mínima de conectividade neste procedimento para garantir que os recursos de acesso externo do Snowflake foram configurados corretamente e que o conector tem todos os privilégios necessários para usá-los.
Atualização de status¶
Quando todas as fases acima forem concluídas com sucesso, o status interno do conector será atualizado para:
{
"status": "CONFIGURING",
"configurationStatus": "CONNECTED"
}
Para o diagrama completo de transições de estado, veja Fluxo do conector.
Visualização da configuração¶
Há um procedimento PUBLIC.GET_CONNECTION_CONFIGURATION()
disponível para os usuários ADMIN
e VIEWER
que retorna uma configuração de conexão atual da tabela interna.
Resposta¶
Resposta bem-sucedida¶
Se o procedimento for concluído com sucesso, ele retornará uma resposta do procedimento TEST_CONNECTION
. Recomendamos usar o seguinte formato:
{ "response_code": "OK" }
Resposta de erro¶
Em caso de erro, a resposta seguirá o formato abaixo:
{ "response_code": "<ERROR_CODE>", "message": "<error message>" }
Possíveis códigos de erro incluem:
INVALID_CONNECTOR_STATUS
- Status do conector inválido. Status esperado:[CONFIGURING]
INVALID_CONNECTOR_CONFIGURATION_STATUS
- Status de configuração do conector inválido. Status esperado:CONFIGURED
INTERNAL_ERROR
- Algo deu errado internamente, a mensagem deve ser descritivaPROCEDURE_NOT_FOUND
- O procedimento que foi chamado não existe. Nesse caso, trata-se principalmente de um procedimentoTEST_CONNECTION
.UNKNOWN_SQL_ERROR
- Este erro ocorre quando algo inesperado acontece ao chamar procedimentos internosINVALID_RESPONSE
- Este erro ocorre quando a resposta recebida do procedimento interno não contémresponse_code
ou uma resposta de erro não contémmessage
, mas contémresponse_code
UNKNOWN_ERROR
- Significa que algo inesperado deu errado - a mensagem de exceção lançada é encaminhadaCódigos de erro personalizados recebidos do procedimento
TEST_CONNECTION()
- definido pelo desenvolvedor do conectorCódigos de erro personalizados recebidos do procedimento
SET_CONNECTION_CONFIGURATION_INTERNAL()
- definido pelo desenvolvedor do conector