

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

# 자습서: EventBridge를 사용하여 Amazon S3 객체 수준 작업 로깅
<a name="eb-log-s3-data-events"></a>

[Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 버킷에서 객체 수준 API 작업을 로깅할 수 있습니다. Amazon EventBridge를 이러한 [이벤트](eb-events.md)와 일치시키려면 먼저 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)을 사용하여 이러한 이벤트를 수신하기 위한 추적을 설정하고 구성해야 합니다.

이 자습서에서는 CloudTrail 추적을 생성하고 [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 함수를 생성한 다음 EventBridge 콘솔에서 S3 데이터 이벤트에 대한 응답으로 해당 함수를 간접 호출하는 [규칙](eb-rules.md)을 생성합니다.

**Topics**
+ [1단계: AWS CloudTrail 추적 구성](#eb-configure-trail)
+ [2단계: AWS Lambda 함수 생성](#eb-log-s3-create-lambda-function)
+ [3단계: 규칙 생성](#eb-log-s3-create-rule)
+ [4단계: 규칙 테스트](#eb-log-s3-test-rule)
+ [5단계: 성공 확인](#success)
+ [6단계: 리소스 정리](#cleanup)

## 1단계: AWS CloudTrail 추적 구성
<a name="eb-configure-trail"></a>

S3 버킷의 데이터 이벤트를 AWS CloudTrail 및 EventBridge에 로깅하려면 먼저 추적을 생성합니다. *추적*은 계정에서 API 직접 호출과 관련 이벤트를 캡처하고 지정된 S3 버킷에 로그 파일을 전달합니다. 기존 추적을 업데이트하거나 생성할 수 있습니다.

자세한 내용을 알아보려면AWS CloudTrail 사용 설명서의 [데이터 이벤트](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-and-data-events-with-cloudtrail.html#logging-data-events)를 참조하세요.**

**추적을 생성하려면**

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

1. **추적**, **추적 생성**을 선택합니다.

1. **추적 이름**에 추적 이름을 입력합니다.

1. **스토리지 위치**의 **S3 버킷 새로 만들기**에서.

1. **AWS KMS 별칭**에 KMS 키의 별칭을 입력합니다.

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

1. **이벤트 유형**에서는 **데이터 이벤트**를 선택합니다.

1. **데이터 이벤트**에서 다음 중 하나를 수행합니다.
   + 버킷의 모든 Amazon S3 객체에 대한 데이터 이벤트를 로그하려면 S3 버킷과 빈 접두사를 지정합니다. 이벤트가 해당 버킷의 개체에서 발생하면 추적이 해당 이벤트를 처리하고 기록합니다.
   + 버킷의 특정 Amazon S3 객체에 대한 데이터 이벤트를 로깅하려면 S3 버킷과 객체 접두사를 지정합니다. 이벤트가 해당 버킷의 개체에서 발생하고 개체가 지정된 접두사로 시작하면 추적이 이벤트를 처리하고 기록합니다.

1. 각 리소스에 대해 **읽기** 이벤트를 로깅할지, **쓰기** 이벤트를 로깅할지 또는 둘 다 로깅할지를 선택합니다.

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

1. **추적 생성**을 선택합니다.

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

Lambda 함수를 생성하여 S3 버킷에 대한 데이터 이벤트를 로그합니다.

**Lambda 함수 생성**

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

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

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

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

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

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

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

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

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

## 3단계: 규칙 생성
<a name="eb-log-s3-create-rule"></a>

2단계에서 생성한 Lambda 함수를 실행하는 규칙을 생성합니다. 이 규칙은 Amazon S3 데이터 이벤트에 대한 응답으로 실행됩니다.

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

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. **이벤트 소스**의 경우 드롭다운 목록에서 **Simple Storage Service(S3)**를 선택합니다.

   1. **이벤트 유형**의 경우 드롭다운 목록에서 **CloudTrail을 통한 객체 레벨 API 직접 호출**을 선택합니다.

   1. **특정 작업**을 선택한 후 **PutObject**를 선택합니다.

   1. 기본적으로 규칙은 리전의 모든 버킷에 대한 데이터 이벤트와 일치합니다. 특정 버킷에 대한 데이터 이벤트와 일치시키려면 **이름 기준 특정 버킷**을 선택하고 버킷을 하나 이상 입력합니다.

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

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

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

1. **함수**에서, 1단계에서 생성한 `LogS3DataEvents` Lambda 함수를 선택합니다.

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

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

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

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

규칙을 테스트하려면 S3 버킷에 개체를 배치합니다. Lambda 함수가 호출되었는지 확인할 수 있습니다.

**Lambda 함수에 대한 로그를 보려면**

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

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

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

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

추적에 지정한 S3 버킷의 CloudTrail 로그를 확인할 수도 있습니다. 자세한 내용은 *AWS CloudTrail 사용 설명서*에서 [CloudTrail 로그 파일 가져오기 및 보기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/get-and-view-cloudtrail-log-files.html)를 참조하세요.

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

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

## 6단계: 리소스 정리
<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. **삭제**를 선택합니다.

**CloudTrail 추적을 삭제하려면**

1. CloudTrail 콘솔의 [추적 페이지](https://console.aws.amazon.com/cloudtrail/home#/trails)를 엽니다.

1. 생성한 추적을 선택합니다.

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

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