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.
- Siehe auch:
ALTER SERVICE, DESCRIBE SERVICE, DROP SERVICE, SHOW SERVICES
Syntax¶
CREATE SERVICE [ IF NOT EXISTS ] <name>
IN COMPUTE POOL <compute_pool_name>
{
FROM @<stage>
SPECIFICATION_FILE = '<yaml_file_stage_path>'
|
FROM SPECIFICATION <specification_text>
}
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <EAI_name> [ , ... ] ) ]
[ AUTO_RESUME = { TRUE | FALSE } ]
[ MIN_INSTANCES = <num> ]
[ MAX_INSTANCES = <num> ]
[ QUERY_WAREHOUSE = <warehouse_name> ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ COMMENT = '{string_literal}']
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 stage
Gibt den Snowflake-internen Stagingbereich an, in dem die Spezifikationsdatei gespeichert ist, z. B.
@tutorial_stage
.SPECIFICATION_FILE = 'yaml_file_stage_path'
Gibt den Pfad zur Dienstspezifikationsdatei im Stagingbereich an, z. B.
'some-dir/echo_spec.yaml'
.FROM SPECIFICATION specification_text
Gibt die Dienstspezifikation an. Sie können doppelte Dollarzeichen (
$$
) verwenden, um den Anfang und das Ende der Spezifikationszeichenfolge abzugrenzen.
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 Ausgehender Netzwerk-Datenverkehr.
AUTO_RESUME = { TRUE | FALSE }
Gibt an, ob ein Dienst automatisch fortgesetzt werden soll, wenn eine Dienstfunktion oder eingehender Datenverkehr an ihn übermittelt wird.
Wenn AUTO_RESUME den Wert FALSE hat, müssen Sie den Dienst explizit fortsetzen (mit ALTER SERVICE … RESUME).
Wenn AUTO_RESUME den Wert TRUE hat, setzt Snowflake den unterbrochenen Dienst fort, wenn eine Dienstfunktion aufgerufen wird oder wenn eine Anforderung empfangen wird (eingehender Datenverkehr).
MIN_INSTANCES = num
Gibt die minimale Anzahl von auszuführenden Dienstinstanzen an.
Standard: 1
MAX_INSTANCES = num
Gibt die maximale Anzahl der auszuführenden Dienstinstanzen an.
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 dieses SQL-Befehls 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 Rolle des Diensteigentümers diese Berechtigung verliert, sind die öffentlichen Endpunkte nicht mehr zugänglich. |
Beachten Sie, dass für die Bearbeitung eines Objekts in einem Schema auch die Berechtigung USAGE für die übergeordnete Datenbank und das Schema erforderlich ist.
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¶
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