外部ボリュームの構成

外部ボリュームは名前付きのアカウントレベルのSnowflakeオブジェクトで、SnowflakeをIcebergテーブル用の外部クラウドストレージに接続するために使用します。外部ボリュームには、ストレージ場所のIDおよびアクセス管理(IAM)エンティティが格納されます。Snowflakeは IAM エンティティを使用して、テーブルデータ、Icebergメタデータ、およびテーブルスキーマ、パーティション、その他のメタデータを格納するマニフェストファイルにアクセスするために、ストレージにセキュアに接続します。

1つの外部ボリュームで1つまたは複数のIcebergテーブルをサポートできます。

Snowflakeで Apache Iceberg™ テーブルを作成する前に、外部ボリュームを作成する必要があります。

外部ボリュームを作成する

外部ボリュームを作成する手順は、クラウドストレージプロバイダーによって異なります。

手順については、以下のトピックをご参照ください。

各外部ボリュームは特定の アクティブなストレージの場所 に関連付けられており、1つの外部ボリュームで複数のIcebergテーブルをサポートできます。しかし、必要な外部ボリュームの数は、テーブルデータをどのように保存、整理、保護するかによって異なります。

Snowflake-Icebergテーブルの すべての データとメタデータを同じストレージ場所(たとえば、同じS3バケット)のサブディレクトリに格納したい場合は、単一の外部ボリュームを使用できます。Snowflakeが管理するテーブル用にこれらのディレクトリを設定するには、 データとメタデータのディレクトリ を参照してください。

あるいは、複数の外部ボリュームを作成し、さまざまなストレージ場所を異なる方法で保護することもできます。例えば、以下のような外部ボリュームを作成します。

  • 外部で管理されるIcebergテーブル用の読み取り専用外部ボリューム。

  • Snowflakeで管理されたテーブルの読み取り/書き込みアクセスが設定された外部ボリューム。

外部ボリュームの検証

外部ボリュームを検証して、構成した外部ボリュームを使用してSnowflakeがストレージプロバイダーに正常に認証できることを確認します。 SQL または Snowsight を使用して外部ボリュームを検証できます。

SQL を使用する

SQL を使用して外部ボリュームを検証するには、 SYSTEM$VERIFY_EXTERNAL_VOLUME 関数を呼び出します。

検証する外部ボリュームの名前を指定します。

SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('my_s3_external_volume');
Copy

Snowsight を使用する

Snowsight を使用して外部ボリュームを検証するには、次のステップに従います。

  1. Snowsight にサインインします。

  2. ナビゲーションメニューで Catalog » External data を選択します。

  3. External volumes タブを選択します。

  4. 接続を確認する外部ボリュームを選択します。

  5. ... » Verify connection を選択します。

アカウント、データベース、またはスキーマレベルでデフォルトの外部ボリュームを設定する

デフォルトとして 既存の外部ボリュームを設定する 、または作成時にデフォルトとして 新しい外部ボリュームを設定する ことができます。

既存の外部ボリュームをデフォルトとして設定する

既存の外部ボリュームをIcebergテーブルに使用するデフォルトとして設定するには、 EXTERNAL_VOLUME パラメーターを以下のレベルで設定します。

アカウント:

アカウント管理者は ALTER ACCOUNT コマンドを使用して、アカウントのパラメーターを設定できます。この値がアカウントに設定されている場合、そのアカウントで作成されたすべてのIcebergテーブルはデフォルトでこの外部ボリュームを読み取り、書き込みます。

オブジェクト:

ユーザーは適切な CREATE <オブジェクト> または ALTER <オブジェクト> コマンドを実行して、データベースまたはスキーマレベルで EXTERNAL_VOLUME パラメーター値を上書きできます。宣言の有効範囲が最も低いもの(スキーマ > データベース > アカウント)が使用されます。

適切な ALTER <object_type> コマンドを使用してオブジェクトを変更するために必要な最小権限に加えて、ロールには外部ボリュームに対して USAGE 権限が必要です。

注釈

  • EXTERNAL_VOLUME パラメーターの変更は、変更 に作成されたテーブルにのみ適用されます。既存のテーブルは、作成時に指定された外部ボリュームを引き続き使用します。

  • または、 Snowsight を使用して外部ボリュームを作成するときに、アカウント、データベース、またはスキーマレベルでデフォルトの外部ボリュームを設定することもできます。

次のステートメントは、 my_database_1 という名前のデータベース用に外部ボリューム(my_s3_vol)を設定します。

