Amazon S3 ストレージクラスの除外 - AWS Glue

Amazon S3 ストレージクラスの除外

Amazon Simple Storage Service (Amazon S3) からファイルまたはパーティションを読み取る AWS Glue ETL ジョブを実行している場合は、一部の Amazon S3 ストレージクラスタイプを除外できます。

Amazon S3 には、次のストレージクラスがあります。

  • STANDARD – 頻繁にアクセスされるデータの汎用ストレージ向け。

  • INTELLIGENT_TIERING – アクセスパターンが不明または変化するデータ向け。

  • STANDARD_IA および ONEZONE_IA – 保持期間が長くアクセス頻度の低いデータ向け。

  • GLACIERDEEP_ARCHIVE、および REDUCED_REDUNDANCY – 長期アーカイブおよびデジタル保存向け。

詳細については、Amazon S3 デベロッパーガイドの「Amazon S3 ストレージクラス」を参照してください。

このセクションの例では、GLACIER および DEEP_ARCHIVE ストレージクラスを除外する方法を示します。これらのクラスではファイルをリストできますが、復元されない限り、ファイルを読み取ることはできません (さらに詳細な情報については、Amazon S3 デベロッパーガイドの「Restoring Archived Objects」を参照してください。)

ストレージクラスの除外を使用することで、これらのストレージクラス層にまたがるパーティションを持つテーブルで AWS Glue ジョブを確実に動作させることができます。除外がない場合、これらの階層からデータを読み取るジョブは、次のエラーで失敗します。 AmazonS3Exception: オペレーションはオブジェクトのストレージクラスに対して有効ではありません。

AWS Glue で Amazon S3 ストレージクラスをフィルタリングするには、さまざまな方法があります 。

動的フレームの作成時の Amazon S3 ストレージクラスの除外

ダイナミックフレームの作成時に Amazon S3 のストレージクラスを除外するには、excludeStorageClassesadditionalOptions を使います。AWS Glue では指定されたストレージクラスに対応するファイルを、独自の Amazon S3 Lister の実装を使用して自動的にリストアップし、除外します。

次に、動的フレームの作成時に GLACIER および DEEP_ARCHIVE ストレージクラスを除外する、Python および Scala の例を示します。

Python の例

glueContext.create_dynamic_frame.from_catalog( database = "my_database", tableName = "my_table_name", redshift_tmp_dir = "", transformation_ctx = "my_transformation_context", additional_options = { "excludeStorageClasses" : ["GLACIER", "DEEP_ARCHIVE"] } )

Scala の例

val* *df = glueContext.getCatalogSource( nameSpace, tableName, "", "my_transformation_context", additionalOptions = JsonOptions( Map("excludeStorageClasses" -> List("GLACIER", "DEEP_ARCHIVE")) ) ).getDynamicFrame()

Data Catalog テーブルでの Amazon S3 ストレージクラスの除外

AWS Glue ETL のジョブによるストレージクラスの除外は、AWS Glue Data Catalog のテーブルパラメータとして指定できます。このパラメータは、AWS Command Line Interface (AWS CLI) を使用するか、API を使用してプログラミングによって CreateTable オペレーションに含むことができます。詳細については、「テーブル構造」および「CreateTable」を参照してください。

AWS Glue コンソールで除外されるストレージクラスを指定することもできます。

Amazon S3 ストレージクラスを除外するには (コンソール)
  1. AWS Management Consoleにサインインし、AWS Glue コンソール (https://console.aws.amazon.com/glue/) を開きます。

  2. 左側のナビゲーションペインで、[Tables (テーブル)] を選択します。

  3. リストでテーブル名を選択し、[Edit table (テーブルの編集)] を選択します。

  4. [Table properties (テーブルプロパティ)] で、キーとして excludeStorageClasses を、値として [\"GLACIER\",\"DEEP_ARCHIVE\"] を追加します。

  5. [Apply] を選択します。