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 호출 이벤트에 대한 규칙을 시작할 수 있습니다. 자세한 내용은 AWS 서비스의 이벤트 단원을 참조하십시오.
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 콘솔의 왼쪽 탐색 창에서 [로그(Logs)] 아래 [**로그 그룹(Log Groups)]**을 선택합니다.
3. Lambda 함수에서 생성된 로그 스트림을 선택합니다.
4. 로그 스트림에서 이벤트 세부 정보를 확인합니다.
참고: 새 실행이 시작된 후 로그 스트림이 나타나는 데 몇 분 정도 걸릴 수 있습니다.
관련 정보
CloudWatch를 사용하여 Step Functions 모니터링
Lambda를 사용하는 Step Functions 상태 시스템 생성