Distributed Map을 사용하여 Amazon S3 버킷의 데이터 처리 - AWS Step Functions

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

Distributed Map을 사용하여 Amazon S3 버킷의 데이터 처리

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

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

샘플 프로젝트는 먼저 ListObjectsV2 API 작업을 호출하여 Amazon S3 버킷의 콘텐츠를 확인합니다. 이 직접 호출에 대한 응답으로 반환된 수를 기준으로 샘플 프로젝트는 다음 중 하나를 결정합니다.

  • 키 수가 1보다 크거나 같으면 프로젝트는 ProcessNOAAData 상태로 전환됩니다. 이 분산 맵 상태에는 매월 평균 기온이 가장 높았던 기상 관측소를 찾는 TemperatureFunction이라는 Lambda 함수가 포함되어 있습니다. 이 함수는 키로 year-month가 있는 사전과 값으로 기상 관측소에 대한 정보가 포함된 사전을 반환합니다.

  • 반환된 키 수가 1을 초과하지 않는 경우 분산 S3 사본 NOA 데이터 상태는 공용 버킷의 모든 객체를 noaa-gsod-pds나열하고 개별 객체를 계정의 다른 버킷에 100개씩 반복적으로 복사합니다. Inline Map은 객체를 반복 복사합니다.

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

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

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

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

중요

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

AWS CloudFormation 템플릿 및 추가 리소스

CloudFormation 템플릿을 사용하여 이 샘플 프로젝트를 배포합니다. 이 템플릿은 다음 리소스를 사용자 내에 생성합니다 AWS 계정.

  • Step Functions 상태 시스템

  • 상태 시스템에 대한 실행 역할. 이 역할은 상태 머신이 Lambda 함수의 Invoke 작업과 같은 다른 리소스 AWS 서비스 및 리소스에 액세스하는 데 필요한 권한을 부여합니다.

  • NOAADataBucket이라는 Amazon S3 버킷. 이 버킷에는 날씨 데이터가 있는 CSV 파일이 포함되어 있습니다.

  • 날씨 데이터의 최종 집계를 수행하고 결과를 Amazon DynamoDB 테이블에 기록하는 ReducerFunction Lambda 함수입니다.

  • 리듀서 Lambda 함수에 대한 실행 역할. 이 역할은 함수에 다른 항목에 액세스할 수 있는 권한을 부여합니다. AWS 서비스

  • 날씨 분석 결과를 저장하는 ResultsBucket Amazon S3 출력 버킷

  • ReducerFunction에서 반환한 결과가 포함된 ResultsDynamoDBTable DynamoDB 테이블

  • 가장 높은 월 평균 기온을 찾는 TemperatureFunction Lambda 함수

  • Lambda 함수에 대한 실행 역할. 이 역할은 함수에 다른 기능에 액세스할 수 있는 권한을 AWS 서비스 부여합니다.

  • 상태 머신의 실행 기록과 관련된 정보를 저장하는 CloudWatch 로그 그룹입니다.

중요

각 서비스마다 표준 요금이 적용됩니다.

