

# Amazon S3 ストレージクラスの除外
<a name="aws-glue-programming-etl-storage-classes"></a>

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 ストレージクラス](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html)」を参照してください。

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

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

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

**Topics**
+ [動的フレームの作成時の Amazon S3 ストレージクラスの除外](#aws-glue-programming-etl-storage-classes-dynamic-frame)
+ [Data Catalog テーブルでの Amazon S3 ストレージクラスの除外](#aws-glue-programming-etl-storage-classes-table)

## 動的フレームの作成時の Amazon S3 ストレージクラスの除外
<a name="aws-glue-programming-etl-storage-classes-dynamic-frame"></a>

ダイナミックフレームの作成時に 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 ストレージクラスの除外
<a name="aws-glue-programming-etl-storage-classes-table"></a>

AWS Glue ETL のジョブによるストレージクラスの除外は、AWS Glue Data Catalog のテーブルパラメータとして指定できます。このパラメータは、AWS Command Line Interface (AWS CLI) を使用するか、API を使用してプログラミングによって `CreateTable` オペレーションに含むことができます。詳細については、「[テーブル構造](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-Table)」および「[CreateTable](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateTable.html)」を参照してください。

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

**Amazon S3 ストレージクラスを除外するには (コンソール)**

1. AWS マネジメントコンソール にサインインし、AWS Glue コンソール ([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)) を開きます。

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

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

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

1. **[Apply]** (適用) を選択します。