CREATE SERVICE

Erstellt einen neuen Snowpark Container Services-Dienst im aktuellen Schema. Wenn bereits ein Dienst mit diesem Namen existiert, verwenden Sie den Befehl DROP SERVICE, um den zuvor erstellten Dienst zu löschen.

Sie können mehr als eine Instanz Ihres Dienstes ausführen. Jede Dienstinstanz ist eine Sammlung von Containern, wie in der Dienstspezifikationsdatei definiert, die zusammen auf einem Knoten in Ihrem Computepool ausgeführt wird. Wenn Sie mehrere Instanzen eines Dienstes ausführen, wird der eingehende Datenverkehr von einem Load Balancer verwaltet.

Beachten Sie, dass die Befehlsparameter in einer bestimmten Reihenfolge angegeben werden müssen. Weitere Informationen dazu finden Sie in den Nutzungshinweisen.

Siehe auch:

ALTER SERVICE, DESCRIBE SERVICE, DROP SERVICE, SHOW SERVICES

Syntax

CREATE SERVICE [ IF NOT EXISTS ] <name>
  IN COMPUTE POOL <compute_pool_name>
  {
     fromSpecification
     | fromSpecificationTemplate
  }
  [ EXTERNAL_ACCESS_INTEGRATIONS = ( <EAI_name> [ , ... ] ) ]
  [ AUTO_RESUME = { TRUE | FALSE } ]
  [ MIN_INSTANCES = <num> ]
  [ MIN_READY_INSTANCES = <num> ]
  [ MAX_INSTANCES = <num> ]
  [ QUERY_WAREHOUSE = <warehouse_name> ]
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
  [ COMMENT = '{string_literal}']
Copy

Wobei:

fromSpecification ::=
  {
    FROM SPECIFICATION_FILE = '<yaml_file_path>' -- for native app service.
    | FROM @<stage> SPECIFICATION_FILE = '<yaml_file_path>' -- for non-native app service.
    | FROM SPECIFICATION <specification_text>
  }
Copy
fromSpecificationTemplate ::=
  {
    FROM SPECIFICATION_TEMPLATE_FILE = '<yaml_file_stage_path>' -- for native app service.
    | FROM @<stage> SPECIFICATION_TEMPLATE_FILE = '<yaml_file_stage_path>' -- for non-native app service.
    | FROM SPECIFICATION_TEMPLATE <specification_text>
  }
  USING ( <key> => <value> [ , <key> => <value> [ , ... ] ]  )
Copy

Erforderliche Parameter

name

Zeichenfolge, die den Bezeichner (d. h. den Namen) für den Dienst angibt. Der Wert muss für das Schema, in dem der Dienst erstellt wird, eindeutig sein.

In Anführungszeichen gesetzte Namen für Sonderzeichen oder Namen, bei denen die Groß-/Kleinschreibung beachtet wird, werden nicht unterstützt. Dieselbe Einschränkung gilt auch für Datenbank- und Schemanamen, wenn Sie einen Dienst erstellen. Das heißt, Datenbank- und Schemanamen ohne Anführungszeichen sind beim Erstellen eines Dienstes gültig.

IN COMPUTE POOL compute_pool_name

Gibt den Namen des Computepools in Ihrem Konto an, auf dem der Dienst ausgeführt werden soll.

FROM ...

Bezeichnet die Spezifikation oder die Spezifikationsvorlage für den Dienst.

Verwendung einer Dienstspezifikation

Sie können die Spezifikation entweder inline oder in einer separaten Datei definieren.

SPECIFICATION_FILE = 'yaml_file_path' oder . @stage SPECIFICATION_FILE = 'yaml_file_path' oder . SPECIFICATION specification_text

Gibt die Datei an, die die Dienstspezifikation oder die Dienstspezifikation inline enthält. Wenn Ihre Dienstspezifikation in einer Datei vorliegt, verwenden Sie SPECIFICATION_FILE. Für Dienste, die in einer Snowflake Native App erstellt wurden, lassen Sie @stage weg und geben einen Pfad relativ zum Stammverzeichnis der App an. Für Dienste, die in anderen Kontexten erstellt wurden, geben Sie den internen Snowflake-Stagingbereich und den Pfad zur Datei mit der Dienstspezifikation an.

Verwendung einer Vorlage für eine Dienstspezifikation

Sie können die -Spezifikationsvorlage entweder inline oder in einer separaten Datei definieren.

SPECIFICATION_TEMPLATE_FILE = 'yaml_file_path' oder . @stage SPECIFICATION_TEMPLATE_FILE = 'yaml_file_path' oder . SPECIFICATION_TEMPLATE specification_text

Gibt die Datei an, die die Vorlage für die Dienstspezifikation oder die Vorlage für die Dienstspezifikation inline enthält. Wenn sich Ihre Vorlage für die Dienstspezifikation in einer Datei befindet, verwenden Sie SPECIFICATION_TEMPLATE_FILE. Für Dienste, die in einer Snowflake Native App erstellt wurden, lassen Sie @stage weg und geben einen Pfad relativ zum Stammverzeichnis der App an. Für Dienste, die in anderen Kontexten erstellt wurden, geben Sie den internen Snowflake-Stagingbereich und den Pfad zur Datei mit der Dienstspezifikation an. Wenn Sie eine Spezifikationsvorlage verwenden, sollten Sie auch den Parameter USING angeben.

USING ( key => value [ , key => value [ , ... ] ]  )

