コンテナを使用したアプリにコンピューティングプールを追加する

このトピックでは、 Snowflake Native Apps with Snowpark Container Services でコンピューティングプールを使用する方法について説明します。

コンテナを含むアプリのコンピューティングプールについて

コンピューティングプール は、SnowflakeがSnowpark Container Servicesを実行する1つ以上の仮想マシン(VM)ノードのコレクションです。コンテナを使用したアプリは、コンシューマーアカウントのコンピューティングプールを使用して、アプリに必要なコンテナイメージを管理します。

アプリは複数のコンピューティングプールを作成でき、各コンピューティングプールはアプリ専用です。アプリが使用するコンピューティングプールは他の目的には使用できません。

アプリ内のコンテナは、異なるコンピューティングプール内にある場合でも、相互に直接アクセスできます。

ただし、異なるコンピューティングプールを使用すると、プロバイダーはサービスの種類を分離できます。たとえば、プロバイダーはフロントエンドサービスとバックエンドサービスを分離できます。

コンピューティングプールはアカウントレベルのオブジェクトであるため、各コンピューティングプールの名前はコンシューマーアカウント内で一意である必要があります。

アプリのコンピューティングプールを作成する

コンテナを使用したアプリのコンピューティングプールを作成するには、次の2つの方法があります。

  • アプリはインストール中に必要なコンピューティングプールを作成します。これには、コンシューマーがコンピューティングプールの CREATE COMPUTE POOL 権限をアプリに付与する必要があります。プロバイダーは、 Snowsight を使用してこれらの権限を要求するようにアプリを構成できます。

    詳細については、 CREATE COMPUTE POOL 権限を要求するようにアプリを構成する をご参照ください。

  • コンシューマーは、アプリに必要なコンピューティングプールを手動で作成します。コンシューマーは CREATE COMPUTE POOL を実行してコンピューティングプールを作成し、コンピューティングプールに対する CREATE COMPUTE POOL 権限をアプリに手動で付与する必要があります。

CREATE COMPUTE POOL 権限を要求するようにアプリを構成する

プロバイダーは、 CREATE COMPUTE POOL 権限を要求するようにアプリを構成できます。アプリをインストールまたはアップグレードするときに、セットアップスクリプトからコンピューティングプールを作成することもできます。

注釈

アプリは、コンシューマーアカウントに最大5つのコンピューティングプールを作成できます。アプリで追加のコンピューティングプールを作成する必要がある場合は、Snowflakeサポートにお問い合わせください。

CREATE COMPUTE POOL 権限をリクエストする

アプリはコンシューマーに CREATE COMPUTE POOL 権限を要求できます。この権限により、アプリはコンシューマーアカウントにコンピューティングプールを作成できます。コンシューマーからグローバル権限を要求する方法に関する一般的な情報については、 コンシューマーからグローバル権限をリクエストする をご参照ください。

コンシューマーに CREATE COMPUTE POOL 権限を要求するには、次の例に示すように、 manifest.yml ファイルに CREATE COMPUTE POOL 権限を追加します。

...
privileges:
 - CREATE COMPUTE POOL
   description: "Enable application to create one to five compute pools"
 ...
Copy

コンテナを使用したアプリの manifest.yml ファイルの作成については、 コンテナでアプリのマニフェストファイルを作成する をご参照ください。

注釈

コンテナアプリ内の CREATE COMPUTE POOL 権限要求の動作は、他の権限要求とは異なります。この権限を manifest.yml ファイルに追加すると、 Snowsight に、コンシューマーが必要な権限を付与するためのインターフェイスが表示されます。

CREATE COMPUTE POOL コマンドをセットアップスクリプトに追加する

コンシューマーアカウントにコンピューティングプールを作成するには、アプリのセットアップスクリプトに CREATE COMPUTE POOL コマンドを追加します。

次の例は、セットアップスクリプトのストアドプロシージャ内にコンピューティングプールを作成する方法を示しています。

CREATE COMPUTE POOL IF NOT EXISTS app_compute_pool
  MIN_NODES = 1
  MAX_NODES = 1
  INSTANCE_FAMILY = standard_1
  AUTO_RESUME = true;
Copy

注釈

アプリ内でコンピューティングプールを作成する場合、プロバイダーはコンピューティングプールを作成する前に、プロバイダーが CREATE COMPUTE POOL 権限を付与していることを確認する必要があります。

アプリが作成するコンピューティングプールは、そのアプリによって独占的に所有されます。他のアプリケーションやコンシューマーが直接使用することはできません。

一般的に、コンシューマーアカウントのユーザーは、次の状況でのみ、アプリによって作成されたコンピューティングプールを表示できます。

  • ユーザーには MANAGE GRANTS 権限が付与されています。

  • アプリは、アプリケーションロールを使用してコンピューティングプールへのアクセスを許可します。

ただし、 ACCOUNTADMIN ロールを持つユーザーは、コンピューティングプールがアプリによって所有されている場合でも、コンピューティングプールを一時停止、停止、再開できます。

セットアップスクリプト内でコンピューティングプールのプレフィックスを付ける

コンピューティングプールはアカウントレベルのオブジェクトであるため、コンピューティングプールの名前はコンシューマーアカウント内で一意である必要があります。次の例は、アプリケーション名をコンピューティングプール名のプレフィックスとして使用する方法を示しています。

LET POOL_NAME := (select current_database()) || '_app_pool';
CREATE COMPUTE POOL IF NOT EXISTS identifier(:pool_name)
  MIN_NODES = 1
  MAX_NODES = 1
  INSTANCE_FAMILY = STANDARD_2;
Copy

コンテナを使用したアプリでコンピューティングプールを使用するためのベストプラクティス

プロバイダーは、コンシューマーアカウントでコンピューティングプールを作成するときに、次の点を考慮する必要があります。

  • コンピューティングプールにはコストがかかります。適切な量のリソースを消費するには、 min_nodesmax_nodesinstance_family プロパティの値を設定することが重要です。プロバイダーは、コンピューティングプールが非アクティブなときに自動的に一時停止するように AUTO_SUSPEND_SECS プロパティも設定する必要があります。

    詳細については、 CREATE COMPUTE POOL をご参照ください。

  • コンピューティングプールはアカウントレベルのオブジェクトであるため、コンピューティングプールの名前はコンシューマーアカウント内で一意である必要があります。コンピューティングプール名のプレフィックスとしてアプリケーション名を使用することを検討してください。