Work with Amazon S3-compatible storage¶
このトピックでは、SnowflakeからAmazon S3互換ストレージにアクセスするのに役立つ情報を提供します。
業界標準 Amazon Simple Storage Service (S3) REST API に準拠したアプリケーションプログラミングインターフェイス(API)を提供するストレージアプリケーションまたはデバイスには、Amazon S3との互換性があります。Amazon S3 REST API は、ストレージバケットとオブジェクトに対する CRUD 操作と管理者の操作を可能にします。
Snowflakeにより、外部ステージを使用して、オンプレミスストレージやパブリッククラウド外に存在するデバイスなどの増え続けるS3互換ストレージソリューションに接続できます。外部ステージには、S3準拠の API エンドポイント、バケット名とパス、認証情報が格納されます。ユーザーがストレージ場所の間でデータをロードしたり、アンロードしたりできるようにするには、ステージに対する権限をロールに付与します。
Amazon S3互換ストレージ用のSnowflakeサポートを使用して、次のようなタスクを実行できます。
Snowflakeへのデータロードなしで、外部ステージからデータへのクエリ。詳細については、 Extend your data lake using external tables をご参照ください。
非構造化データの読み取りおよび処理詳細については、 Download from an internal stage をご参照ください。
COPY FILES コマンドを使用して、S3互換ストレージ内のファイルを別の場所にコピーします。
注釈
S3互換ストレージ用の外部ボリュームを作成して、外部で管理されている Apache Iceberg™ テーブルをクエリすることもできます。詳細については、 S3互換ストレージ用の外部ボリュームの構成 をご参照ください。
クラウドプラットフォームのサポート¶
この機能は、以下のサポートされている クラウドプラットフォーム でホストされているSnowflakeアカウントで利用可能です。
Amazon Web Services
Google Cloud
Microsoft Azure
S3互換ストレージの要件¶
Snowflake用S3互換 API エンドポイントは、以下の要件を満たす必要があります。
S3 API に高度に準拠し、弊社の 公開テストスイート (GitHub)に合格している。エンドポイントがS3のように動作しないと、Snowflakeでは機能しません。
Snowflake S3互換のテスト済みおよび準拠サービスとして、使用するサードパーティのストレージプロバイダーによりサポートされている。少なくとも一部の製品をテストし、Snowflakeで動作することを確認しているベンダーのリストについては、 S3互換ストレージのベンダーサポート をご参照ください。
Snowflakeアカウントがホストされているパブリッククラウドからアクセス可能である。
分析のニーズに応える高可用性とパフォーマンス。
バーチャルホストスタイルのリクエストを使用するように構成されている。詳細については、Amazon S3ドキュメントの バケットの仮想ホスティング をご参照ください。
有効な TLS 証明書で HTTPS 通信を使用するように構成されている。
直接認証情報を使用するように構成されている。
ポート番号を含まない。たとえば、エンドポイントmystorage.com:3000はサポートされません。
重要
Amazon S3互換のエンドポイントは、すべてのアカウントで自動的に有効になるわけではありません。
Cloudflare endpoints that contain r2.cloudflarestorage.com are enabled by default. To enable other endpoints, contact Snowflake Support.
Before you send a request, verify the endpoints by using our public test suite (in GitHub).
リクエストの際は、次の情報を提供します。
Snowflakeアカウント名とクラウドリージョンの展開。
エンドポイント URL (例えば、
my-s3-endpoint.example.com)。エンドポイントを提供するソフトウェアまたはハードウェアのベンダー。
Create an external stage for S3-compatible storage¶
S3互換ストレージ用の外部ステージを作成するには、 CREATE STAGE コマンドを使用して、名前付き 外部ステージ を作成します。外部ステージを使用して、ファイルの一覧表示、データのロード、ファイルのアンロードなどのアクションを実行できます。
オプションで、 ディレクトリテーブル を外部ステージに追加します。ディレクトリテーブルをクエリしてファイル URLs を取得し、参照されるストレージ内のファイルやその他のメタデータにアクセスできます。
注釈
ディレクトリテーブルを追加する際には、 AUTO_REFRESH パラメーターを FALSE に設定する必要があります。S3互換の外部ステージのメタデータを自動的にリフレッシュすることはできません。
以下の例では、エンドポイント mystorage.com でバケットとパス my_bucket/files/ をポイントする my_s3_compat_stage という名前の外部ステージを作成します。この例で使用されている AWS_KEY_ID と AWS_SECRET_KEY の値は、説明のみを目的としています。
Load and unload data¶
S3互換ストレージ用に構成された外部ステージを使用して、データのロードとアンロードができます。以下の機能は、S3互換のストレージで動作します。
COPY INTO <テーブル> コマンドを使用した一括データロード。
たとえば、バケット内の
loadサブパスにあるすべてのファイルと、my_s3compat_stageという名前のステージで定義されたパスからテーブルt1にデータをロードします。Snowpipe REST エンドポイントの呼び出しによる継続的なデータのロード。
サンプルプログラムについては、 Option 1: Load data with the Snowpipe REST API をご参照ください。
COPY INTO <場所> コマンドを使用したデータのアンロード。
たとえば、バケット内の
unloadサブパスと、my_s3compat_stageという名前のステージで定義されたパス内のファイルにテーブルt2からデータをアンロードします。
Extend your data lake using external tables¶
S3互換ストレージを備えた外部テーブルを使用すると、最初にデータをSnowflakeにロードすることなくクエリできます。このセクションでは、S3互換ストレージ用に構成された外部ステージの場所を参照する外部テーブルを作成し、クエリする方法について簡単に説明します。
S3互換外部ステージを参照する CREATE EXTERNAL TABLE を使用して外部テーブルを作成することから始めます。。
注釈
これらの外部テーブルのメタデータは、自動的に更新できません。 AUTO_REFRESH = TRUE パラメーターの設定はサポートされていません。追加または削除されたファイルを登録するには、 ALTER EXTERNAL TABLE ... REFRESH コマンドを実行してメタデータを手動でリフレッシュする必要があります。
次の例では、 my_s3compat_stage という名前のステージにあるサブパス path1 を参照する et という名前の外部テーブルを作成します。 path1 サブパスにあるファイルはApache Parquet形式です。
S3互換ストレージ用の外部テーブルを作成した後、それをクエリできます。たとえば、先に作成した外部テーブルの value 列をクエリします。
クエリのパフォーマンスは、ネットワークとアプリケーションまたはデバイスのパフォーマンスによって異なります。パフォーマンスを重視する場合は、 マテリアライズドビュー を外部テーブルに作成します。マテリアライズドビューは事前に計算されているため、マテリアライズドビューのクエリは、ビューのベーステーブルに対してクエリを実行するよりも高速です。
S3互換ストレージのベンダーサポート¶
S3準拠の API を持つデバイスやアプリケーションをSnowflakeで使用できます。ただし、コンプライアンスを担保する責任は、ストレージサービスプロバイダーにあります。
以下のベンダーは、自社製品の少なくとも一部をテストし、Snowflakeで動作することを確認したとSnowflakeに報告しています。
Akave
Backblaze
Cloudflare
Cloudian
Cohesity
Dell
Hitachi Content Platform
IBMストレージCeph
IDrive e2
MinIO
NetApp (StorageGRID)
Nutanix
PureStorage
Scality
Wasabi
このリストは、便宜上提供されているものです。Snowflakeが外部製品をテストして互換性を検証することはありません。また、サードパーティベンダーが販売する製品の問題を修正することもできません。S3 API を使用するハードウェアまたはソフトウェアがSnowflakeで動作するかどうか、またはどのように動作するかについて質問がある場合は、ベンダーに直接お問い合わせください。
Test your S3-compatible API¶
If you are a hardware or software developer who has created an S3-compatible API, you can use our public test suite (in GitHub) to test whether your S3 API works with Snowflake. The test suite looks for obvious mismatches between your implementation and what Snowflake expects from S3. However, there might be cases where the tests don't identify incompatibility.
お客様が独自のデバイスをテストする場合は、ベンダーに連絡してこれらのテストを実行してください。また、これらの公開テストをお使いのデバイスで実行し、互換性を評価することもできます。