1단계: 상태 시스템 만들기 및 리소스 프로비저닝

  1. Step Functions 콘솔을 열고 상태 시스템 생성을 선택합니다.

  2. 검색 상자에 Distributed Map to process files in S3를 입력한 다음 반환된 검색 결과에서 S3에서 파일을 처리하는 분산 맵을 선택합니다.

  3. 다음을 선택하여 계속 진행합니다.

  4. Step Functions는 선택한 샘플 프로젝트에 AWS 서비스 사용된 항목을 나열합니다. 또한 샘플 프로젝트의 워크플로 그래프도 보여줍니다. 이 프로젝트를 사용자 프로젝트에 AWS 계정 배포하거나 자체 프로젝트를 빌드하기 위한 출발점으로 사용하세요. 진행하려는 방식에 따라 데모 실행 또는 이를 기반으로 구축을 선택합니다.

    이 샘플 프로젝트에 생성될 리소스에 대한 자세한 내용은 AWS CloudFormation 템플릿 및 추가 리소스를 참조하세요.

    다음 이미지에서 S3에서 파일을 처리하는 분산 맵 샘플 프로젝트의 워크플로 그래프를 보여줍니다.

    S3에서 파일을 처리하는 분산 맵 샘플 프로젝트의 워크플로 그래프입니다.
  5. 템플릿 사용을 선택하여 계속 선택합니다.

  6. 다음 중 하나를 수행합니다.

    • 이를 기반으로 구축을 선택한 경우 Step Functions는 선택한 샘플 프로젝트의 워크플로 프로토타입을 만듭니다. Step Functions는 워크플로 정의에 나열된 리소스를 배포하지 않습니다.

      Workflow Studio의 디자인 모드에서 상태 브라우저의 상태를 끌어서 놓아 워크플로 프로토타입을 계속 빌드합니다. 또는 VS Code와 유사한 통합 코드 편집기를 제공하는 코드 모드로 전환하여 Step Functions 콘솔 내에서 상태 시스템의 Amazon States Language(ASL) 정의를 업데이트합니다. Workflow Studio를 사용하여 상태 시스템 빌드에 대한 자세한 내용은 Workflow Studio 사용을 참조하세요.

      중요

      워크플로를 실행하기 전에 샘플 프로젝트에 사용된 리소스의 자리 표시자 Amazon 리소스 이름(ARN)을 업데이트해야 합니다.

    • 데모 실행을 선택한 경우 Step Functions는 템플릿을 사용하여 해당 AWS CloudFormation 템플릿에 나열된 AWS 리소스를 사용자에게 배포하는 읽기 전용 샘플 프로젝트를 만듭니다. AWS 계정

      작은 정보

      샘플 프로젝트의 상태 시스템 정의를 보려면 코드를 선택하세요.

      준비가 되면 배포 및 실행을 선택하여 샘플 프로젝트를 배포하고 리소스를 만듭니다.

      이러한 리소스 및 관련 IAM 권한을 만드는 데 최대 10분이 걸릴 수 있습니다. 리소스를 배포하는 동안 CloudFormation Stack ID 링크를 열어 프로비저닝되는 리소스를 확인할 수 있습니다.

      샘플 프로젝트의 모든 리소스가 생성된 후에 상태 시스템 페이지에 새 샘플 프로젝트가 나열됩니다.

      중요

      템플릿에서 사용되는 각 서비스에는 표준 요금이 적용될 수 있습니다. CloudFormation

2단계: 상태 시스템 실행

모든 리소스가 프로비저닝되고 배포된 후에 상태 시스템을 실행할 수 있습니다.

  1. 상태 시스템 페이지에서 샘플 프로젝트를 선택합니다.

  2. 샘플 프로젝트 페이지에서 실행 시작을 선택합니다.

  3. 실행 시작 대화 상자에서 다음을 수행합니다.

    1. (선택 사항) 입력 값을 JSON 형식으로 입력하여 샘플 프로젝트를 실행합니다.

      데모 실행을 선택한 경우에는 실행 입력을 제공할 필요가 없습니다.

      참고

      배포한 데모 프로젝트에 미리 채워진 실행 입력 데이터가 포함되어 있는 경우 해당 입력을 사용하여 상태 시스템을 실행하세요.

    2. 실행 시작을 선택합니다.

    3. (선택 사항) Step Functions 콘솔은 실행 ID가 제목인 페이지로 이동합니다. 이 페이지를 실행 세부 정보 페이지라고 합니다. 실행이 진행되는 동안 또는 완료된 후에 이 페이지에서 실행 결과를 검토할 수 있습니다.

      실행이 완료되면 그래프 보기에서 개별 상태를 선택한 다음 단계 세부 정보 창에서 개별 탭을 선택하여 입력, 출력 및 정의 등 각 상태의 세부 정보를 각각 봅니다.

    4. (선택 사항) Amazon S3 버킷으로 내보낸 실행 결과를 검토합니다. 이러한 결과에는 실행 입력 및 출력, ARN, 실행 상태와 같은 데이터가 포함됩니다. 자세한 내용은 ResultWriter을(를) 참조하세요.