Amazon S3 ストレージクラスの除外
Amazon Simple Storage Service (Amazon S3) からファイルまたはパーティションを読み取る AWS Glue ETL ジョブを実行している場合は、一部の Amazon S3 ストレージクラスタイプを除外できます。
Amazon S3 には、次のストレージクラスがあります。
-
STANDARD
– 頻繁にアクセスされるデータの汎用ストレージ向け。 -
INTELLIGENT_TIERING
– アクセスパターンが不明または変化するデータ向け。 -
STANDARD_IA
およびONEZONE_IA
– 保持期間が長くアクセス頻度の低いデータ向け。 -
GLACIER
、DEEP_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 のストレージクラスを除外するには、excludeStorageClasses
で additionalOptions
を使います。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 ストレージクラスを除外するには (コンソール)
AWS Management Consoleにサインインし、AWS Glue コンソール (https://console.aws.amazon.com/glue/
) を開きます。 -
左側のナビゲーションペインで、[Tables (テーブル)] を選択します。
-
リストでテーブル名を選択し、[Edit table (テーブルの編集)] を選択します。
-
[Table properties (テーブルプロパティ)] で、キーとして
excludeStorageClasses
を、値として[\"GLACIER\",\"DEEP_ARCHIVE\"]
を追加します。 -
[Apply] を選択します。