Mettre à jour la configuration de la connexion¶
La mise à jour de la configuration de la connexion est une étape qui peut être appelée directement après la mise en pause du connecteur. Cette étape permet à l’utilisateur de mettre à jour les propriétés nécessaires à l’établissement d’une connexion avec le système source pour commencer à ingérer des données dans Snowflake. En cas d’écrasement avec une logique personnalisée, cette procédure doit être remplacée pour spécifier un gestionnaire (handler) Java personnalisé.
Pour lancer cette procédure, l’utilisateur doit avoir le rôle d’application ADMIN
.
L’étape de configuration de la connexion se compose en interne de plusieurs phases. Certaines d’entre elles sont entièrement personnalisables et, par défaut, n’ont pas d’impact. Les phases sont les suivantes :
Validation du statut
Validation des entrées
Appel d’ébauche
Validation de l’ébauche de connexion
Mise à jour de la configuration
Rappel interne
Validation de la connexion
Mise à jour du statut
Exigences¶
La configuration de la connexion nécessite au moins l’exécution des fichiers SQL suivants lors de l’installation de la Native App :
core.sql
configuration/app_config.sql
configuration/connection_configuration.sql
configuration/update_connection_configuration.sql
Dans le cas de cette fonction, il y a une exigence supplémentaire qui dépend de l’utilisateur SDK :
Mise en œuvre personnalisée des procédures
PUBLIC.TEST_DRAFT_CONNECTION()
etPUBLIC.TEST_CONNECTION()
Validation du statut¶
Pour effectuer la mise à jour de la configuration de la connexion, le statut interne du connecteur doit être PAUSED
.
Cette validation ne peut pas être écrasée par l’utilisation de UpdateConnectionConfigurationHandlerBuilder
ni par l’écrasement d’une procédure stockée. Toutefois, il est possible d’implémenter un gestionnaire (handler) personnalisé, qui n’aura pas ce type de validation.
Validation des entrées¶
L’entrée doit être une variant
contenant un mappage des propriétés, mais cela n’est parfois pas suffisant. C’est pourquoi le SDK fournit une procédure stockée interne appelée : PUBLIC.UPDATE_CONNECTION_CONFIG_VALIDATE(config VARIANT)
. Par défaut, cette procédure renvoie simplement 'response_code': 'OK'
, mais l’écraser peut mettre à jour la configuration fournie lors de la validation. Cette fonction permet de personnaliser la logique, par exemple en coupant l’entrée, en convertissant les majuscules et les minuscules, etc. Pour renvoyer une configuration transformée de quelque manière que ce soit, la réponse doit contenir une propriété "config"
supplémentaire dans la Variant
de réponse, cette propriété doit contenir la configuration mise à jour comme Variant
. La procédure peut être personnalisée en l’écrasant par le biais de SQL ou en utilisant UpdateConnectionConfigurationHandlerBuilder
et en fournissant une implémentation personnalisée de l’interface ConnectionConfigurationInputValidator
.
La réponse valide de l’implémentation personnalisée avec transformation ressemble à ceci :
{
"response_code" : "OK",
"config": {
"key1": "value1",
"key2": "value2"
}
}
Mise à jour de la configuration¶
Une fois les validations transmises avec succès, la configuration sera sauvegardée dans la table interne APP_CONFIG
. Le service responsable enregistrera la Variant
fournie sous la clé connection_configuration
. Pour être mise à jour, cette configuration doit être validée avec succès par le rappel interne du projet et la validation de la connexion au projet ; l’ensemble des propriétés fournies est entièrement laissé à l’appréciation de l’utilisateur.
Rappel de projet interne¶
Le rappel interne est une autre étape personnalisable. Par défaut, il appelle PUBLIC.DRAFT_CONNECTION_CONFIGURATION_INTERNAL(connection_configuration VARIANT)
, qui renvoie 'response_code': 'OK'
. Cela peut par exemple être utilisé pour modifier d’autres procédures en leur accordant une intégration d’accès externe. Il peut être remplacé par le script sql ou en utilisant un ConnectionConfigurationHandlerBuilder
pour fournir une implémentation personnalisée de l’interface ConnectionConfigurationCallback
.
Validation de l’ébauche de connexion¶
Cette étape déclenchera une procédure PUBLIC.TEST_DRAFT_CONNECTION(connection_configuration VARIANT)
. Cette procédure tente d’interroger le système source pour obtenir les données en utilisant les données du paramètre d’entrée comme configuration de connexion. Cette procédure n’est pas mise en œuvre par défaut et doit être fournie par l’utilisateur de SDK. En outre, une implémentation de l’interface ConnectionValidator
peut être fournie à UpdateConnectionConfigurationHandlerBuilder
pour personnaliser cette phase. Dans ce cas, il n’est pas nécessaire de mettre en œuvre une procédure stockée. Il est recommandé d’effectuer un contrôle de connectivité minimal dans cette procédure pour s’assurer que les capacités d’accès externe de Snowflake ont été configurées correctement et que le connecteur dispose de tous les privilèges requis pour les utiliser.
Rappel interne¶
Le rappel interne est une autre étape personnalisable. Par défaut, il appelle PUBLIC.SET_CONNECTION_CONFIGURATION_INTERNAL(connection_configuration VARIANT)
, qui renvoie 'response_code': 'OK'
. Cela peut par exemple être utilisé pour modifier d’autres procédures en leur accordant une intégration d’accès externe. Il peut être remplacé par le script sql ou en utilisant un ConnectionConfigurationHandlerBuilder
pour fournir une implémentation personnalisée de l’interface ConnectionConfigurationCallback
.
Validation de la connexion¶
Cette étape déclenchera une procédure PUBLIC.TEST_CONNECTION
. Cette procédure a une action jumelle à celle de PUBLIC.TEST_DRAFT_CONNECTION(connection_configuration VARIANT)
mais n’a pas de paramètre d’entrée et doit être utilisée pour tester la connexion officielle à l’aide d’une configuration sauvegardée dans la base de données.
Affichage de la configuration¶
Les utilisateurs ADMIN
et VIEWER
disposent d’une procédure PUBLIC.GET_CONNECTION_CONFIGURATION()
qui renvoie la configuration actuelle de la connexion à partir de la table interne.
Réponse¶
Réponse aboutie¶
Si la procédure se termine avec succès, elle renvoie une réponse de la procédure TEST_CONNECTION
. Nous vous recommandons d’utiliser le format suivant :
{
"response_code": "OK"
}
Erreur de réponse¶
En cas d’erreur, la réponse suit le format ci-dessous :
{
"response_code": "<ERROR_CODE>",
"message": "<error message>"
}
Les codes d’erreur possibles sont les suivants :
INVALID_CONNECTOR_STATUS
- Statut du connecteur non valide. Statut attendu :[PAUSED]
INTERNAL_ERROR
- Quelque chose s’est mal passé en interne, le message doit être descriptifPROCEDURE_NOT_FOUND
- La procédure appelée n’existe pas. Dans le cas présent, il s’agit de la procédureTEST_CONNECTION
etTEST_DRAFT_CONNECTION
UNKNOWN_SQL_ERROR
- Cette erreur se produit lorsque quelque chose d’inattendu se produit lors de l’appel de procédures internesINVALID_RESPONSE
- Cette erreur se produit lorsque la réponse reçue de la procédure interne ne contient pas deresponse_code
ou qu’une erreur de réponse ne contient pas demessage
, mais contient unresponse_code
UNKNOWN_ERROR
- Cela signifie que quelque chose d’inattendu s’est mal passé - le message de l’exception levée est transmisCodes d’erreur personnalisés reçus de la procédure
TEST_DRAFT_CONNECTION()
- définis par le développeur du connecteurCodes d’erreur personnalisés reçus de la procédure
DRAFT_CONNECTION_CONFIGURATION_INTERNAL()
- définis par le développeur du connecteurCodes d’erreur personnalisés reçus de la procédure
TEST_CONNECTION()
- définis par le développeur du connecteurCodes d’erreur personnalisés reçus de la procédure
SET_CONNECTION_CONFIGURATION_INTERNAL()
- définis par le développeur du connecteur