S3 Glacier Select を使用したアーカイブのクエリ - Amazon S3 Glacier

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

S3 Glacier Select を使用したアーカイブのクエリ

S3 Glacier Select を使用すると、簡単な構造化クエリ言語 (SQL) ステートメントを使用して、S3 Glacier にあるデータに直接フィルタリング操作を実行できます。S3 Glacier アーカイブオブジェクトに対して SQL クエリを指定すると、S3 Glacier Select はクエリを実行し、Amazon S3 に出力結果を書き込みます。S3 Glacier Select を使用すると、Amazon S3 などのよりホットな層にデータを復元しなくても、S3 Glacier に保存されているデータに対してクエリやカスタム分析を実行できます。

SELECT クエリを実行する際、S3 Glacier は、3 つのデータアクセス階層 — 迅速標準、および大容量を提供します。これらの階層はすべて、異なるデータアクセスの時間とコストを提供します。データをどれほど早く利用する必要があるかに応じて、これらのいずれかを選択します。最大規模のアーカイブ (250 MB 以上) を除くすべてのアーカイブについては、迅速階層でアクセスしたデータは通常 1~5 分以内で使用可能になります。標準階層では、3~5 時間以内に終了します。大容量取り出しでは、5~12 時間以内に終了します。階層料金の詳細については、「S3 Glacier 料金表」を参照してください。

S3 Glacier Select を AWS SDK、S3 Glacier REST API、および AWS Command Line Interface (AWS CLI) と一緒に使用できます。

S3 Glacier Select の要件とクォータ

S3 Glacier Select を使用するための要件は以下のとおりです。

  • S3 Glacier Select でクエリしたアーカイブオブジェクトは、非圧縮のカンマ区切り値 (CSV) としてフォーマットする必要があります。

  • 使用可能な S3 バケットが必要です。さらに、S3 Glacier Select ジョブを開始するのに使用する AWS アカウントには、S3 バケットに対する書き込みアクセス許可が必要です。Amazon S3 バケットは、クエリされているアーカイブオブジェクトを含むボールトと同じ AWS リージョンにある必要があります。

  • ジョブの出力の取得 (GET output) を呼び出すアクセス権限が必要です。

S3 Glacier Select を使用するときは以下のクォータが適用されます。

  • S3 Glacier Select で処理できるレコードの数にクォータはありません。入力または出力レコードは 1 MB 以下でなければなりません。それ以外の場合、クエリは失敗します。レコードあたり 1,048,576 列のクォータがあります。

  • 最終結果のサイズにクォータはありません。ただし、結果は複数のパートに分割されます。

  • SQL 式のサイズの上限は 128 KB です。

S3 Glacier Select を使用してデータをクエリする方法

S3 Glacier Select を使用すると、非圧縮の CSV フォーマットで保存されている S3 Glacier アーカイブオブジェクトに対し、SQL コマンドを使用してクエリを実行できます。この制限により、S3 Glacier 内のテキストベースのデータに対し、簡単なクエリ操作を実行できます。たとえば、一連のアーカイブテキストファイルの中から、特定の名前または ID を検索するかもしれません。

S3 Glacier データにクエリを実行するには、ジョブの開始 (ジョブの POST) 操作を使用して、Select ジョブを作成します。Select ジョブを開始する際、SQL 式、クエリを実行するアーカイブ、Amazon S3 内で結果を保存する場所を指定します。

次の式の例では、ジョブの開始 (ジョブの POST) のアーカイブ ID で指定されたアーカイブからすべてのレコードが返されます。

SELECT * FROM archive

S3 Glacier Select は、ANSI SQL 言語のサブセットをサポートします。SELECT、FROM、および WHERE など、一般的なフィルタリングの SQL 句がサポートされています。SUM、COUNT、GROUP BY、JOINS、DISTINCT、UNION、ORDER BY、および LIMIT はサポートされていません。SQL のサポートの詳細については、「Amazon S3 Select および S3 Glacier Select の SQL リファレンス」を参照してください。

S3 Glacier Select の出力

Select ジョブを開始する際、SELECT クエリの結果の出力場所を定義します。この場所は、クエリされているアーカイブオブジェクトを含むボールトと同じ AWS リージョンにある、Amazon S3 バケットである必要があります。ジョブを開始する AWS アカウントには、S3 バケットに書き込むためのアクセス許可が必要です。

