Verbindungskonfiguration aktualisieren¶
Die Aktualisierung der Verbindungskonfiguration ist ein Schritt, der direkt nach Anhalten des Konnektors aufgerufen werden kann. In diesem Schritt kann der Benutzer die Eigenschaften aktualisieren, die für das Herstellen einer Verbindung zum Quellsystem erforderlich sind. damit die Datenaufnahme (Ingestion) in Snowflake starten kann. Beim Überschreiben mit kundenspezifischer Logik muss diese Prozedur ersetzt werden, um einen kundenspezifischen Java-Handler anzugeben.
Zum Aufrufen dieser Prozedur muss dem Benutzer die Anwendungsrolle ADMIN
zugewiesen sein.
Der Schritt „Verbindungskonfiguration“ besteht intern aus mehreren Phasen. Einige von ihnen sind vollständig anpassbar und tun standardmäßig gar nichts. Die Phasen sind wie folgt:
Validierung des Status
Validierung der Eingabe
Entwurfs-Callback
Validierung der Entwurfsverbindung
Aktualisierung der Konfiguration
Interner Callback
Validierung der Verbindung
Aktualisierung des Status
Anforderungen¶
„Verbindungskonfiguration“ erfordert mindestens die folgenden SQL-Dateien, die während der Native App-Installation ausgeführt werden müssen:
core.sql
configuration/app_config.sql
configuration/connection_configuration.sql
configuration/update_connection_configuration.sql
Für dieses Feature gibt es eine zusätzliche Anforderung, die vom SDK-Benutzer abhängt:
Kundenspezifische Implementierung der Prozeduren
PUBLIC.TEST_DRAFT_CONNECTION()
undPUBLIC.TEST_CONNECTION()
Validierung des Status¶
Um eine Aktualisierung der Verbindungskonfiguration auszuführen, muss der interne Status des Konnektors PAUSED
sein.
Diese Validierung kann weder durch die Verwendung von UpdateConnectionConfigurationHandlerBuilder
noch durch das Überschreiben von gespeicherten Prozeduren überschrieben werden. Es ist jedoch möglich, einen kundenspezifischen Handler zu implementieren, der diese Art der Validierung nicht durchführt.
Validierung der Eingabe¶
Die Eingabe muss ein variant
-Wert sein, der eine Zuordnung von Eigenschaften enthält, was jedoch nicht in allen Fällen ausreichend ist. Aus diesem Grund bietet das SDK eine interne gespeicherte Prozedur namens PUBLIC.UPDATE_CONNECTION_CONFIG_VALIDATE(config VARIANT)
. Standardmäßig gibt diese Prozedur nur 'response_code': 'OK'
zurück, aber wenn Sie sie überschreiben, kann die angegebene Konfiguration während der Validierung aktualisiert werden. Dieses Feature ermöglicht eine kundenspezifische Logik, wie z. B. das Kürzen der Eingabe oder die Konvertierung in Groß-/Kleinschreibung. Um eine in irgendeiner Weise veränderte Konfiguration zurückzugeben, muss die Antwort eine zusätzliche Eigenschaft "config"
in der Variant
-Antwort enthalten. Diese Eigenschaft sollte die aktualisierte Konfiguration als Variant
enthalten. Die Prozedur kann angepasst werden, indem das SQL-Skript überschrieben wird oder indem UpdateConnectionConfigurationHandlerBuilder
verwendet und eine kundenspezifische Implementierung der ConnectionConfigurationInputValidator
-Schnittstelle bereitgestellt wird.
Eine gültige Antwort aus der kundenspezifischen Implementierung mit Transformation sieht wie folgt aus:
{
"response_code" : "OK",
"config": {
"key1": "value1",
"key2": "value2"
}
}
Aktualisierung der Konfiguration¶
Sobald die Validierung erfolgreich war, wird die Konfiguration in der internen Tabelle APP_CONFIG
gespeichert. Der dafür zuständige Dienst speichert den bereitgestellten Variant
-Wert unter dem Schlüssel connection_configuration
. Diese Konfiguration muss durch den internen Entwurfs-Callback und die Entwurfs-Verbindungsvalidierung erfolgreich validiert werden, um aktualisiert werden zu können. Welche Eigenschaften bereitgestellt werden, ist ganz dem Benutzer überlassen.
Interner Entwurfs-Callback¶
Der interne Callback ist ein weiterer anpassbarer Schritt. Standardmäßig wird PUBLIC.DRAFT_CONNECTION_CONFIGURATION_INTERNAL(connection_configuration VARIANT)
aufgerufen, das 'response_code': 'OK'
zurückgibt. So können Sie zum Beispiel andere Prozeduren verändern, indem Sie ihnen eine Integration für den externen Zugriff zuweisen. Die Prozedur kann über das SQL-Skript oder durch Verwendung von ConnectionConfigurationHandlerBuilder
überschrieben werden, um eine kundenspezifische Implementierung der ConnectionConfigurationCallback
-Schnittstelle bereitzustellen.
Validierung der Entwurfsverbindung¶
Bei diesem Schritt wird eine PUBLIC.TEST_DRAFT_CONNECTION(connection_configuration VARIANT)
-Prozedur ausgelöst. Diese Prozedur versucht, das Quellsystem nach den Daten abzufragen, wobei die Daten aus dem Eingabeparameter als Verbindungskonfiguration verwendet werden. Diese Prozedur ist nicht standardmäßig implementiert und muss vom SDK-Benutzer bereitgestellt werden. Außerdem kann die Implementierung einer ConnectionValidator
-Schnittstelle für UpdateConnectionConfigurationHandlerBuilder
bereitgestellt werden, um diese Phase anzupassen. In diesem Fall ist es nicht erforderlich, eine gespeicherte Prozedur zu implementieren. Es wird empfohlen, in diesem Verfahren nur eine minimale Konnektivitätsprüfung durchzuführen, um sicherzustellen, dass die Möglichkeiten für den externen Zugriff von Snowflake korrekt konfiguriert sind und der Konnektor über alle erforderlichen Berechtigungen verfügt, um sie zu nutzen.
Interner Callback¶
Der interne Callback ist ein weiterer anpassbarer Schritt. Standardmäßig wird PUBLIC.SET_CONNECTION_CONFIGURATION_INTERNAL(connection_configuration VARIANT)
aufgerufen, das 'response_code': 'OK'
zurückgibt. So können Sie zum Beispiel andere Prozeduren verändern, indem Sie ihnen eine Integration für den externen Zugriff zuweisen. Die Prozedur kann über das SQL-Skript oder durch Verwendung von ConnectionConfigurationHandlerBuilder
überschrieben werden, um eine kundenspezifische Implementierung der ConnectionConfigurationCallback
-Schnittstelle bereitzustellen.
Validierung der Verbindung¶
Bei diesem Schritt wird eine PUBLIC.TEST_CONNECTION
-Prozedur ausgelöst. Diese Prozedur hat eine Partnerfunktion zu PUBLIC.TEST_DRAFT_CONNECTION(connection_configuration VARIANT)
, aber keine Eingabeparameter. Sie dient zum Testen der offiziellen Verbindung unter Verwendung einer in der Datenbank gespeicherten Konfiguration.
Anzeigen der Konfiguration¶
Es gibt eine Prozedur PUBLIC.GET_CONNECTION_CONFIGURATION()
, die den Benutzern ADMIN
und VIEWER
zur Verfügung steht und die die aktuelle Verbindungskonfiguration aus der internen Tabelle zurückgibt.
Antwort¶
Erfolgreiche Antwort¶
Wenn die Prozedur erfolgreich abgeschlossen wird, gibt sie eine Antwort von der Prozedur TEST_CONNECTION
zurück: Wir empfehlen die Verwendung des folgenden Formats:
{
"response_code": "OK"
}
Fehlerantwort¶
Im Falle eines Fehlers erfolgt die Antwort in folgendem Format:
{
"response_code": "<ERROR_CODE>",
"message": "<error message>"
}
Mögliche Fehlercodes sind:
INVALID_CONNECTOR_STATUS
– Ungültiger Konnektorstatus. Erwarteter Status:[PAUSED]
INTERNAL_ERROR
– Es gibt intern eine Problem; die Meldung sollte beschreibend sein.PROCEDURE_NOT_FOUND
– Die Prozedur, die aufgerufen wurde, existiert nicht. In diesem Fall geht es meist um die ProzedurenTEST_CONNECTION
undTEST_DRAFT_CONNECTION
.UNKNOWN_SQL_ERROR
– Dieser Fehler tritt auf, wenn beim Aufruf interner Prozeduren etwas Unerwartetes passiert.INVALID_RESPONSE
– Dieser Fehler tritt auf, wenn die von der internen Prozedur empfangene Antwort nichtresponse_code
enthält oder eine Fehlerantwort nichtmessage
enthält, sondernresponse_code
.UNKNOWN_ERROR
– Dies bedeutet, dass etwas Unerwartetes passiert ist; die Meldung der ausgelösten Ausnahme wird weitergeleitet.Kundenspezifische Fehlercodes, die von der Prozedur
TEST_DRAFT_CONNECTION()
empfangen werden – vom Entwickler des Konnektors definiertKundenspezifische Fehlercodes, die von der Prozedur
DRAFT_CONNECTION_CONFIGURATION_INTERNAL()
empfangen werden – vom Entwickler des Konnektors definiertKundenspezifische Fehlercodes, die von der Prozedur
TEST_CONNECTION()
empfangen werden – vom Entwickler des Konnektors definiertKundenspezifische Fehlercodes, die von der Prozedur
SET_CONNECTION_CONFIGURATION_INTERNAL()
empfangen werden – vom Entwickler des Konnektors definiert