Atualizar a configuração de conexão¶
Atualizar a configuração da conexão é uma etapa que pode ser chamada diretamente após pausar o conector. Esta etapa permite que o usuário atualize as propriedades necessárias para estabelecer uma conexão com o sistema de origem para começar a ingerir dados no Snowflake. Ao substituir com lógica personalizada, este procedimento precisa ser substituído para especificar um 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
Rascunho de retorno de chamada
Rascunho da validação da conexão
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 que pelo menos os seguintes arquivos sql sejam executados durante a instalação do Native App:
core.sql
configuration/app_config.sql
configuration/connection_configuration.sql
configuration/update_connection_configuration.sql
No caso deste recurso, há um requisito adicional dependente do usuário SDK:
Implementação personalizada dos procedimentos
PUBLIC.TEST_DRAFT_CONNECTION()
ePUBLIC.TEST_CONNECTION()
Validação de status¶
Para executar a atualização da configuração da conexão, o status interno do conector precisa ser PAUSED
.
Esta validação não pode ser substituída usando UpdateConnectionConfigurationHandlerBuilder
nem sobrescrevendo o 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 às vezes isso não é suficiente. Por essa razão, o SDK fornece um procedimento armazenado interno chamado: PUBLIC.UPDATE_CONNECTION_CONFIG_VALIDATE(config VARIANT)
. Por padrão, este procedimento apenas retorna 'response_code': 'OK'
, mas ao sobrescrevê-lo, ele pode atualizar a configuração fornecida durante a validação. Esse recurso permite lógica personalizada, como, por exemplo, corte de entrada, conversão para maiúsculas/minúsculas etc. Para retornar a configuração transformada de qualquer forma, a resposta precisa conter informações adicionais da propriedade "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 UpdateConnectionConfigurationHandlerBuilder
e fornecer implementação personalizada da interface ConnectionConfigurationInputValidator
.
A resposta válida da implementação personalizada com transformação se parece com isto:
{
"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 salvará a Variant
fornecida sob a chave connection_configuration
. Esta configuração precisa ser validada com sucesso pelo rascunho interno do retorno de chamada e pela validação de conexão de rascunho para ser atualizada; o conjunto de propriedades fornecidas fica totalmente a critério do usuário.
Rascunho interno de retorno de chamada¶
O retorno de chamada interno é outra etapa personalizável. Por padrão, ele invoca PUBLIC.DRAFT_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. Ele pode ser substituído por meio do script sql ou usando um ConnectionConfigurationHandlerBuilder
para fornecer implementação personalizada da interface ConnectionConfigurationCallback
.
Rascunho da validação da conexão¶
Esta etapa irá disparar um procedimento PUBLIC.TEST_DRAFT_CONNECTION(connection_configuration VARIANT)
. Este procedimento tenta consultar o sistema de origem para obter dados usando dados do parâmetro de entrada como configuração de conexão. Este procedimento não é implementado por padrão e precisa ser fornecido pelo usuário do SDK. Além disso, uma implementação da interface ConnectionValidator
pode ser fornecida ao UpdateConnectionConfigurationHandlerBuilder
para personalizar esta fase. Neste caso, não há necessidade de implementar 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.
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. Ele pode ser substituído por meio do script sql ou usando um ConnectionConfigurationHandlerBuilder
para fornecer implementação personalizada da interface ConnectionConfigurationCallback
.
Validação de conexão¶
Esta etapa irá disparar um procedimento PUBLIC.TEST_CONNECTION
. Este procedimento tem ação de geminação para o PUBLIC.TEST_DRAFT_CONNECTION(connection_configuration VARIANT)
, mas não tem parâmetro de entrada e deve ser usado para testar a conexão oficial usando uma configuração salva no banco de dados.
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 segue 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:[PAUSED]
INTERNAL_ERROR
- Algo deu errado internamente, a mensagem deve ser descritivaPROCEDURE_NOT_FOUND
- O procedimento que foi chamado não existe. Neste caso é sobre o procedimentoTEST_CONNECTION
eTEST_DRAFT_CONNECTION
principalmente.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_DRAFT_CONNECTION()
- definido pelo desenvolvedor do conectorCódigos de erro personalizados recebidos do procedimento
DRAFT_CONNECTION_CONFIGURATION_INTERNAL()
- definido pelo desenvolvedor do conectorCó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