Gibt die Variablen der Vorlage und die Werte dieser Variablen an.

  • key ist der Name der Vorlagenvariable. Der Name der Vorlagenvariable kann optional in doppelte Anführungszeichen (") eingeschlossen werden.

  • value ist der Wert, der der Variablen in der Vorlage zugewiesen werden soll. Zeichenfolgenwert müssen in ' oder $$ eingeschlossen sein. Der Wert muss entweder alphanumerisch oder ein gültiger JSON-Wert sein.

Verwenden Sie ein Komma zwischen jedem Schlüssel-Wert-Paar.

Optionale Parameter

EXTERNAL_ACCESS_INTEGRATIONS = ( EAI_name [ , ... ] )

Gibt die Namen der Integrationen für den externen Zugriff an, die Ihrem Dienst den Zugriff auf externe Sites ermöglichen. Bei den Namen in dieser Liste wird zwischen Groß- und Kleinschreibung unterschieden. Standardmäßig haben Anwendungscontainer keine Berechtigung für den Zugriff auf das Internet. Wenn Sie Ihrem Dienst den Zugriff auf eine externe Site ermöglichen möchten, erstellen Sie eine Integration für den externen Zugriff (External Access Integration, EAI), und konfigurieren Sie dann Ihren Dienst für die Verwendung dieser Integration. Weitere Informationen dazu finden Sie unter Konfigurieren des Netzwerkausgangs.

AUTO_RESUME = { TRUE | FALSE }

Gibt an, ob ein Dienst automatisch fortgesetzt werden soll, wenn der Benutzer eine der folgenden Aktionen ausführt, die von dem Dienst abhängen:

  • Ausführen einer Abfrage, die eine Dienstfunktion verwendet.

  • Senden einer Anfrage an den öffentlichen Endpunkt, der vom Dienst über den (Ingress) bereitgestellt wird.

Wenn AUTO_RESUME den Wert FALSE hat, müssen Sie den Dienst explizit fortsetzen (mit ALTER SERVICE … RESUME).

MIN_INSTANCES = num

Gibt die minimale Anzahl von auszuführenden Dienstinstanzen an.

Standard: 1

MIN_READY_INSTANCES = num

Gibt an, welche Instanzen des Dienstes mindestens bereit sein müssen, damit Snowflake den Dienst als bereit zur Bearbeitung von Anfragen betrachtet. MIN_READY_INSTANCES muss gleich oder kleiner als MIN_INSTANCES sein. Weitere Informationen dazu finden Sie unter Skalieren von Diensten.

Bemerkung

Wenn Sie nach der Erstellung eines Dienstes den Befehl SHOW SERVICES oder DESCRIBE SERVICE verwenden möchten, um die für den Dienst konfigurierten MIN_READY_INSTANCES zu finden, müssen Sie das Verhaltensänderungs-Bundle 2024_08 in Ihrem Konto aktivieren. Zum Aktivieren dieses Bundles in Ihrem Konto führen Sie die folgende Anweisung aus:

SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2024_08');
Copy

Voreinstellung: Der Wert der Eigenschaft MIN_INSTANCES.

MAX_INSTANCES = num

Gibt die maximale Anzahl der auszuführenden Dienstinstanzen an.

Voreinstellung: Der Wert der Eigenschaft MIN_INSTANCES.

QUERY_WAREHOUSE = warehouse_name

Zu verwendendes Warehouse, wenn ein Dienstcontainer eine Verbindung zu Snowflake herstellt, um eine Abfrage auszuführen, aber das zu verwendende Warehouse nicht ausdrücklich angibt.

Standard: Kein Warehouse.

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )

Gibt den Namen des Tags und den Wert der Tag-Zeichenfolge an.

Der Tag-Wert ist immer eine Zeichenfolge, die maximale 256 Zeichen lang sein kann.

Weitere Informationen zur Angabe von Tags in einer Anweisung finden Sie unter Tag-Kontingente für Objekte und Spalten.

COMMENT = 'string_literal'

Gibt einen Kommentar für den Dienst an.

Standard: Kein Wert

Anforderungen an die Zugriffssteuerung

Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:

Berechtigung

Objekt

Anmerkungen

CREATE SERVICE

Schema

USAGE

Computepool

READ

Stagingbereich

Dies ist der Stagingbereich, in dem die Spezifikation gespeichert ist.

READ

Image-Repository

Repository von Images, auf die in der Spezifikation verwiesen wird.

BIND SERVICE ENDPOINT

Konto

Eine Rolle muss über diese Berechtigung verfügen, um einen Dienst mit öffentlichen Endpunkten zu erstellen. Dies ermöglicht dem Dienst den Zugriff auf öffentliche Endpunkte. Wenn die Eigentümerrolle des Dienstes diese Berechtigung verliert, sind die öffentlichen Endpunkte nicht mehr zugänglich.

USAGE-Berechtigung für die übergeordnete Datenbank und das Schema ist erforderlich, um Operationen an einem beliebigen Objekt in einem Schema durchzuführen.

Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.

Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.

Nutzungshinweise

  • Beim Aufrufen von CREATE SERVICE sollten die Parameter in dieser Reihenfolge angegeben werden: erst Computepool, dann die Dienstspezifikation (entweder Anbieter-Spezifikationsdatei im Stagingbereich oder die Inline-Spezifikation) und dann andere Eigenschaften.

  • Metadaten:

    Achtung

    Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „Benutzer“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.

Beispiele

Erstellen Sie einen Dienst mit zwei aktiven Dienstinstanzen:

CREATE SERVICE echo_service
  IN COMPUTE POOL tutorial_compute_pool
  FROM @tutorial_stage
  SPECIFICATION_FILE='echo_spec.yaml'
  MIN_INSTANCES=2
  MAX_INSTANCES=2
Copy