S3互換ストレージ用の外部ボリュームの構成¶
外部管理 または Snowflake 管理 Apache Iceberg™ テーブルで、S3 互換ストレージにデータとメタデータがある場合は、 Amazon S3 互換ストレージ の場所に関連付けられた外部ボリュームを構成できます。
S3互換ストレージの外部ボリュームを作成するには、 SQL を使用 するか、 Snowsightを使用 できます。
前提条件¶
Iceberg テーブルに S3 互換ストレージを使用するには、Snowflake に S3 互換 API エンドポイントが必要です。詳細については、 S3互換ストレージの要件 をご参照ください。
Create an external volume for S3-compatible storage by using SQL¶
S3互換のストレージ場所を指定する外部ボリュームを作成します。CREATE EXTERNAL VOLUME コマンドの S3 互換パラメーターに関する情報は、 コマンド構文 をご参照ください。
CREATE OR REPLACE EXTERNAL VOLUME ext_vol_s3_compat
STORAGE_LOCATIONS = (
(
NAME = 'my_s3_compat_storage_location'
STORAGE_PROVIDER = 'S3COMPAT'
STORAGE_BASE_URL = 's3compat://mybucket/unload/mys3compatdata'
CREDENTIALS = (
AWS_KEY_ID = '1a2b3c...'
AWS_SECRET_KEY = '4x5y6z...'
)
STORAGE_ENDPOINT = 'mystorage.com'
)
);
Create an external volume for S3-compatible storage by using Snowsight¶
Snowsight にサインインします。
左下隅にある自身の名前 » Switch role を選択し、次に ACCOUNTADMIN または CREATE EXTERNAL VOLUME 権限を持つロールを選択します。
詳細については、 プライマリロールの変更 をご参照ください。
ナビゲーションメニューで Catalog » External data を選択します。
External volumes タブを選択します。
+ Create を選択します。
S3 compatible storage を選択します。
Next を選択します。
S3互換ストレージプロバイダーで、バケットにアクセスしてオブジェクトを取得するために必要な権限を持つアクセスキー認証情報を作成します。
詳細については、 S3互換ストレージの要件 をご参照ください。
Next を選択します。
外部ボリュームを構成するには、 Configure external volume ページで次のフィールドに入力します。
フィールド
説明
External volume name
外部ボリュームの名前を入力します。
Storage endpoint
S3互換の API エンドポイントを指す完全修飾ドメインを指定します。
注釈
ストレージエンドポイントは、バケット名を含んではいけません。たとえば、
my_bucket.example.comの代わりにexample.comを指定します。AWS key ID
S3互換ストレージの場所への接続とアクセスのための AWS キー ID を指定します。
AWS secret key
S3互換ストレージの場所への接続とアクセスのための AWS シークレットキーを指定します。
Access scope
外部ボリュームに対して書き込み操作を許可するかどうかを指定します。次のテーブルの場合 Allow writes に設定する必要があります。
Snowflakeをカタログとして使用するIcebergテーブル。
外部カタログを使用し、書き込み可能なIcebergテーブル。外部で管理されているIcebergテーブルは、 ALLOWED_WRITE_OPERATIONS パラメーターが TRUE に設定された、カタログにリンクされたデータベースを通じてアクセスすると書き込み可能です。
Deltaテーブルファイルから作成されたIcebergテーブルの場合、このパラメーターを Allow writes に設定すると、SnowflakeがIcebergメタデータを外部ストレージに書き込めるようになります。詳細については、 Deltaベーステーブル をご参照ください。
このフィールドの値は、指定した各ストレージの場所のクラウドストレージアカウントに設定した権限と一致する必要があります。
注釈
外部管理Icebergテーブルの読み取りに外部ボリュームを使用する場合は、このフィールドをOffに設定します。外部Icebergカタログのテーブルを読み取る場合、SnowflakeはデータやIcebergメタデータファイルをクラウドストレージに書き込みません。
Scope
この外部ボリュームを、将来のIcebergテーブルのデフォルト保存先として設定する場所を選んでください。可能な値は次のとおりです。
Do not set a default:外部ボリュームをどこでもデフォルトとして設定しないでください。
Account:アカウント全体の下で作成されるIcebergテーブルのデフォルトとして外部ボリュームを設定します。
Specific database:指定したデータベース下に作成されるIcebergテーブルのデフォルトとして外部ボリュームを設定します。このデータベースを指定するには、 Specific database を選択したときに表示される Database ドロップダウンを使用します。
Specific schema:指定したスキーマ下に作成されるIcebergテーブルのデフォルトとして外部ボリュームを設定します。このスキーマを指定するには、表示される Database ドロップダウンを使用して、最初にスキーマの親データベースを選択してからスキーマを選択します。
Comment
外部ボリュームのコメントを指定します。
Storage base URL
クラウドストレージの場所のベース URL を指定します。
Next を選択します。
Verify connection & create volume ページでは、SnowflakeはS3互換ストレージへの接続を確認し、「正常に接続されました」メッセージを表示します。
注釈
Snowflakeが接続を確認できない場合は、権限または外部ボリュームの構成を確認して、 Verify again を選択してください。
Create を選択します。
外部ボリュームの認証情報を更新します。¶
外部ボリュームの認証情報を変更または更新するには、 ALTER EXTERNAL VOLUME ... UPDATE コマンドを使用します。認証情報を変更するストレージロケーションの名前を指定します。
ALTER EXTERNAL VOLUME ext_vol_s3_compat UPDATE
STORAGE_LOCATION = 'my_s3_compat_storage_location'
CREDENTIALS = (
AWS_KEY_ID = '4d5e6f...'
AWS_SECRET_KEY = '7g8h9i...'
);