外部ボリュームの構成¶
外部ボリュームは名前付きのアカウントレベルのSnowflakeオブジェクトで、SnowflakeをIcebergテーブル用の外部クラウドストレージに接続するために使用します。外部ボリュームには、ストレージ場所のIDおよびアクセス管理(IAM)エンティティが格納されます。Snowflakeは IAM エンティティを使用して、テーブルデータ、Icebergメタデータ、およびテーブルスキーマ、パーティション、その他のメタデータを格納するマニフェストファイルにアクセスするために、ストレージにセキュアに接続します。
1つの外部ボリュームで1つまたは複数のIcebergテーブルをサポートできます。
Snowflakeで Apache Iceberg™ テーブルを作成する前に、外部ボリュームを作成する必要があります。
外部ボリュームを作成する¶
外部ボリュームを作成する手順は、クラウドストレージプロバイダーによって異なります。
手順については、以下のトピックをご参照ください。
各外部ボリュームは特定の アクティブなストレージの場所 に関連付けられており、1つの外部ボリュームで複数のIcebergテーブルをサポートできます。しかし、必要な外部ボリュームの数は、テーブルデータをどのように保存、整理、保護するかによって異なります。
Snowflake-Icebergテーブルの すべての データとメタデータを同じストレージ場所(たとえば、同じS3バケット)のサブディレクトリに格納したい場合は、単一の外部ボリュームを使用できます。Snowflakeが管理するテーブル用にこれらのディレクトリを設定するには、 データとメタデータのディレクトリ を参照してください。
あるいは、複数の外部ボリュームを作成し、さまざまなストレージ場所を異なる方法で保護することもできます。例えば、以下のような外部ボリュームを作成します。
外部で管理されるIcebergテーブル用の読み取り専用外部ボリューム。
Snowflakeで管理されたテーブルの読み取り/書き込みアクセスが設定された外部ボリューム。
外部ボリュームの検証¶
Verify an external volume to check that Snowflake can successfully authenticate to your storage provider using an external volume that you've configured. You can verify an external volume by using SQL or Snowsight.
SQL を使用する¶
To verify an external volume by using SQL, call the SYSTEM$VERIFY_EXTERNAL_VOLUME function.
検証する外部ボリュームの名前を指定します。
SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('my_s3_external_volume');
Snowsight を使用する¶
Snowsight を使用して外部ボリュームを検証するには、次のステップに従います。
Snowsight にサインインします。
ナビゲーションメニューで Catalog » External data を選択します。
Select the External volumes tab.
Select the external volume whose connection you want to verify.
... » Verify connection を選択します。
アカウント、データベース、またはスキーマレベルでデフォルトの外部ボリュームを設定する¶
デフォルトとして 既存の外部ボリュームを設定する 、または作成時にデフォルトとして 新しい外部ボリュームを設定する ことができます。
既存の外部ボリュームをデフォルトとして設定する¶
既存の外部ボリュームをIcebergテーブルに使用するデフォルトとして設定するには、 EXTERNAL_VOLUME パラメーターを以下のレベルで設定します。
- アカウント:
アカウント管理者は ALTER ACCOUNT コマンドを使用して、アカウントのパラメーターを設定できます。この値がアカウントに設定されている場合、そのアカウントで作成されたすべてのIcebergテーブルはデフォルトでこの外部ボリュームを読み取り、書き込みます。
- オブジェクト:
ユーザーは適切な CREATE <オブジェクト> または ALTER <オブジェクト> コマンドを実行して、データベースまたはスキーマレベルで EXTERNAL_VOLUME パラメーター値を上書きできます。宣言の有効範囲が最も低いもの(スキーマ > データベース > アカウント)が使用されます。
適切な ALTER <object_type> コマンドを使用してオブジェクトを変更するために必要な最小権限に加えて、ロールには外部ボリュームに対して USAGE 権限が必要です。
注釈
EXTERNAL_VOLUME パラメーターの変更は、変更 後 に作成されたテーブルにのみ適用されます。既存のテーブルは、作成時に指定された外部ボリュームを引き続き使用します。
Alternatively, you can set a default external volume at the account, database, or schema level when you create the external volume by using Snowsight.
例¶
次のステートメントは、 my_database_1 という名前のデータベース用に外部ボリューム(my_s3_vol)を設定します。
ALTER DATABASE my_database_1
SET EXTERNAL_VOLUME = 'my_s3_vol';
データベースレベルで外部ボリュームを設定した後、外部ボリュームを指定せずにそのデータベースに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/';
Set a new external volume as the default¶
Icebergテーブルに使用するデフォルトとして新しい外部ボリュームを設定するには、 Snowsight で外部ボリュームを作成するときに、構成設定の Scope フィールドを使用して、アカウント、データベース、またはスキーマレベルで外部ボリュームをデフォルトとして設定します。
Snowsight で外部ボリュームを作成する方法については、次のセクションをご参照ください。
Snowsight を使用して外部ボリュームへ USAGE 権限を付与する¶
USAGE 権限は、外部ボリュームを参照し、外部ボリュームの詳細を表示する能力を付与します。詳細については、 外部ボリューム権限 をご参照ください。
Snowsightを使用して外部ボリュームに USAGE 権限を付与するには、次のステップに従います。
Snowsight にサインインします。
USAGE 権限を付与する外部ボリュームに対して OWNERSHIP 権限を持つロールに切り替えます。
ロールの切り替えの手順については、 プライマリロールの変更 をご参照ください。OWNERSHIP 権限の詳細については、 外部ボリューム権限 をご参照ください。
ナビゲーションメニューで Catalog » External data を選択します。
Select the External volumes tab.
Select the external volume that you want to grant USAGE privileges on.
+ Privilege を選択します。
Roles フィールドから、外部ボリュームに対する USAGE 権限を付与するロールを選択します。
Privileges フィールドから、 USAGE を選択します。
Grant privileges を選択します。
Snowsightを使用してストレージの場所を追加する¶
注釈
SQL を使用して外部ボリュームにストレージの場所を追加するには、 ALTER EXTERNAL VOLUME コマンドの ADD STORAGE_LOCATION パラメーターを使用します。
Snowsightを使用して外部ボリュームに名前付きストレージの場所を追加するには、以下の手順に従います。
Snowsight にサインインします。
ストレージの場所を追加する外部ボリュームに対する OWNERSHIP 権限を持つロールに切り替えます。
手順については、 プライマリロールの変更 をご参照ください。
ナビゲーションメニューで Catalog » External data を選択します。
Select the External volumes tab.
Select the external volume that you want to add a storage location to.
... » Add storage location を選択します
クラウドストレージプロバイダーを選択し、追加するストレージの場所の構成を指定します。
Amazon S3 タブを選択します。
追加するストレージの場所の構成を指定します。
フィールド
説明
Location name
追加のストレージの場所の名前を入力します。
Region type
データファイルを保存するクラウドストレージプロバイダーを指定します。
Standard (default):中国国外のパブリック AWS リージョンにあるS3ストレージ。
Government (GovCloud):AWS 政府リージョン のS3ストレージ。
S3 role ARN
データファイルを含むS3バケットに対する権限を付与する ARN IDおよびアクセス管理(AWS)ロールの大文字と小文字を区別するAmazonリソースネーム(IAM)を指定します。
この値は、 IAM ロールを作成した ときに記録しました。
Encryption (optional)
使用される暗号化タイプを指定します。可能な値は次のとおりです。
None (default):暗号化なし。
SSE-S3:S3が管理する暗号化キーを使ったサーバー側の暗号化。詳細については、 Amazon S3が管理する暗号化キー(SSE-S3)を使用したサーバー側暗号化の使用 をご覧ください。
SSE-KMS (enter key):KMS に格納されたキーを使用したサーバー側の暗号化。詳細については、 AWS キー管理サービス(SSE-KMS)を使用したサーバー側暗号化の使用 をご覧ください。
Connectivity
セキュリティ体制を強化するためにアウトバウンドプライベート接続を使用するかどうかを指定します。このパラメーターの使用に関する情報については、 Amazon Web Services の外部ボリュームへのプライベート接続 をご参照ください。可能な値は次のとおりです。
Public (default):公共のインターネットを使用します。
Private (AWS PrivateLink):アウトバウンドプライベート接続を使用します。
Storage base URL
追加のストレージの場所のベース URL を指定します。
Microsoft Azure タブを選択します。
追加するストレージの場所の構成を指定します。
フィールド
説明
Location name
追加のストレージの場所の名前を入力します。
Storage base URL
追加のストレージの場所のベース URL を指定します。
Azure tenant ID
Azureテナント ID を指定します。
Azureテナント ID を見つけるには、Microsoft Entraドキュメント内の Microsoft Entraテナント ID を見つける方法 をご参照ください。
Use PrivateLink endpoint
セキュリティ体制を強化するためにアウトバウンドプライベート接続を使用するかどうかを指定します。アウトバウンドプライベート接続の使用に関する情報については、 Microsoft Azure の外部ボリュームへのプライベート接続 をご参照ください。
Google Cloud タブを選択します。
追加するストレージの場所の構成を指定します。
フィールド
説明
Location name
追加のストレージの場所の名前を入力します。
Storage base URL
追加のストレージの場所のベース URL を指定します。
Encryption (optional)
使用される暗号化タイプを指定します。可能な値は次のとおりです。
None (default):暗号化なし。
SSE-KMS (enter key):KMS に格納されたキーを使用したサーバー側の暗号化。詳細については、 顧客管理暗号化キー をご覧ください。
S3 Compatible タブを選択します。
追加するストレージの場所の構成を指定します。
フィールド
説明
Location name
追加のストレージの場所の名前を入力します。
Storage base URL
クラウドストレージの場所のベース URL を指定します。
AWS key ID
S3互換ストレージの場所への接続とアクセスのための AWS キー ID を指定します。
AWS secret key
S3互換ストレージの場所への接続とアクセスのための AWS シークレットキーを指定します。
Storage endpoint
S3互換の API エンドポイントを指す完全修飾ドメインを指定します。
注釈
ストレージエンドポイントは、バケット名を含んではいけません。たとえば、
my_bucket.example.comの代わりにexample.comを指定します。
Add storage location を選択します。