ALTER DATABASE my_database_1
  SET EXTERNAL_VOLUME = 'my_s3_vol';
Copy

データベースレベルで外部ボリュームを設定した後、外部ボリュームを指定せずにそのデータベースにIcebergテーブルを作成できます。次のステートメントは、カタログとしてSnowflakeを使用し、データベースに設定されたデフォルトの外部ボリューム(my_s3_vol)を使用するIcebergテーブルを my_database_1 に作成します。

CREATE ICEBERG TABLE iceberg_reviews_table (
  id STRING,
  product_name STRING,
  product_id STRING,
  reviewer_name STRING,
  review_date DATE,
  review STRING
)
CATALOG = 'SNOWFLAKE'
BASE_LOCATION = 'my/product_reviews/';
Copy

デフォルトとして新しい外部ボリュームを設定する

Icebergテーブルに使用するデフォルトとして新しい外部ボリュームを設定するには、 Snowsight で外部ボリュームを作成するときに、構成設定の Scope フィールドを使用して、アカウント、データベース、またはスキーマレベルで外部ボリュームをデフォルトとして設定します。

Snowsight で外部ボリュームを作成する方法については、次のセクションをご参照ください。

Snowsight を使用して外部ボリュームへ USAGE 権限を付与する

USAGE 権限は、外部ボリュームを参照し、外部ボリュームの詳細を表示する能力を付与します。詳細については、 外部ボリューム権限 をご参照ください。

Snowsightを使用して外部ボリュームに USAGE 権限を付与するには、次のステップに従います。

  1. Snowsight にサインインします。

  2. USAGE 権限を付与する外部ボリュームに対して OWNERSHIP 権限を持つロールに切り替えます。

    ロールの切り替えの手順については、 プライマリロールの変更 をご参照ください。OWNERSHIP 権限の詳細については、 外部ボリューム権限 をご参照ください。

  3. ナビゲーションメニューで Catalog » External data を選択します。

  4. External volumes タブを選択します。

  5. USAGE 権限を付与する外部ボリュームを選択します。

  6. + Privilege を選択します。

  7. Roles フィールドから、外部ボリュームに対する USAGE 権限を付与するロールを選択します。

  8. Privileges フィールドから、 USAGE を選択します。

  9. Grant privileges を選択します。

Snowsightを使用してストレージの場所を追加する

注釈

SQL を使用して外部ボリュームにストレージの場所を追加するには、 ALTER EXTERNAL VOLUME コマンドの ADD STORAGE_LOCATION パラメーターを使用します。

Snowsightを使用して外部ボリュームに名前付きストレージの場所を追加するには、以下の手順に従います。

  1. Snowsight にサインインします。

  2. ストレージの場所を追加する外部ボリュームに対する OWNERSHIP 権限を持つロールに切り替えます。

    手順については、 プライマリロールの変更 をご参照ください。

  3. ナビゲーションメニューで Catalog » External data を選択します。

  4. External volumes タブを選択します。

  5. ストレージの場所を追加する外部ボリュームを選択します。

  6. ... » Add storage location を選択します

  7. クラウドストレージプロバイダーを選択し、追加するストレージの場所の構成を指定します。

    1. Amazon S3 タブを選択します。

    2. 追加するストレージの場所の構成を指定します。

      フィールド

      説明

      Location name

      追加のストレージの場所の名前を入力します。

      Region type

      データファイルを保存するクラウドストレージプロバイダーを指定します。

      • Standard (default):中国国外のパブリック AWS リージョンにあるS3ストレージ。

      • Government (GovCloud):AWS 政府リージョン のS3ストレージ。

      S3 role ARN

      データファイルを含むS3バケットに対する権限を付与する ARN IDおよびアクセス管理(AWS)ロールの大文字と小文字を区別するAmazonリソースネーム(IAM)を指定します。

      この値は、 IAM ロールを作成した ときに記録しました。

      Encryption (optional)

      使用される暗号化タイプを指定します。可能な値は次のとおりです。

      Connectivity

      セキュリティ体制を強化するためにアウトバウンドプライベート接続を使用するかどうかを指定します。このパラメーターの使用に関する情報については、 Amazon Web Services の外部ボリュームへのプライベート接続 をご参照ください。可能な値は次のとおりです。

      • Public (default):公共のインターネットを使用します。

      • Private (AWS PrivateLink):アウトバウンドプライベート接続を使用します。

      Storage base URL

      追加のストレージの場所のベース URL を指定します。

  8. Add storage location を選択します。