Amazon S3互換ストレージの操作¶
このトピックでは、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へのデータロードなしで、外部ステージからデータへのクエリ。詳細については、 外部テーブルを使用したデータレイクの拡張 をご参照ください。
非構造化データの読み取りおよび処理詳細については、 非構造化データの処理 をご参照ください。
クラウドプラットフォームのサポート¶
この機能は、以下のサポートされている クラウドプラットフォーム でホストされている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互換のエンドポイントは、すべてのアカウントで自動的に有効になるわけではありません。リクエストするには、Snowflakeアカウントチームまたは Snowflakeサポート にお問い合わせください。リクエストを送信する前に、 パブリックテストスイート (GitHub内)を使用してエンドポイントを確認してください。
リクエストの際は、次の情報を提供します。
Snowflakeアカウント名とクラウドリージョンの展開。
エンドポイント URL (つまり、my-s3-endpoint.company.com)。
エンドポイントを提供するソフトウェアまたはハードウェアのベンダー。
S3互換ストレージ用外部ステージの作成¶
S3互換ストレージ用の外部ステージを作成するには、 CREATE STAGE コマンドを使用して、名前付き 外部ステージ を作成します。名前付きステージオブジェクトを使用して、ファイルの一覧表示、データのロード、ファイルのアンロードなどの SQL アクションを実行できます。
オプションで、 ディレクトリテーブル を外部ステージに追加します。ディレクトリテーブルをクエリしてファイル URLs を取得し、参照されるストレージ内のファイルやその他のメタデータにアクセスできます。
注釈
ディレクトリテーブルを追加する際には、 AUTO_REFRESH パラメーターを FALSE に設定する必要があります。S3互換の外部ステージのメタデータを自動的にリフレッシュすることはできません。
以下の例では、エンドポイント mystorage.com
でバケットとパス my_bucket/files/
をポイントする my_s3_compat_stage
という名前の外部ステージを作成します。この例で使用されている AWS_KEY_ID と AWS_SECRET_KEY の値は、説明のみを目的としています。
CREATE STAGE my_s3compat_stage
URL = 's3compat://my_bucket/files/'
ENDPOINT = 'mystorage.com'
CREDENTIALS = (AWS_KEY_ID = '1a2b3c...' AWS_SECRET_KEY = '4x5y6z...')
データのロードおよびアンロード¶
S3互換ストレージ用に構成された外部ステージを使用して、データのロードとアンロードができます。以下の機能は、S3互換のストレージで動作します。
COPY INTO <テーブル> コマンドを使用した一括データロード。
たとえば、バケット内の
load
サブパスにあるすべてのファイルと、my_s3compat_stage
という名前のステージで定義されたパスからテーブルt1
にデータをロードします。COPY INTO t1 FROM @my_s3compat_stage/load/;
Snowpipe REST エンドポイントの呼び出しによる継続的なデータのロード。
サンプルプログラムについては、 オプション1: Snowpipe REST API を使用したデータのロード をご参照ください。
COPY INTO <場所> コマンドを使用したデータのアンロード。
たとえば、バケット内の
unload
サブパスと、my_s3compat_stage
という名前のステージで定義されたパス内のファイルにテーブルt2
からデータをアンロードします。COPY INTO @my_s3compat_stage/unload/ FROM t2;
外部テーブルを使用したデータレイクの拡張¶
S3互換ストレージを備えた外部テーブルを使用すると、最初にデータをSnowflakeにロードすることなくクエリできます。このセクションでは、S3互換ストレージ用に構成された外部ステージの場所を参照する外部テーブルを作成し、クエリする方法について簡単に説明します。
S3互換外部ステージを参照する CREATE EXTERNAL TABLE を使用して外部テーブルを作成することから始めます。。
注釈
これらの外部テーブルのメタデータは、自動的に更新できません。 AUTO_REFRESH = TRUE
パラメーターの設定はサポートされていません。追加または削除されたファイルを登録するには、 ALTER EXTERNAL TABLE ... REFRESH コマンドを実行してメタデータを手動でリフレッシュする必要があります。
次の例では、 my_s3compat_stage
という名前のステージにあるサブパス path1
を参照する et
という名前の外部テーブルを作成します。 path1
サブパスにあるファイルはApache Parquet形式です。
CREATE EXTERNAL TABLE et
LOCATION=@my_s3compat_stage/path1/
AUTO_REFRESH = FALSE
REFRESH_ON_CREATE = TRUE
FILE_FORMAT = (TYPE = PARQUET);
S3互換ストレージ用の外部テーブルを作成した後、それをクエリできます。たとえば、先に作成した外部テーブルの value
列をクエリします。
SELECT value FROM et;
クエリのパフォーマンスは、ネットワークとアプリケーションまたはデバイスのパフォーマンスによって異なります。パフォーマンスを重視する場合は、 マテリアライズドビュー を外部テーブルに作成することをお勧めします。
S3互換ストレージのベンダーサポート¶
S3準拠の API を持つデバイスやアプリケーションをSnowflakeで使用できます。ただし、コンプライアンスを担保する責任は、ストレージサービスプロバイダーにあります。
以下のベンダーは、自社製品の少なくとも一部をテストし、Snowflakeで動作することを確認したとSnowflakeに報告しています。
Backblaze
Cloudflare
Cloudian
Cohesity
Dell
Hitachi Content Platform
IDrive e2
MinIO
NetApp (StorageGRID)
Nutanix
PureStorage
Scality
Wasabi
このリストは、便宜上提供されているものです。Snowflakeが外部製品をテストして互換性を検証することはありません。また、サードパーティベンダーが販売する製品の問題を修正することもできません。S3 API を使用するハードウェアまたはソフトウェアがSnowflakeで動作するかどうか、またはどのように動作するかについて質問がある場合は、ベンダーに直接お問い合わせください。
S3互換 API のテスト¶
S3互換の API を作成したハードウェアまたはソフトウェア開発者は、 公開テストスイート (GitHub 内)を使用して、S3 API がSnowflakeで動作するかどうかをテストできます。テストスイートは、実装とSnowflakeがS3に期待するものとの間の明らかな不一致を検出します。ただし、テストで非互換性が識別されない場合があります。
お客様が独自のデバイスをテストする場合は、ベンダーに連絡してこれらのテストを実行することをお勧めします。また、これらの公開テストをお使いのデバイスで実行し、互換性を評価することもできます。