

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Distributed Map을 사용하여 Amazon S3 버킷의 데이터 처리
<a name="sample-dist-map-s3data-process"></a>

이 샘플 프로젝트에서는 [*Distributed Map 상태*](state-map-distributed.md)를 사용하여 과거 날씨 데이터 분석 및 매월 지구상에서 평균 기온이 가장 높은 기상 관측소 식별과 같은 대규모 데이터를 처리하는 방법을 보여줍니다. 날씨 데이터는 12,000개가 넘는 CSV 파일에 기록되며 이러한 파일은 Amazon S3 버킷에 저장됩니다.

이 샘플 프로젝트에는 **Distributed S3 copy NOA Data** 및 **ProcessNOAAData**라는 *Distributed Map 상태* 2개가 포함되어 있습니다. **Distributed S3 copy NOA Data**는 **noaa-gsod-pds**라는 퍼블릭 Amazon S3 버킷의 CSV 파일을 반복하며 AWS 계정의 Amazon S3 버킷에 복사합니다. **ProcessNOAAData**는 복사된 파일을 반복하며 온도 분석을 수행하는 Lambda 함수를 포함합니다.

샘플 프로젝트는 먼저 [ListObjectsV2](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) API 작업을 직접적으로 호출하여 Amazon S3 버킷의 콘텐츠를 확인합니다. 이 직접 호출에 대한 응답으로 반환된 [키](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html#AmazonS3-ListObjectsV2-response-MaxKeys) 수를 기준으로 샘플 프로젝트는 다음 중 하나를 결정합니다.
+ 키 수가 1보다 크거나 같으면 프로젝트는 **ProcessNOAAData** 상태로 전환됩니다. 이 *Distributed Map 상태*에는 매월 평균 기온이 가장 높았던 기상 관측소를 찾는 **TemperatureFunction**이라는 Lambda 함수가 포함되어 있습니다. 이 함수는 키로 `year-month`가 있는 사전과 값으로 기상 관측소에 대한 정보가 포함된 사전을 반환합니다.
+ 반환된 키 수가 1을 초과하지 않으면 **Distributed S3 copy NOA Data** 상태는 퍼블릭 버킷 **noaa-gsod-pds**의 모든 객체를 나열하고 개별 객체를 계정의 다른 버킷에 100개씩 반복 복사합니다. [Inline Map](state-map-inline.md)은 객체를 반복 복사합니다.

  모든 객체가 복사되면 프로젝트는 날씨 데이터를 처리하기 위한 **ProcessNOAAData** 상태로 전환됩니다.

마지막으로 샘플 프로젝트는 **TemperatureFunction** 함수에서 반환된 결과를 최종 집계하고 결과를 Amazon DynamoDB 테이블에 쓰는 리듀서 Lambda 함수로 전환됩니다.

Distributed Map을 사용하면 하위 워크플로 실행을 한 번에 최대 10,000개까지 동시에 실행할 수 있습니다. 이 샘플 프로젝트에서 **ProcessNOAAData** Distributed Map의 최대 동시성은 3,000개로 설정되어 있으며 이 경우 하위 워크플로 동시 실행은 3,000개로 제한됩니다.

이 샘플 프로젝트는 상태 머신과 지원 AWS 리소스를 만들고 관련 IAM 권한을 구성합니다. 이 샘플 프로젝트를 살펴보고 Distributed Map을 사용하여 대규모 병렬 워크로드를 오케스트레이션하는 방법을 알아보거나 자체 프로젝트의 시작점으로 사용합니다.

**중요**  
미국 동부(버지니아 북부) 리전에서만 이 샘플 프로젝트를 사용할 수 있습니다.

## 1단계: 상태 머신 만들기
<a name="sample-dist-map-s3data-create"></a>

1. [Step Functions 콘솔](https://console.aws.amazon.com/states/home?region=us-east-1#/)을 열고 **상태 머신 생성**을 선택합니다.

1. **템플릿에서 생성**을 선택하고 관련 스타터 템플릿을 찾습니다. **다음**을 선택하여 계속 진행합니다.

1. 사용할 템플릿을 선택합니다.

   1. **데모 실행** - 읽기 전용 상태 머신을 생성합니다. 검토 후 워크플로와 모든 관련 리소스를 생성할 수 있습니다.

   1. **이를 기반으로 구축** - 자체 리소스를 사용하여 검토, 사용자 지정 및 배포할 수 있는 편집 가능한 워크플로 정의를 제공합니다. (함수 또는 대기열과 같은 관련 리소스는 자동으로 생성되지 **않습니다**.)

1. **템플릿 사용**을 선택하여 계속 선택합니다.
**참고**  
*계정에 배포된 서비스에 표준 요금이 적용됩니다.*

## 2단계: 상태 머신 데모 실행
<a name="sample-dist-map-s3data-run"></a>

**데모 실행** 옵션을 선택한 경우 모든 관련 리소스가 배포되고 실행할 준비가 됩니다. **이를 기반으로 구축**을 선택한 경우 사용자 지정 워크플로를 실행하기 전에 자리 표시자 값을 설정하고 추가 리소스를 생성해야 할 수 있습니다.

1. **배포 및 실행**을 선택합니다.

1. CloudFormation 스택이 배포될 때까지 기다립니다. 이 프로세스는 최대 10분이 걸릴 수 있습니다.

1. **실행 시작** 옵션이 나타나면 **입력**을 검토하고 **실행 시작**을 선택합니다.

**축하합니다\$1**  
이제 상태 머신의 데모가 실행 중이어야 합니다. **그래프 보기**에서 상태를 선택하여 입력, 출력, 변수, 정의 및 이벤트를 검토할 수 있습니다.