자습서: EventBridge 스키마를 사용하여 Amazon Kinesis로 이벤트 전송
EventBridge의 AWS API 직접 호출 이벤트를 Amazon Kinesis 스트림으로 보내고, Kinesis Data Streams 애플리케이션을 생성하고, 대량의 데이터를 처리할 수 있습니다. 이 자습서에서는 Kinesis 스트림을 생성한 다음 Amazon EC2 인스턴스가 중지될 때 해당 스트림으로 이벤트를 보내는 규칙을 EventBridge 콘솔에서 생성합니다.
사전 조건
이 자습서에서는 다음을 사용합니다.
AWS CLI를 사용하여 Kinesis 스트림을 사용할 수 있습니다.
AWS CLI를 설치하려면 AWS CLI 버전 2 설치, 업데이트 및 제거를 참조하세요.
참고
이 자습서에서는 AWS 이벤트와 내장된 aws.events
스키마 레지스트리를 사용합니다. 사용자 지정 이벤트를 사용자 지정 스키마 레지스트리에 수동으로 추가하거나 스키마 검색을 사용하여 사용자 지정 이벤트의 스키마를 기반으로 EventBridge 규칙을 생성할 수도 있습니다.
스키마에 대한 자세한 내용은 Amazon EventBridge 스키마 단원을 참조하십시오. 다른 이벤트 패턴 옵션을 사용하여 규칙을 생성하는 방법에 대한 자세한 내용은 Amazon EventBridge에서 이벤트에 반응하는 규칙 생성 단원을 참조하세요.
1단계: Amazon Kinesis 스트림 생성
스트림을 생성하려면 명령 프롬프트에서 create-stream
AWS CLI 명령을 사용합니다.
aws kinesis create-stream --stream-name
test
--shard-count 1
스트림 상태가 ACTIVE
이면 스트림이 준비되었다는 뜻입니다. 스트림 상태를 확인하려면 describe-stream
명령을 사용합니다.
aws kinesis describe-stream --stream-name
test
2단계: 규칙 생성
Amazon EC2 인스턴스를 중지할 때 스트림으로 이벤트를 전송하는 규칙을 생성합니다.
규칙을 생성하려면
https://console.aws.amazon.com/events/
에서 Amazon EventBridge 콘솔을 엽니다. -
탐색 창에서 규칙을 선택합니다.
-
규칙 생성을 선택합니다.
-
규칙에 대해 이름과 설명을 입력하십시오. 예를 들어, 규칙의 이름을
TestRule
로 지정합니다. -
이벤트 버스의 경우 기본값을 선택합니다.
-
규칙 유형에서 이벤트 패턴이 있는 규칙을 선택합니다.
-
Next(다음)를 선택합니다.
-
이벤트 소스(Event source)에서 AWS 이벤트 또는 EventBridge 파트너 이벤트(Events or EventBridge partner events)를 선택합니다.
-
생성 방법에서 스키마 사용을 선택합니다.
-
이벤트 패턴에서 다음을 수행합니다.
-
스키마 유형의 경우 스키마 레지스트리에서 스키마 선택을 선택합니다.
-
스키마 레지스트리의 경우 드롭다운 목록에서 aws.events를 선택합니다.
-
스키마의 경우 드롭다운 목록에서 aws.ec2@EC2InstanceStateChangeNotification을 선택합니다.
EventBridge는 모델 아래에 이벤트 스키마를 표시합니다.
EventBridge는 이벤트 패턴이 아닌 이벤트에 필요한 모든 속성 옆에 빨간색 별표를 표시합니다.
-
모델에서 다음과 같은 이벤트 필터 속성을 설정합니다.
상태 속성 옆의 + 편집을 선택합니다.
관계를 비워 둡니다. 값에
running
을 입력합니다. Set를 선택합니다.소스 속성 옆의 + 편집을 선택합니다.
관계를 비워 둡니다. 값에
aws.ec2
을 입력합니다. Set를 선택합니다.detail-type 속성 옆의 + 편집을 선택합니다.
관계를 비워 둡니다. 값에
EC2 Instance State-change Notification
을 입력합니다. Set를 선택합니다.
-
구성한 이벤트 패턴을 보려면 JSON으로 이벤트 패턴 생성을 선택합니다.
EventBridge는 이벤트 패턴을 JSON으로 표시합니다.
{ "detail": { "state": ["running"] }, "detail-type": ["EC2 Instance State-change Notification"], "source": ["aws.ec2"] }
-
-
Next(다음)를 선택합니다.
-
대상 유형에서 AWS서비스를 선택합니다.
-
대상 선택의 경우 드롭다운 목록에서 Kinesis 스트림을 선택합니다.
-
스트림의 경우 1단계: Amazon Kinesis 스트림 생성 섹션에서 생성한 Kinesis 스트림을 선택합니다. 이 예시에서는
test
를 선택합니다. -
실행 역할에서 이 특정 리소스에 대해 새 역할 생성을 선택합니다.
-
Next(다음)를 선택합니다.
-
다음을 선택합니다.
-
규칙의 세부 정보를 검토하고 규칙 생성을 선택합니다.
3단계: 규칙 테스트
규칙을 테스트하려면 Amazon EC2 인스턴스를 중지합니다. 인스턴스가 중지될 때까지 몇 분 정도 기다린 후 CloudWatch 지표를 확인하여 함수가 실행되었는지 확인합니다.
인스턴스를 중지시켜 규칙을 테스트하려면
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
인스턴스 시작. 자세한 내용은 Amazon EC2 사용 설명서의 인스턴스 시작을 참조하세요.
https://console.aws.amazon.com/events/
에서 Amazon EventBridge 콘솔을 엽니다. -
탐색 창에서 규칙을 선택합니다.
생성한 규칙의 이름을 선택한 후 규칙에 대한 지표를 선택합니다.
-
(선택 사항) 작업이 완료되면 인스턴스를 종료합니다. 자세한 내용은 Amazon EC2 사용 설명서의 인스턴스 종료를 참조하세요.
4단계: 이벤트가 전송되었는지 확인
AWS CLI를 사용하여 스트림에서 레코드를 가져와서 이벤트가 전송되었는지 확인할 수 있습니다.
레코드를 가져오려면
-
Kinesis 스트림에서 읽기를 시작하려면 명령 프롬프트에서
get-shard-iterator
명령을 사용합니다.aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name
test
출력의 예시는 다음과 같습니다.
{ "ShardIterator": "AAAAAAAAAAHSywljv0zEgPX4NyKdZ5wryMzP9yALs8NeKbUjp1IxtZs1Sp+KEd9I6AJ9ZG4lNR1EMi+9Md/nHvtLyxpfhEzYvkTZ4D9DQVz/mBYWRO6OTZRKnW9gd+efGN2aHFdkH1rJl4BL9Wyrk+ghYG22D2T1Da2EyNSH1+LAbK33gQweTJADBdyMwlo5r6PqcP2dzhg=" }
-
레코드를 얻으려면 다음
get-records
명령을 사용합니다. 이전 단계의 출력에서 샤드 반복기를 사용합니다.aws kinesis get-records --shard-iterator
AAAAAAAAAAHSywljv0zEgPX4NyKdZ5wryMzP9yALs8NeKbUjp1IxtZs1Sp+KEd9I6AJ9ZG4lNR1EMi+9Md/nHvtLyxpfhEzYvkTZ4D9DQVz/mBYWRO6OTZRKnW9gd+efGN2aHFdkH1rJl4BL9Wyrk+ghYG22D2T1Da2EyNSH1+LAbK33gQweTJADBdyMwlo5r6PqcP2dzhg=
이 명령이 성공하면 지정된 샤드에서 스트림에서 나온 레코드를 요청합니다. 0개 이상의 레코드를 수신할 수 있습니다. 반환된 레코드가 스트림의 모든 레코드를 나타내는 것은 아닙니다. 기대한 데이터를 수신하지 못한 경우에는 계속해서
get-records
를 호출합니다. -
Kinesis의 레코드는 Base64로 인코딩됩니다. Base64 디코더를 사용하여 데이터를 디코딩하여 해당 이벤트가 JSON 형식으로 스트림에 전송되었는지 확인할 수 있습니다.
5단계: 리소스 정리
이 자습서 용도로 생성한 리소스를 보관하고 싶지 않다면 지금 삭제할 수 있습니다. 더 이상 사용하지 않는 AWS 리소스를 삭제하면 AWS 계정에 불필요한 요금이 발생하는 것을 방지할 수 있습니다.
EventBridge 규칙을 삭제하려면
-
EventBridge 콘솔의 규칙 페이지
를 엽니다. -
생성한 규칙을 선택합니다.
-
Delete(삭제)를 선택합니다.
-
Delete(삭제)를 선택합니다.
Kinesis 스트림을 삭제하려면
-
Kinesis 콘솔의 데이터 스트림 페이지
를 엽니다. -
생성한 스트림을 선택합니다.
-
작업, 삭제를 선택합니다.
-
필드에 삭제를 입력하고 삭제를 선택합니다.