AWS Step Functions에서 상태(실행 이벤트)가 변경될 때 AWS Lambda 함수를 호출하도록 설정하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 4월 5일

AWS Step Functions에서 상태(실행 이벤트)가 변경될 때마다 AWS Lambda 함수를 호출하려고 합니다. 어떻게 해야 합니까?

해결 방법

참고: 이 지침은 Step Functions에서 상태가 변경될 때마다 Amazon EventBridge 이벤트 규칙을 사용하여 Lambda 함수를 호출하는 방법을 설명합니다. 여기서 설명하는 단계를 따르는 동안 다음을 수행해야 합니다.

  • Lambda 함수를 호출하는 데 사용하는 이벤트 변경이 지원되는 API 작업인지 확인합니다.
  • 동일한 AWS 리전에서 Step Functions 상태 시스템, Lambda 함수 및 EventBridge 이벤트 규칙을 생성합니다.

Step Functions 및 Lambda에 대한 IAM 역할 생성

1.    Step Functions에 대한 AWS Identity and Access Management(IAM) 역할을 생성합니다. IAM 역할을 생성할 때 다음을 수행합니다.
사용 사례에 필요한 작업을 수행할 수 있는 권한을 IAM 역할에 부여합니다.
상태 시스템이 Lambda 함수를 호출하도록 하려면 lambda: InvokeFunction 작업을 허용합니다.
참고: 관리형 정책인 AWSLambdaRole에는 Lambda 함수를 호출하는 데 필요한 권한이 포함되어 있습니다.

2.    Amazon CloudWatch에 로그를 업로드할 수 있는 권한을 함수에 부여하는 Lambda 실행 역할을 생성합니다.
참고: 관리형 정책 AWSLambdaBasicExecutionRole은 CloudWatch에 로그를 업로드할 수 있는 기본 권한을 함수에 부여합니다.

Step Functions 상태 시스템 생성

Step Functions 콘솔에서 상태 시스템을 생성합니다. [실행을 위한 IAM 역할(IAM role for executions)]에서 Step Functions에 대해 생성한 기존 역할을 선택합니다.

자세한 내용은 AWS Step Functions란 무엇입니까?를 참조하세요.

수신하는 이벤트를 인쇄하도록 구성된 Lambda 함수 생성

1.    Lambda 콘솔에서 함수를 생성합니다. [실행 역할]에서 Lambda에 대해 생성한 실행 역할을 선택합니다.

2.    Lambda 콘솔에서 코드 편집기를 사용하여, 함수가 실행될 때 수신하는 이벤트를 인쇄하도록 함수 코드를 업데이트합니다.

Lambda 함수가 수신하는 이벤트를 인쇄하도록 지시하는 예제 Python 코드

import json

def lambda_handler(event, context):
print("Received event: " + json.dumps(event)) return {
'statusCode': 200,
'body': json.dumps("Hello")
}

자세한 내용은 Python으로 Lambda 함수 빌드를 참조하세요.

Step Functions에서 상태가 변경될 때마다 Lambda 함수를 호출하는 EventBridge 이벤트 규칙 생성

1.    EventBridge 콘솔을 엽니다.

2.    왼쪽 탐색 창의 [이벤트] 아래에서 [규칙]을 선택합니다.

3.    규칙 생성(Create rule)을 선택합니다.

4.    [이름(Name)]에 규칙 이름을 입력합니다.

5.    [패턴 정의(Define pattern)]에서 [이벤트 패턴(Event pattern)]을 선택합니다.

6.    [이벤트 일치 패턴(Event matching pattern)]에서 [서비스별 사전 정의된 패턴(Pre-defined pattern by service)]을 선택합니다.

7.    [서비스 공급자(Service provider)에서 [AWS]를 선택합니다.

8.    [서비스 이름(Service Name)]에서 [Step Functions]를 선택합니다.

9.    [이벤트 유형(Event Type)]에서 [Step Functions 실행 상태 변경(Step Functions Execution Status Change)]을 선택합니다.

참고: Step Functions의 [모든 이벤트(All Events)]가 규칙을 시작하도록 선택할 수도 있습니다. 또는 [CloudTrail을 통해 AWS API 호출(AWS API Call via CloudTrail)]을 선택하여 [StartExecution] 같은 특정 Step Functions API 호출 이벤트에 대한 규칙을 시작할 수 있습니다. 자세한 내용은 CloudTrail을 통해 전송되는 이벤트를 참조하세요.

10.    이벤트를 시작할 상태, 상태 시스템 Amazon 리소스 이름(ARN) 및 실행 ARN을 선택합니다. 각 트리거 유형에 대해 [모두(Any)]를 선택하거나 각 트리거에 대해 [특정(Specific)] 상태 또는 ARN을 식별할 수 있습니다.

11.    [대상 선택(Select targets)]에서 대상 유형이 Lambda 함수인지 확인합니다.

12.    [함수(Function)]에서 생성한 Lambda 함수를 선택합니다.

13.    규칙 생성(Create rule)을 선택합니다.

자세한 내용은 Amazon EventBridge 이벤트Step Functions용 EventBridge 실행 상태 변경을 참조하세요.

설정 테스트

1.    Step Functions 콘솔에서 상태 시스템의 새 실행을 시작합니다.

2.    CloudWatch 콘솔의 왼쪽 탐색 창에서 [로그]를 선택합니다.

3.    Lambda 함수에서 생성된 로그 스트림을 선택합니다.

4.    로그 스트림에서 이벤트 세부 정보를 확인합니다.

참고: 새 실행이 시작된 후 로그 스트림이 나타나는 데 몇 분 정도 걸릴 수 있습니다.