

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

# 자습서: EventBridge를 사용하여 AWS Batch 작업 이벤트 수신
<a name="batch_cwet"></a>

이 자습서에서는 AWS Batch 작업 이벤트를 수신 대기하고 CloudWatch Logs 로그 스트림으로 출력하는 간단한 AWS Lambda 함수를 설정합니다.

## 사전 조건
<a name="cwet_prereqs"></a>

이 자습서에서는 작업을 수락할 준비가 된 작업 중인 컴퓨팅 환경과 작업 대기열이 있다고 가정합니다. 이벤트를 캡처할 실행 중인 컴퓨팅 환경 및 작업 대기열이 없는 경우 [AWS Batch 자습서 시작하기](Batch_GetStarted.md)의 단계에 따라 하나를 생성합니다. 이 자습서를 마치고 나면 이 작업 대기열에 작업을 제출하여 Lambda 함수가 올바로 구성되었는지 테스트할 수 있습니다.

**Topics**
+ [사전 조건](#cwet_prereqs)
+ [자습서: Lambda 함수 생성](cwet_create_lam.md)
+ [자습서: 이벤트 규칙 등록](cwet_register_event_rule.md)
+ [자습서: 구성 테스트](cwet_test.md)

# 자습서: Lambda 함수 생성
<a name="cwet_create_lam"></a>

 이 절차에서는 AWS Batch 이벤트 스트림 메시지의 대상으로 사용할 간단한 Lambda 함수를 생성합니다.

**대상 Lambda 함수를 생성하려면**

1. [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)에서 AWS Lambda 콘솔을 엽니다.

1. **함수 생성**과 **새로 작성**을 차례로 선택합니다.

1. **함수 이름**에 **batch-event-stream-handler**를 입력합니다.

1. **런타임**에서 **Python 3.8**을 선택합니다.

1. **함수 생성(Create function)**을 선택합니다.

1. **함수 코드** 섹션에서 다음 예제와 일치하도록 샘플 코드를 수정합니다.

   ```
   import json
   
   
   def lambda_handler(event, _context):
       # _context is not used
       del _context
       if event["source"] != "aws.batch":
           raise ValueError("Function only supports input from events with a source type of: aws.batch")
   
       print(json.dumps(event))
   ```

   다음은 AWS Batch에서 전송하는 이벤트를 인쇄하는 간단한 Python 3.8 함수입니다. 모든 설정이 올바르게 구성되면 이 자습서가 끝날 때 이 Lambda 함수와 연결된 CloudWatch Logs 로그 스트림에 이벤트 세부 정보가 표시됩니다.

1. **배포(Deploy)**를 선택합니다.

# 자습서: 이벤트 규칙 등록
<a name="cwet_register_event_rule"></a>

이 섹션에서 AWS Batch 리소스에서 나온 작업 이벤트를 캡처하는 EventBridge 이벤트 규칙을 생성합니다. 이 규칙은 규칙이 정의된 계정 내의 AWS Batch에서 나온 모든 이벤트를 캡처합니다. 작업 메시지 자체에 작업이 제출된 작업 대기열과 같은 이벤트 소스에 대한 정보가 포함됩니다. 이 정보를 사용하여 프로그래밍 방식으로 이벤트를 필터링하고 정렬할 수 있습니다.

**참고**  
AWS Management Console(을)를 사용하여 이벤트 규칙을 만들 경우 콘솔이 Lambda 함수를 호출할 EventBridge 권한을 부여하는 데 필요한 IAM 권한을 자동으로 추가합니다. AWS CLI(을)를 사용하여 이벤트 규칙을 생성하는 경우 권한을 명시적으로 부여해야 합니다. 자세한 내용을 알아보려면 *Amazon EventBridge 사용 설명서*의 [이벤트 및 이벤트 패턴](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html)을 참조하세요.

**EventBridge 규칙을 생성하려면**

1. [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)에서 Amazon EventBridge 콘솔을 엽니다.

1. 탐색 창에서 **규칙**을 선택합니다.

1. **규칙 생성**을 선택합니다.

1. 규칙에 대해 이름과 설명을 입력하세요.

   규칙은 동일한 지역과 동일한 이벤트 버스의 다른 규칙과 동일한 이름을 가질 수 없습니다.

1. **이벤트 버스**에서 이 규칙과 연결할 이벤트 버스를 선택합니다. 이 규칙이 자신의 계정에서 발생하는 이벤트와 일치하도록 하려면 **AWS 기본 이벤트 버스(default event bus)**를 선택합니다. 계정의 AWS 서비스가 이벤트를 출력하면 항상 계정의 기본 이벤트 버스로 이동합니다.

1. **규칙 유형(Rule type)**에서 **이벤트 패턴이 있는 규칙(Rule with an event pattern)**을 생성합니다.

1. **다음**을 선택합니다.

1. **이벤트 소스**에서 **기타**를 선택합니다.

1. **이벤트 패턴**에서 **사용자 지정 패턴(JSON 편집기)**을 선택합니다.

1. 다음 이벤트 패턴을 텍스트 영역에 붙여 넣습니다.

   ```
   {
     "source": [
       "aws.batch"
     ]
   }
   ```

   이 규칙은 모든 AWS Batch 그룹과 모든 AWS Batch 이벤트에 적용됩니다. 또는 더 한정적인 규칙을 만들어 일부 결과를 필터링할 수 있습니다.

1. **다음**을 선택합니다.

1. **대상 유형**에서 **AWS서비스**를 선택합니다.

1. **대상 선택**에서 **Lambda 함수**를 선택하고 Lambda 함수를 선택합니다.

1. (선택 사항)**추가 설정**에서 다음을 수행합니다.

   1. **최대 이벤트 기간(Maximum age of event)**에 1분(00:01)에서 24시간(24:00) 사이의 값을 입력합니다.

   1. **재시도(Retry attempts)**에 0에서 185 사이의 숫자를 입력합니다.

   1. **배달 못한 편지 대기열(Dead-letter queue)**에서 표준 Amazon SQS 대기열을 배달 못한 편지 대기열로 사용할지를 선택합니다. 이벤트가 대상에 성공적으로 전달되지 않은 경우 EventBridge는 이 규칙과 일치하는 이벤트를 배달 못한 편지 대기열로 보냅니다. 다음 중 하나를 수행합니다.
      + 배달 못한 편지 대기열을 사용하지 않으려면 **없음(None)**을 선택합니다.
      + **현재 AWS 계정에서 DLQ(Dead Letter Queue)로 사용할 Amazon SQS 대기열 선택(Select an Amazon SQS queue in the current account to use as the dead-letter queue)**을 선택하고 드롭다운에서 사용할 대기열을 선택합니다.
      + **다른 AWS 계정에서 배달 못한 편지 대기열로 사용할 Amazon SQS 대기열 선택**을 선택한 다음, 사용할 대기열의 ARN을 입력합니다. 메시지를 보낼 수 있는 EventBridge 권한을 부여하는 리소스 기반 정책을 대기열에 연결해야 합니다. 자세한 정보는 *Amazon EventBridge 사용 설명서*의 [DLQ(Dead Letter Queue)에 대한 권한 부여](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rule-dlq.html#eb-dlq-perms)를 참조하세요.

1. **다음**을 선택합니다.

1. (선택 사항)규칙에 대해 하나 이상의 태그를 입력하세요. 자세한 정보는 *Amazon EventBridge 사용 설명서*의 [Amazon EventBridge 태그](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-tagging.html)를 참조하세요.

1. **다음**을 선택합니다.

1. 규칙의 세부 정보를 검토하고 **규칙 생성**을 선택합니다.

# 자습서: 구성 테스트
<a name="cwet_test"></a>

작업 대기열에 작업을 제출하여 EventBridge 구성을 테스트할 수 있습니다. 모두 제대로 구성된 경우 Lambda 함수가 트리거되고 해당 함수에 대한 CloudWatch Logs 로그 스트림에 이벤트 데이터를 씁니다.

**구성을 테스트하려면**

1. [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)에서 AWS Batch 콘솔을 엽니다.

1. 새 AWS Batch 작업을 제출합니다. 자세한 내용은 [자습서: 작업 제출](submit_job.md) 섹션을 참조하세요.

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. 탐색 창에서 **로그**를 선택하고 Lambda 함수의 로그 그룹을 선택합니다(예: **/aws/lambda/***my-function*).

1. 이벤트 데이터를 보려면 로그 스트림을 선택합니다.