Verwalten von Diensten¶
Snowpark Container Services ermöglicht Ihnen die einfache Bereitstellung, Verwaltung und Skalierung von containerisierten Anwendungen. Nachdem Sie Ihr Anwendungsimage in ein Repository in Ihrem Konto hochgeladen haben, können Sie Ihre Anwendungscontainer als Dienst oder Job ausführen. Unter diesem Thema wird die Verwendung von Diensten erläutert.
Ein Dienst hat eine lange Ausführungszeit und endet, wie ein Webservice, nicht von selbst. Snowflake verwaltet in Ausführung befindliche Dienste. Wenn z. B. ein Dienstcontainer aus irgendeinem Grund vorhanden ist, startet Snowflake diesen Container neu, damit der Dienst ohne Unterbrechung ausgeführt wird. Wenn Ihr Dienst mehr Ressourcen benötigt, z. B. mehr Rechenleistung, stellt Snowflake zusätzliche Knoten im Computepool bereit.
Weitere Informationen zur Verwendung von Containerdiensten finden Sie unter Snowpark Container Services: Verwenden von Diensten.
Unter diesem Thema erfahren Sie, wie Sie die folgenden Aufgaben mit Diensten durchführen können:
Erstellen und Bereitstellen eines Dienstes aus einer Projektdefinition
Eigenschaften oder Parameter eines Dienstes einstellen und aufheben
Für gängige Operationen, wie z. B. Auflisten oder Löschen, verwendet Snowflake CLI die Befehle snow object
wie unter Verwalten von Snowflake-Objekten beschrieben.
Snowpark Container Services-Dienst erstellen¶
Für einen Snowpark-Containerdienst benötigen Sie Folgendes:
Ein Computepool: Snowflake führt Ihren Dienst in dem angegebenen Computepool aus.
Eine Dienstspezifikationsdatei: Diese Spezifikation liefert Snowflake die Informationen, die zur Konfiguration und Ausführung Ihres Dienstes erforderlich sind.
Um einen Dienst zu erstellen, geben Sie einen snow spcs service create-Befehl ähnlich dem folgenden ein:
snow spcs service create "job_1" --compute-pool "pool_1" --spec-path "/some-dir/spec_file.yaml"
Weitere Informationen dazu finden Sie unter Verwalten von Snowflake-Objekten.
Erstellen und Bereitstellen eines Dienstes aus einer Projektdefinition¶
Sie können einen Dienst aus einer snowflake.yml
-Projektdefinitionsdatei erstellen und dann den Befehl snow spcs service deploy
ausführen.
Im Folgenden wird eine Beispiel für eine snowflake.yml
-Projektdefinitionsdatei gezeigt:
definition_version: 2
entities:
my_service:
type: service
identifier: my_service
stage: my_stage
compute_pool: my_compute_pool
spec_file: spec.yml
min_instances: 1
max_instances: 2
query_warehouse: my_warehouse
auto_resume: true
external_access_integrations:
- my_external_access
secrets:
cred: my_cred_name
artifacts:
- spec.yml
comment: "My service"
tags:
- name: test_tag
value: test_value
Die folgende Tabelle beschreibt die Eigenschaften einer Computepool-Projektdefinition.
Eigenschaft |
Definition |
---|---|
type erforderlich, string |
Muss |
stage erforderlich, string |
Stagingbereich, in dem sich die Dienstspezifikationsdatei befindet. |
computepool erforderlich, string |
Computepool, auf dem der Dienst ausgeführt wird. |
spec_file erforderlich, string |
Pfad zur Dienstspezifikationsdatei im Stagingbereich. |
Bezeichner optional, string |
Snowflake-Bezeichner für die Entität. Der Wert kann die folgenden Formen annehmen:
|
min_instances optional, string |
Minimale Anzahl von auszuführenden Dienstinstanzen. Standard: |
max_instances optional, string |
Maximale Anzahl von auszuführenden Dienstinstanzen. |
query_warehouse optional, string |
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. |
auto_resume optional, string |
Ob ein Dienst automatisch fortgesetzt werden soll, wenn eine Dienstfunktion oder eingehender Datenverkehr an ihn übermittelt wird. Standard: |
external_access_integrations optional, string sequence |
Namen der Integrationen für externen Zugriff, die für diese Entität für den Zugriff auf externe Netzwerke benötigt werden. |
secrets optional, dictionary |
Namen und Werte der Geheimnisvariablen, damit Sie die Variablen verwenden können, um auf die Geheimnisse zu verweisen. |
Artefakte optional, string sequence |
Liste der Quelle/Ziel-Dateipaare, die dem Bereitstellungsstamm hinzugefügt werden sollen. Sie können die folgenden Eigenschaften des Artefakts verwenden:
Wenn Sie können auch eine Zeichenfolge für jedes Element anstelle von |
comment optional, string |
Kommentare, die mit dem Computepool verknüpft werden sollen. |
tags optional, Tag-Sequenz |
Tag-Namen und Werte für den Computepool. Weitere Informationen dazu finden Sie unter Tag-Kontingent für Objekte |
Um einen Dienst zu erstellen und bereitzustellen, gehen Sie wie folgt vor:
Ändern Sie Ihr aktuelles Verzeichnis in das Verzeichnis, das die Projektdefinitionsdatei enthält.
Führen Sie einen
snow spcs service deploy
-Befehl ähnlich dem folgenden aus:snow spcs service deploy
+---------------------------------------------------------------------+ | key | value | |--------+------------------------------------------------------------| | status | Service MY_SERVICE successfully created. | +---------------------------------------------------------------------+
Einen Dienst anhalten und fortsetzen¶
Um einen benannten Dienst anzuhalten, geben Sie einen snow spcs service suspend-Befehl ähnlich dem folgenden ein:
snow spcs service suspend echo_service
+-------------------------------------------+
| key | value |
|--------+----------------------------------|
| status | Statement executed successfully. |
+-------------------------------------------+
Um einen angehaltenen Dienst fortzusetzen, geben Sie einen snow spcs service resume-Befehl ähnlich dem folgenden ein:
snow spcs service resume echo_service
+-------------------------------------------+
| key | value |
|--------+----------------------------------|
| status | Statement executed successfully. |
+-------------------------------------------+
Statusinformationen über einen Dienst abrufen¶
Bemerkung
Die aktuelle Rolle muss über die Berechtigung MONITOR für den Dienst verfügen, um dessen Status abrufen zu können.
Alle Dienste auflisten¶
Der Befehl snow spcs service list gibt eine Übersicht über alle Dienste zurück, einschließlich des Laufzeitstatus der Dienste, wie PENDING oder RUNNING, und des Upgrade-Status. Um den Status aller Dienste abzurufen, geben Sie einen Befehl ähnlich dem Folgenden ein:
snow spcs service list
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| | | | | | | | | | | | | extern | | | | | | | | | | | |
| | | | | | | | | | | | | al_acc | | | | | | | | | | managin | managi |
| | | databa | | | | | curren | target | min_in | max_in | | ess_in | | | | | owner_r | query_ | | | | g_objec | ng_obj |
| | | se_nam | schema | | comput | dns_na | t_inst | _insta | stance | stance | auto_re | tegrat | created | update | resumed | commen | ole_typ | wareho | | spec_di | is_upg | t_domai | ect_na |
| name | status | e | _name | owner | e_pool | me | ances | nces | s | s | sume | ions | _on | d_on | _on | t | e | use | is_job | gest | rading | n | me |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+--------+---------+--------+---------+--------+---------+--------+--------+---------+--------+---------+--------|
| ECHO_S | RUNNIN | TEST00 | TEST_S | SYSADM | TUTORI | echo-s | 1 | 1 | 1 | 1 | true | None | 2024-10 | 2024-1 | None | This | ROLE | COMPUT | false | 52e62d1 | false | None | None |
| ERVICE | G | _DB | CHEMA | IN | AL_COM | ervice | | | | | | | -16 | 0-16 | | is a | | E_WH | | f19c720 | | | |
| | | | | | PUTE_P | .imhd. | | | | | | | 15:09:3 | 15:09: | | test | | | | 6b5f4ef | | | |
| | | | | | OOL | svc.sp | | | | | | | 0.49300 | 31.905 | | servic | | | | c069557 | | | |
| | | | | | | cs.int | | | | | | | 0-07:00 | 000-07 | | e | | | | 8b6c2b3 | | | |
| | | | | | | ernal | | | | | | | | :00 | | | | | | 806ad76 | | | |
| | | | | | | | | | | | | | | | | | | | | 67d78cc | | | |
| | | | | | | | | | | | | | | | | | | | | ce8b6ed | | | |
| | | | | | | | | | | | | | | | | | | | | 6501a8a | | | |
| | | | | | | | | | | | | | | | | | | | | 3 | | | |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Den Status eines benannten Dienstes abfragen¶
Um den Status eines einzelnen Dienstes abzurufen, geben Sie einen snow spcs service describe-Befehl ähnlich dem folgenden ein:
snow spcs service describe echo_service
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| | | | | | | | | | | | | extern | | | | | | | | | | | |
| | | | | | | | | | | | | al_acc | | | | | | | | | | managin | managi |
| | | databa | | | | | curren | target | min_in | max_in | | ess_in | | | | | owner_r | query_ | | | | g_objec | ng_obj |
| | | se_nam | schema | | comput | dns_na | t_inst | _insta | stance | stance | auto_re | tegrat | created | update | resumed | commen | ole_typ | wareho | | spec_di | is_upg | t_domai | ect_na |
| name | status | e | _name | owner | e_pool | me | ances | nces | s | s | sume | ions | _on | d_on | _on | t | e | use | is_job | gest | rading | n | me |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+--------+---------+--------+---------+--------+---------+--------+--------+---------+--------+---------+--------|
| ECHO_S | RUNNIN | TEST00 | TEST_S | SYSADM | TUTORI | echo-s | 1 | 1 | 1 | 1 | true | None | 2024-10 | 2024-1 | None | This | ROLE | COMPUT | false | 52e62d1 | false | None | None |
| ERVICE | G | _DB | CHEMA | IN | AL_COM | ervice | | | | | | | -16 | 0-16 | | is a | | E_WH | | f19c720 | | | |
| | | | | | PUTE_P | .imhd. | | | | | | | 15:09:3 | 15:09: | | test | | | | 6b5f4ef | | | |
| | | | | | OOL | svc.sp | | | | | | | 0.49300 | 31.905 | | servic | | | | c069557 | | | |
| | | | | | | cs.int | | | | | | | 0-07:00 | 000-07 | | e | | | | 8b6c2b3 | | | |
| | | | | | | ernal | | | | | | | | :00 | | | | | | 806ad76 | | | |
| | | | | | | | | | | | | | | | | | | | | 67d78cc | | | |
| | | | | | | | | | | | | | | | | | | | | ce8b6ed | | | |
| | | | | | | | | | | | | | | | | | | | | 6501a8a | | | |
| | | | | | | | | | | | | | | | | | | | | 3 | | | |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Instanzen und Containern auflisten¶
Sie können die Instanzen und Container des Services mit den Befehlen snow spcs service list-instances
bzw. snow spcs service list-containers
auflisten.
Um die Liste der Instanzen im Dienst echo_service
abzurufen, geben Sie den folgenden snow spcs service list-instances-Befehl ein:
snow spcs service list-instances echo_service
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| database_name | schema_name | service_name | instance_id | status | spec_digest | creation_time | start_time |
|---------------+-------------+--------------+-------------+--------+------------------------------------------------------------------+----------------------+----------------------|
| TEST00_DB | TEST_SCHEMA | ECHO_SERVICE | 0 | READY | 336c065739dd2b96e770f01804affdc7810e6df68a23b23052d851627abfbdf9 | 2024-10-10T06:06:30Z | 2024-10-10T06:06:30Z |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Um die Liste der Container im echo_service
-Dienst abzurufen, geben Sie den folgenden snow spcs service list-containers-Befehl ein:
snow spcs service list-containers echo_service
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| database_name | schema_name | service_name | instance_id | container_name | status | message | image_name | image_digest | restart_count | start_time |
|---------------+-------------+--------------+-------------+----------------+--------+---------+-------------------------------------------+-------------------------------------------+---------------+----------------------|
| TEST00_DB | TEST_SCHEMA | ECHO_SERVICE | 0 | main | READY | Running | org-test-account-00.registry.registry.sno | sha256:06c3d54edc24925abe398eda70d37eb6b8 | 0 | 2024-10-16T22:09:35Z |
| | | | | | | | wflakecomputing.com/test00_db/test_schema | 7b1c4dd6211317592764e1e7d94498 | | |
| | | | | | | | /test00_repo/echo_service:latest | | | |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Endpunkte in einem Dienst auflisten¶
Um die Endpunkte eines benannten Dienstes aufzulisten, geben Sie einen snow spcs service list-endpoints-Befehl ähnlich dem folgenden ein:
snow spcs service list-endpoints echo_service
+--------------+------+----------+-----------------+-----------------------------------------+
| name | port | protocol | ingress_enabled | ingress_url |
|--------------+------+----------+-----------------+-----------------------------------------|
| echoendpoint | 8000 | TCP | true | org-id-acct-id.snowflakecomputing.app |
+--------------+------+----------+-----------------+-----------------------------------------+
Diensterollen, die mit einem Dienst verbunden sind, auflisten¶
Sie können den Zugriff auf einzelne Endpunkte, die von einem Dienst bereitgestellt werden, verwalten, indem Sie Dienstrollen und Berechtigungen in der Dienstspezifikation definieren. Weitere Informationen über die Verwendung von Dienstrollen finden Sie unter GRANT SERVICE ROLE.
Um eine Liste der Dienstrollen zu erhalten, die für einen Dienst erstellt wurden, verwenden Sie den Befehl snow spcs service list-roles, wie gezeigt:
snow spcs service list-roles my_service
+------------------------------------------------------------------+
| created_on | name | comment |
|----------------------------------+---------------------+---------|
| 2024-10-09 16:48:52.980000-07:00 | ALL_ENDPOINTS_USAGE | None |
+------------------------------------------------------------------+
Eigenschaften oder Parameter eines Dienstes einstellen und aufheben¶
Bemerkung
Die aktuelle Rolle muss über die Berechtigung OPERATE für den Dienst verfügen, um Eigenschaften festzulegen.
Um eine Eigenschaft oder einen Parameter eines Dienstes festzulegen, geben Sie einen snow spcs service set-Befehl ähnlich dem folgenden ein:
snow spcs service set echo_service --min-instances 2 --max-instances 4
+-------------------------------------------+
| key | value |
|--------+----------------------------------|
| status | Statement executed successfully. |
+-------------------------------------------+
Um eine Eigenschaft oder einen Parameter eines Dienstes auf seinen Standardwert zurückzusetzen, geben Sie einen Befehl ähnlich dem folgenden ein:
snow spcs compute-pool unset tutorial_compute_pool --auto-resume
+-------------------------------------------+
| key | value |
|--------+----------------------------------|
| status | Statement executed successfully. |
+-------------------------------------------+
Protokolle für einen benannten Dienst anzeigen¶
Bemerkung
Die aktuelle Rolle muss über die Berechtigung MONITOR für den Dienst verfügen, um Protokolle anzuzeigen.
Um lokale Protokolle für einen benannten Dienst anzuzeigen, geben Sie einen snow spcs service logs-Befehl ähnlich dem folgenden ein:
snow spcs service logs "service_1" --container-name "container_1" --instance-id "0"
Upgrade eines benannten Dienstes¶
Bemerkung
Die aktuelle Rolle muss über die Berechtigung OPERATE für den Dienst verfügen, um ihn aktualisieren zu können.
Um einen benannten Dienst zu aktualisieren, geben Sie einen snow spcs service upgrade-Befehl ähnlich dem folgenden ein:
snow spcs service upgrade echo_service --spec-path spec.yml
+-------------------------------------------+
| key | value |
|--------+----------------------------------|
| status | Statement executed successfully. |
+-------------------------------------------+