

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

# 자습서: EventBridge를 사용하여 Amazon EC2 인스턴스의 상태 로깅
<a name="eb-log-ec2-instance-state"></a>

[Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) 인스턴스의 상태 변경을 로깅하는 [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 함수를 생성할 수 있습니다. 상태 전환이 있거나 관심이 있는 하나 이상의 상태로 전환될 때마다 Lambda 함수를 실행하는 [규칙](eb-rules.md)을 생성할 수 있습니다. 이 자습서에서는 새 인스턴스의 시작을 기록합니다.

**Topics**
+ [1단계: AWS Lambda 함수 생성](#eb-ec2-create-lambda-function)
+ [2단계: 규칙 생성](#eb-ec2-create-rule)
+ [3단계: 규칙 테스트](#eb-api-test-rule)
+ [4단계: 성공 확인](#success)
+ [5단계: 리소스 정리](#cleanup)

## 1단계: AWS Lambda 함수 생성
<a name="eb-ec2-create-lambda-function"></a>

Lambda 함수를 생성하여 상태 변경 [이벤트](eb-events.md)를 로깅합니다. 2단계에서 규칙을 생성할 때 이 함수를 지정합니다.

**Lambda 함수 생성**

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

1. **함수 생성**을 선택합니다.

1. **새로 작성**을 선택합니다.

1. Lambda 함수의 이름과 설명을 입력합니다. 예를 들어 함수 이름을 `LogEC2InstanceStateChange`로 지정합니다.

1. 나머지 옵션은 기본값으로 두고 **함수 생성**을 선택합니다.

1. 함수 페이지의 **코드** 탭에서 **index.js**를 두 번 클릭합니다.

1. 기존 코드를 다음 코드로 바꿉니다.

   ```
   'use strict';
   
   exports.handler = (event, context, callback) => {
       console.log('LogEC2InstanceStateChange');
       console.log('Received event:', JSON.stringify(event, null, 2));
       callback(null, 'Finished');
   };
   ```

1. **배포**를 선택합니다.

## 2단계: 규칙 생성
<a name="eb-ec2-create-rule"></a>

1단계에서 생성한 Lambda 함수를 실행하는 규칙을 생성합니다. Amazon EC2 인스턴스를 시작할 때 규칙이 실행됩니다.

**EventBridge 규칙을 만들려면**

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

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

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

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

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

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

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

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

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

   1. **이벤트 소스**의 경우 드롭다운 목록에서 **EC2**를 선택합니다.

   1. **이벤트 유형**의 경우 드롭다운 목록에서 **EC2 인스턴스 상태 변경 알림**을 선택합니다.

   1. **특정 상태**를 선택하고 드롭다운 목록에서 **실행**을 선택합니다.

   1. **모든 인스턴스**를 선택합니다.

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

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

1. **대상 선택**의 경우 드롭다운 목록에서 **Lambda 함수**를 선택합니다.

1. **함수**의 경우 **1단계: Lambda 함수 생성** 섹션에서 생성한 Lambda 함수를 선택합니다. 이 예시에서는 `LogEC2InstanceStateChange`를 선택합니다.

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

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

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

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

Amazon EC2 콘솔을 사용하여 Amazon EC2 인스턴스를 중지함으로써 규칙을 테스트할 수 있습니다. 인스턴스가 중지될 때까지 몇 분 기다린 다음 CloudWatch 콘솔에서 AWS Lambda 지표를 확인하여 함수가 실행되었는지 확인합니다.

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

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. 인스턴스를 중지합니다. 자세한 내용은 *Amazon EC2 사용 설명서*의 [인스턴스 중지 및 시작](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html)을 참조하세요.

1. Lambda 함수에서 출력을 보려면 다음을 수행합니다.

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

   1. 탐색 창에서 **로그**를 선택합니다.

   1. Lambda 함수에 대한 로그 그룹 명칭을 선택합니다(`/aws/lambda/{{function-name}}`).

   1. 로그 스트림 이름을 선택하여 중지한 인스턴스에서 함수를 통해 제공된 데이터를 확인합니다.

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

## 4단계: 성공 확인
<a name="success"></a>

CloudWatch 로그에 Lambda 이벤트가 표시되면 이 자습서를 성공적으로 완료한 것입니다. 이벤트가 CloudWatch 로그에 없는 경우, 규칙이 성공적으로 생성되었는지 확인하여 문제 해결을 시작하고, 규칙이 올바른 것으로 보이면 Lambda 함수의 코드가 올바른지 확인하세요.

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

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

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

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

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

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

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

**Lambda 함수를 삭제하려면**

1. Lambda 콘솔의 [함수 페이지](https://console.aws.amazon.com/lambda/home#/functions)를 엽니다.

1. 생성한 함수를 선택합니다.

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

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