Amazon S3 스토리지 클래스 제외 - AWS Glue

Amazon S3 스토리지 클래스 제외

Amazon Simple Storage Service(Amazon S3)에서 파일 또는 파티션을 읽는 AWS Glue ETL 작업을 실행하는 경우 일부 Amazon S3 스토리지 클래스 유형을 제외할 수 있습니다.

Amazon S3에서 제공되는 스토리지 클래스는 다음과 같습니다.

  • STANDARD - 자주 액세스하는 데이터의 범용 스토리지일 때

  • INTELLIGENT_TIERING - 액세스 패턴이 불확실하거나 바뀌는 데이터일 때

  • STANDARD_IAONEZONE_IA - 저장 기간이 길지만 액세스 횟수가 비교적 적은 데이터일 때

  • GLACIER, DEEP_ARCHIVEREDUCED_REDUNDANCY - 장기 아카이브 및 디지털 보존이 필요할 때

자세한 내용은 Amazon S3 Developer GuideAmazon S3 Storage Classes를 참조하세요.

이번 단원의 예제는 GLACIERDEEP_ARCHIVE 스토리지 클래스를 제외하는 방법을 나타낸 것입니다. 두 클래스는 파일을 나열하는 데 사용되지만 복원하지 않을 경우 파일을 읽어오지는 못합니다. 자세한 내용은 Amazon S3 Developer GuideRestoring Archived Objects를 참조하세요.

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

AWS Glue에서 Amazon S3 스토리지 클래스를 필터링할 수 있는 여러 가지 방법이 있습니다.

동적 프레임 생성 시 Amazon S3 스토리지 클래스 제외

동적 프레임을 생성할 때 Amazon S3 스토리지 클래스를 제외하려면 additionalOptions에서 excludeStorageClasses를 사용합니다. AWS Glue는 자동으로 고유한 Amazon S3 Lister 구현을 사용하여 지정된 스토리지 클래스에 해당하는 파일을 나열하고 제외합니다.

다음 Python 및 Scala 예제는 동적 프레임을 생성할 때 GLACIERDEEP_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 스토리지 클래스 제외

AWS Glue ETL 작업에서 사용할 스토리지 클래스 제외를 AWS Glue Data Catalog의 테이블 파라미터로 지정할 수 있습니다. 이러한 파라미터는 AWS Command Line Interface(AWS CLI) 를 사용하거나 API에서 프로그래밍 방식으로 CreateTable 작업에 추가할 수 있습니다. 자세한 내용은 테이블 구조 단원과 CreateTable 단원을 참조하십시오.

그 밖에 AWS Glue 콘솔에서 제외된 스토리지 클래스를 지정하는 방법도 있습니다.

Amazon S3 스토리지 클래스를 제외하려면(콘솔)
  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/glue/에서 AWS Glue 콘솔을 엽니다.

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

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

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

  5. 적용(Apply)을 선택합니다.