S3ストレージ クラスと、 Amazon S3。 S3 GlacierSelectは、SSE-KMSおよびSSE-S3暗号化をサポートしています。 S3 GlacierSelectは、SSE-Cおよびクライアント側の暗号化をサポートしていません。Amazon S3 ストレージクラスおよび暗号化の詳細については、https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html の「ストレージクラス」および「Amazon Simple Storage Service 開発者ガイドサーバー側の暗号化を使用したデータの保護」を参照してください。

S3 Glacier Select の結果は、ジョブの開始 (ジョブの POST) で指定された出力場所で提供されるプレフィックスを使用して、S3 バケットに保存されます。この情報から、S3 Glacier Select はジョブ ID を参照する一意のプレフィックスを作成します。このジョブ ID プレフィックスは、x-amz-job-output-path レスポンスの ジョブの開始 (ジョブの POST) ヘッダーで返されます。(接頭辞は、オブジェクト名を共通の文字列で始めることによって、S3 オブジェクトをグループ化するために使用されます。) この一意のプレフィックスの下に、2 つの新しいプレフィックスが作成されます。 results 結果と errors ログとエラー。ジョブが完了すると、結果のすべての場所を含む、結果のマニフェストが書き込まれます。

出力場所に書き込まれる、job.txt という名前のプレースホルダーファイルもあります。これは、作成後に更新されることはありません。プレースホルダーファイルは以下の目的で使用されます。

  • 書き込みアクセス権限と大部分の SQL 構文エラーの同期的な検証。

  • 必要なとき、いつでも簡単に参照できるように、ジョブの説明 (GET JobID) に似た静的な出力を提供します。

たとえば、 S3 Glacier として指定された結果の出力場所を持つジョブを選択します s3://example-bucket/my-prefixジョブ応答はジョブ ID を次のように返します。 examplekne1209ualkdjh812elkassdu9012e。 選択ジョブが完了すると、以下が表示されます。 Amazon S3 バケット内のオブジェクト:

s3://example-bucket/my-prefix/examplekne1209ualkdjh812elkassdu9012e/job.txt s3://example-bucket/my-prefix/examplekne1209ualkdjh812elkassdu9012e/results/abc s3://example-bucket/my-prefix/examplekne1209ualkdjh812elkassdu9012e/results/def s3://example-bucket/my-prefix/examplekne1209ualkdjh812elkassdu9012e/results/ghi s3://example-bucket/my-prefix/examplekne1209ualkdjh812elkassdu9012e/result_manifest.txt

SELECT クエリの結果は複数のパートに分割されます。この例で、S3 Glacier Select は出力場所の設定時に指定したプレフィックスを使用し、ジョブ ID と results プレフィックスを付加します。次に、結果は3つの部分で書き込まれ、オブジェクト名は次のようになります。 abcdef、および ghi。 結果マニフェストには、プログラムによる取得を可能にする3つのファイルがすべて含まれています。エラーが発生してジョブが失敗すると、ファイルは error プレフィックス付きで表示され、error_manifest.txt が生成されます。

result_manifest.txt ファイルが表示され、error_manifest.txt が表示されなければ、ジョブが正常に完了したことの保証となります。結果がどのような順番で並ぶかに関する保証はありません。

注記

キー とも呼ばれる Amazon S3 オブジェクト名の長さは、1024 バイトを越えることはできません。S3 Glacier は、128 バイトをプレフィックス用に予約します。また、Amazon S3 の場所のパスは、長さが 512 バイトを超えることはできません。リクエストの長さが 512 バイトを超えると、例外が返され、リクエストは却下されます。

エラー処理

S3 Glacier Select は、2 種類のエラーを通知します。最初のエラーのセットは、ジョブの開始 (ジョブの POST) でクエリを送信すると同時に送信されます。これらのエラーは、HTTP レスポンスの一部として送信されます。別のエラーのセットは、クエリが正常に受け付けられた後で、クエリの実行中に発生する場合があります。この場合、エラーは指定した出力先に errors プレフィックスで書き込まれます。

S3 Glacier Select は、エラー発生後、クエリの実行を停止します。クエリを正常に実行するには、すべてのエラーを解決する必要があります。どのレコードが失敗の原因になったのかを特定するために、ログを確認できます。

クエリは、複数のコンピューティングノード全体で並列で実行されるため、エラーは順番に表示されるわけではありません。たとえば、クエリが行 6234 のエラーで失敗した場合、行 6234 よりの前のすべての行が正常に処理されているということではありません。次のクエリの実行では、異なる列のエラーが表示される場合があります。