AmazonSQS, AmazonSNS, Lambda를 사용하여 콜백 패턴 예제 만들기 - AWS Step Functions

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

AmazonSQS, AmazonSNS, Lambda를 사용하여 콜백 패턴 예제 만들기

이 샘플 프로젝트는 다음을 수행하는 방법을 보여줍니다. AWS Step Functions 작업 도중에 일시 중지하고 외부 프로세스가 작업 시작 시 생성된 작업 토큰을 반환할 때까지 기다립니다.

이 샘플 프로젝트를 배포하고 실행을 시작하면 다음 단계가 수행됩니다.

  1. Step Functions는 작업 토큰이 포함된 메시지를 아마존 심플 큐 서비스 (AmazonSQS) 대기열로 전달합니다.

  2. 그런 다음 Step Functions는 일시 중지하고 해당 토큰이 반환될 때까지 기다립니다.

  3. Amazon SQS 대기열은 다음을 트리거합니다. AWS Lambda 동일한 태스크 SendTaskSuccess토큰으로 호출하는 함수.

  4. 작업 토큰이 수신되면 워크플로우가 계속됩니다.

  5. "Notify Success"태스크는 콜백을 수신했다는 Amazon 단순 알림 서비스 (AmazonSNS) 메시지를 게시합니다.

Step Functions에서 콜백 패턴을 구현하는 방법은 태스크 토큰으로 콜백이 올 때까지 기다리세요. 섹션을 참조하세요.

방법에 대한 자세한 내용은 AWS Step Functions 다른 사람을 제어할 수 있습니다. AWS 서비스, 참조Step Functions와 서비스 통합.

1단계: 상태 시스템 만들기

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

  2. 검색 상자에 Callback pattern example을 입력한 다음 반환된 검색 결과에서 콜백 패턴 예제를 선택합니다.

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

  4. 데모 실행을 선택하여 읽기 전용 및 ready-to-deploy 워크플로를 만들거나 빌드 온을 선택하여 빌드하고 나중에 배포할 수 있는 편집 가능한 상태 머신 정의를 생성합니다.

    이 샘플 프로젝트는 다음 리소스를 배포합니다.

    • 아마존 SQS 메시지 대기열.

    • Step Functions 작업을 호출하는 Lambda 함수입니다. API SendTaskSuccess

    • 작업의 성공 또는 실패 여부를 알려주고 워크플로를 계속할 수 있는지 여부를 알려주는 Amazon SNS 주제입니다.

    • 원래 요청 ping에 대한 AWS Step Functions 상태 시스템

    • 관련 AWS Identity and Access Management (IAM) 역할

    다음 이미지에서는 콜백 패턴 예제 샘플 프로젝트의 워크플로 그래프를 보여줍니다.

    배치 작업 관리 워크플로의 예시 그래프입니다.
  5. 템플릿 사용을 선택하여 계속 선택합니다.

다음 단계는 이전 선택에 따라 달라집니다.

  1. 데모 실행 — 에서 배포한 리소스로 읽기 전용 프로젝트를 만들기 전에 상태 머신을 검토할 수 있습니다. AWS CloudFormation 다음 주소로 AWS 계정.

    상태 머신 정의를 볼 수 있으며 준비가 되면 Deploy and run을 선택하여 프로젝트를 배포하고 리소스를 생성할 수 있습니다.

    배포하는 데 리소스 및 권한을 생성하는 데 최대 10분이 걸릴 수 있습니다. Stack ID 링크를 사용하여 진행 상황을 모니터링할 수 있습니다. AWS CloudFormation.

    배포가 완료되면 콘솔에서 새 상태 머신을 확인할 수 있습니다.

  2. 기반 구축 — 워크플로 정의를 검토하고 편집할 수 있습니다. 사용자 지정 워크플로를 실행하기 전에 샘플 프로젝트에서 자리 표시자의 값을 설정해야 할 수도 있습니다.

참고

계정에 배포된 서비스에는 표준 요금이 적용될 수 있습니다.

2단계: 상태 시스템 실행

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

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

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

    1. (선택 사항) 생성된 기본값을 재정의하려면 사용자 지정 실행 이름을 입력합니다.

      ASCII비이름 및 로깅

      Step Functions는 ASCII -자가 아닌 문자를 포함하는 상태 머신, 실행, 액티비티 및 레이블의 이름을 허용합니다. CloudWatchAmazon에서는 이러한 문자를 사용할 수 없으므로 지표를 추적할 수 있도록 ASCII 문자만 사용하는 것이 좋습니다 CloudWatch.

    2. (선택 사항) 입력 상자에 입력 값을 로 입력합니다JSON. 데모를 실행 중인 경우 이 단계를 건너뛸 수 있습니다.

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

    Step Functions 콘솔은 그래프 보기에서 상태를 선택하여 단계 세부 정보 창에서 관련 정보를 탐색할 수 있는 실행 세부 정보 페이지로 안내합니다.

    예를 들어 Step Functions가 워크플로를 어떻게 진행하고 SQS Amazon으로부터 콜백을 받았는지 검토하려면 Events 테이블의 항목을 검토하십시오. 다음 이미지에서는 성공 알림 단계의 실행 출력을 보여줍니다. 또한 실행 이벤트 내역의 처음 5개 이벤트도 보여줍니다. 각 이벤트를 확장하면 해당 이벤트에 대한 세부 정보를 볼 수 있습니다.

    다섯 개의 이벤트를 보여주는 '성공 알림' 단계의 실행 출력 발췌.

Lamda 콜백 예제

이 샘플 프로젝트의 구성 요소가 함께 작동하는 방식을 보려면 프로젝트에 배포된 리소스를 확인하세요. AWS 계정. 예를 들어 다음은 작업 토큰을 사용하여 Step Functions를 직접적으로 호출하는 Lambda 함수입니다.

console.log('Loading function'); const aws = require('aws-sdk'); exports.lambda_handler = (event, context, callback) => { const stepfunctions = new aws.StepFunctions(); for (const record of event.Records) { const messageBody = JSON.parse(record.body); const taskToken = messageBody.TaskToken; const params = { output: "\"Callback task completed successfully.\"", taskToken: taskToken }; console.log(`Calling Step Functions to complete callback task with params ${JSON.stringify(params)}`); stepfunctions.sendTaskSuccess(params, (err, data) => { if (err) { console.error(err.message); callback(err.message); return; } console.log(data); callback(null); }); } };