

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

# 자습서: EventBridge 스키마를 사용하여 Amazon Kinesis로 이벤트 전송
<a name="eb-relay-events-kinesis-stream"></a>

EventBridge에서 AWS API 호출 [이벤트를](eb-events.md) [Amazon Kinesis 스트림](https://docs.aws.amazon.com/streams/latest/dev/introduction.html)으로 보내고, Kinesis Data Streams 애플리케이션을 생성하고, 대량의 데이터를 처리할 수 있습니다. 이 자습서에서는 Kinesis 스트림을 생성한 다음 [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) 인스턴스가 중지될 때 해당 스트림으로 이벤트를 보내는 [규칙](eb-rules.md)을 EventBridge 콘솔에서 생성합니다.

**Topics**
+ [사전 조건](#eb-stream-prerequisite)
+ [1단계: Amazon Kinesis 스트림 생성](#eb-stream-create-stream)
+ [2단계: 규칙 생성](#eb-stream-create-rule)
+ [3단계: 규칙 테스트](#eb-stream-test-rule)
+ [4단계: 이벤트가 전송되었는지 확인](#eb-stream-verify-event)
+ [5단계: 리소스 정리](#cleanup)

## 사전 조건
<a name="eb-stream-prerequisite"></a>

이 자습서에서는 다음을 사용합니다.
+  AWS CLI 를 사용하여 Kinesis 스트림으로 작업합니다.

  를 설치하려면 버전 2 설치, 업데이트 및 제거를 AWS CLI참조하세요. [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) 

**참고**  
이 자습서에서는 AWS 이벤트와 내장 `aws.events` 스키마 레지스트리를 사용합니다. 사용자 지정 이벤트를 사용자 지정 스키마 레지스트리에 수동으로 추가하거나 스키마 검색을 사용하여 사용자 지정 이벤트의 스키마를 기반으로 EventBridge 규칙을 생성할 수도 있습니다.  
스키마에 대한 자세한 내용은 [Amazon EventBridge 스키마](eb-schema.md) 단원을 참조하십시오. 다른 이벤트 패턴 옵션을 사용하여 규칙을 생성하는 방법에 대한 자세한 내용은 [Enhanced Builder를 사용하여 규칙 생성](eb-create-rule-visual.md) 단원을 참조하세요.

## 1단계: Amazon Kinesis 스트림 생성
<a name="eb-stream-create-stream"></a>

스트림을 생성하려면 명령 프롬프트에서 `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단계: 규칙 생성
<a name="eb-stream-create-rule"></a>

Amazon EC2 인스턴스를 중지할 때 스트림으로 이벤트를 전송하는 규칙을 생성합니다.

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

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

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

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

1. 규칙에 대해 이름과 설명을 입력하세요. 예를 들어, 규칙의 이름을 `TestRule`로 지정합니다.

1. **이벤트 버스**의 경우 **기본값**을 선택합니다.

1. **규칙 유형**에서 **이벤트 패턴이 있는 규칙**을 선택합니다.

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

1. **이벤트 소스(Event source)**에서 **AWS 이벤트 또는 EventBridge 파트너 이벤트(Events or EventBridge partner events)**를 선택합니다.

1. **생성 방법**에서 **스키마 사용**을 선택합니다.

1. **이벤트 패턴**에서 다음을 수행합니다.

   1. **스키마 유형**의 경우 **스키마 레지스트리에서 스키마 선택**을 선택합니다.

   1. **스키마 레지스트리**의 경우 드롭다운 목록에서 **aws.events**를 선택합니다.

   1. **스키마**의 경우 드롭다운 목록에서 **aws.ec2@EC2InstanceStateChangeNotification**을 선택합니다.

      EventBridge는 **모델** 아래에 이벤트 스키마를 표시합니다.

      EventBridge는 이벤트 패턴이 아닌 *이벤트에* 필요한 모든 속성 옆에 빨간색 별표를 표시합니다.

   1. **모델**에서 다음과 같은 이벤트 필터 속성을 설정합니다.

      1. **상태** 속성 옆의 **\+ 편집**을 선택합니다.

         **관계**를 비워 둡니다. **값**에 `running`을 입력합니다. **Set**를 선택합니다.

      1. **소스** 속성 옆의 **\+ 편집**을 선택합니다.

         **관계**를 비워 둡니다. **값**에 `aws.ec2`을 입력합니다. **Set**를 선택합니다.

      1. **detail-type** 속성 옆의 **\+ 편집**을 선택합니다.

         **관계**를 비워 둡니다. **값**에 `EC2 Instance State-change Notification`을 입력합니다. **Set**를 선택합니다.

   1. 구성한 이벤트 패턴을 보려면 **JSON으로 이벤트 패턴 생성**을 선택합니다.

      EventBridge는 이벤트 패턴을 JSON으로 표시합니다.

      ```
      {
        "detail": {
          "state": ["running"]
        },
        "detail-type": ["EC2 Instance State-change Notification"],
        "source": ["aws.ec2"]
      }
      ```

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

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

1. **대상 선택**의 경우 드롭다운 목록에서 **Kinesis 스트림**을 선택합니다.

1. **스트림**의 경우 **1단계: Amazon Kinesis 스트림 생성** 섹션에서 생성한 Kinesis 스트림을 선택합니다. 이 예시에서는 `test`를 선택합니다.

1. **실행 역할**에서 **이 특정 리소스에 대해 새 역할 생성**을 선택합니다.

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

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

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

## 3단계: 규칙 테스트
<a name="eb-stream-test-rule"></a>

규칙을 테스트하려면 Amazon EC2 인스턴스를 중지합니다. 인스턴스가 중지될 때까지 몇 분 정도 기다린 후 CloudWatch 지표를 확인하여 함수가 실행되었는지 확인합니다.

**인스턴스를 중지시켜 규칙을 테스트하려면**

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

1. 인스턴스 시작. 자세한 내용은 *Amazon EC2 사용 설명서*의 [인스턴스 시작](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html)을 참조하세요.

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

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

   생성한 규칙의 이름을 선택한 후 **규칙에 대한 지표**를 선택합니다.

1. (선택 사항) 작업이 완료되면 인스턴스를 종료합니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [인스턴스 종료](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)를 참조하세요.

## 4단계: 이벤트가 전송되었는지 확인
<a name="eb-stream-verify-event"></a>

 AWS CLI 를 사용하여 스트림에서 레코드를 가져와 이벤트가 전송되었는지 확인할 수 있습니다.

**레코드를 가져오려면**

1. 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="
   }
   ```

1. 레코드를 얻으려면 다음 `get-records` 명령을 사용합니다. 이전 단계의 출력에서 샤드 반복기를 사용합니다.

   ```
   aws kinesis get-records --shard-iterator {{AAAAAAAAAAHSywljv0zEgPX4NyKdZ5wryMzP9yALs8NeKbUjp1IxtZs1Sp+KEd9I6AJ9ZG4lNR1EMi+9Md/nHvtLyxpfhEzYvkTZ4D9DQVz/mBYWRO6OTZRKnW9gd+efGN2aHFdkH1rJl4BL9Wyrk+ghYG22D2T1Da2EyNSH1+LAbK33gQweTJADBdyMwlo5r6PqcP2dzhg=}}
   ```

   이 명령이 성공하면 지정된 샤드에서 스트림에서 나온 레코드를 요청합니다. 0개 이상의 레코드를 수신할 수 있습니다. 반환된 레코드가 스트림의 모든 레코드를 나타내는 것은 아닙니다. 기대한 데이터를 수신하지 못한 경우에는 계속해서 `get-records`를 호출합니다.

1. Kinesis의 레코드는 Base64로 인코딩됩니다. Base64 디코더를 사용하여 데이터를 디코딩하여 해당 이벤트가 JSON 형식으로 스트림에 전송되었는지 확인할 수 있습니다.

## 5단계: 리소스 정리
<a name="cleanup"></a>

이 자습서 용도로 생성한 리소스를 보관하고 싶지 않다면 지금 삭제할 수 있습니다. 더 이상 사용하지 않는 AWS 리소스를 삭제하면 AWS 계정에 불필요한 요금이 부과되지 않습니다.

**EventBridge 규칙을 삭제하려면**

1. EventBridge 콘솔의 [규칙 페이지](https://console.aws.amazon.com/events/home#/rules)를 엽니다.

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

1. **삭제**를 선택합니다.

1. **삭제**를 선택합니다.

**Kinesis 스트림을 삭제하려면**

1. Kinesis 콘솔의 [데이터 스트림 페이지](https://console.aws.amazon.com/kinesis/home#/streams/list)를 엽니다.

1. 생성한 스트림을 선택합니다.

1. **작업**, **삭제**를 선택합니다.

1. 필드에 **삭제**를 입력하고 **삭제**를 선택합니다.