

# 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 Developer Guide*의 [Amazon S3 Storage Classes](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html)를 참조하세요.

이번 단원의 예제는 `GLACIER` 및 `DEEP_ARCHIVE` 스토리지 클래스를 제외하는 방법을 나타낸 것입니다. 두 클래스는 파일을 나열하는 데 사용되지만 복원하지 않을 경우 파일을 읽어오지는 못합니다. 자세한 내용은 *Amazon S3 Developer Guide*의 [Restoring Archived Objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html)를 참조하세요.

스토리지 클래스 제외를 사용하면 해당 스토리지 클래스 계층에서 파티션이 포함된 테이블에 대해 AWS Glue 작업을 실행할 수 있습니다. 제외를 사용하지 않으면 해당 계층에서 데이터를 읽어오는 작업은 다음 오류와 함께 중단됩니다. AmazonS3Exception: The operation is not valid for the object's storage class.

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 스토리지 클래스를 제외하려면 `additionalOptions`에서 `excludeStorageClasses`를 사용합니다. AWS Glue는 자동으로 고유한 Amazon S3 `Lister` 구현을 사용하여 지정된 스토리지 클래스에 해당하는 파일을 나열하고 제외합니다.

다음 Python 및 Scala 예제는 동적 프레임을 생성할 때 `GLACIER` 및 `DEEP_ARCHIVE` 스토리지 클래스를 제외하는 방법을 나타낸 것입니다.

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 Management Console에 로그인하여 [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)에서 AWS Glue 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **테이블**을 선택합니다.

1. 목록에서 테이블 이름과 **테이블 편집**을 차례대로 선택합니다.

1. **테이블 속성**에서 **excludeStorageClasses**를 키로, 그리고 **[\\"GLACIER\\",\\"DEEP\_ARCHIVE\\"]**를 값으로 추가합니다.

1. **Apply(적용)**를 선택합니다.