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:

  1. Validierung des Status

  2. Validierung der Eingabe

  3. Entwurfs-Callback

  4. Validierung der Entwurfsverbindung

  5. Aktualisierung der Konfiguration

  6. Interner Callback

  7. Validierung der Verbindung

  8. 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() und PUBLIC.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"
    }
}
Copy

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"
}
Copy

Fehlerantwort

Im Falle eines Fehlers erfolgt die Antwort in folgendem Format:

{
  "response_code": "<ERROR_CODE>",
  "message": "<error message>"
}
Copy

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 Prozeduren TEST_CONNECTION und TEST_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 nicht response_code enthält oder eine Fehlerantwort nicht message enthält, sondern response_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 definiert

  • Kundenspezifische Fehlercodes, die von der Prozedur DRAFT_CONNECTION_CONFIGURATION_INTERNAL() empfangen werden – vom Entwickler des Konnektors definiert

  • Kundenspezifische Fehlercodes, die von der Prozedur TEST_CONNECTION() empfangen werden – vom Entwickler des Konnektors definiert

  • Kundenspezifische Fehlercodes, die von der Prozedur SET_CONNECTION_CONFIGURATION_INTERNAL() empfangen werden – vom Entwickler des Konnektors definiert