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:

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

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
Copy

Die folgende Tabelle beschreibt die Eigenschaften einer Computepool-Projektdefinition.

Eigenschaften der Streamlit-Projektdefinition

Eigenschaft

Definition

type

erforderlich, string

Muss service sein.

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:

  • Zeichenfolge Bezeichnertext

    identifier: my-service
    
    Copy

    Es werden sowohl Bezeichner ohne Anführungszeichen als auch Bezeichner mit Anführungszeichen unterstützt. Um Bezeichner in Anführungszeichen zu verwenden, fügen Sie die umgebenden Anführungszeichen in den YAML-Wert ein (zum Beispiel: ’”My Image Repository").

  • Objekt

    identifier:
      name: my-service
      schema: my-schema # optional
      database: my-db # optional
    
    Copy

    Bemerkung

    Ein Fehler tritt auf, wenn Sie ein schema oder eine database angeben und einen vollqualifizierten Namen in der name-Eigenschaft verwenden (z. B. mydb.schema1.my-app).

min_instances

optional, string

Minimale Anzahl von auszuführenden Dienstinstanzen.

Standard: 1

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: True

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:

  • src: Pfad zur Code-Quelldatei oder zu den Dateien

  • dest: Pfad zum Verzeichnis, in dem die Artefakte bereitgestellt werden.

    Zielpfade, die auf Verzeichnisse verweisen, müssen mit einem / enden. Das Ziel eines Glob-Musters, das nicht mit einem / endet, führt zu einem Fehler. Wird nichts angegeben, weist dest standardmäßig dieselbe Zeichenfolge wie src auf.

    Sie können auch eine Zeichenfolge für jedes Element anstelle von dict übergeben. In diesem Fall wird der Wert sowohl als src als auch als dest behandelt.

Wenn src nur auf eine Datei verweist (nicht auf einen Glob), kann dest auf einen Zielpfad <> oder einen Pfad/Namen <> verweisen.

Sie können auch eine Zeichenfolge für jedes Element anstelle von dict übergeben. In diesem Fall wird der Wert sowohl als src als auch als dest behandelt.

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:

  1. Ändern Sie Ihr aktuelles Verzeichnis in das Verzeichnis, das die Projektdefinitionsdatei enthält.

  2. Führen Sie einen snow spcs service deploy-Befehl ähnlich dem folgenden aus:

    snow spcs service deploy
    
    Copy
    +---------------------------------------------------------------------+
    | 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
Copy
+-------------------------------------------+
| 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
Copy
+-------------------------------------------+
| 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
Copy
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|        |        |        |        |        |        |        |        |        |        |        |         | 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
Copy
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|        |        |        |        |        |        |        |        |        |        |        |         | 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
Copy
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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
Copy
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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
Copy
+--------------+------+----------+-----------------+-----------------------------------------+
| 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
Copy
+------------------------------------------------------------------+
| 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
Copy
+-------------------------------------------+
| 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
Copy
+-------------------------------------------+
| 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"
Copy

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
Copy
+-------------------------------------------+
| key    | value                            |
|--------+----------------------------------|
| status | Statement executed successfully. |
+-------------------------------------------+