자습서: EventBridge를 사용하여 Amazon S3 객체 수준 작업 기록 - Amazon EventBridge

자습서: EventBridge를 사용하여 Amazon S3 객체 수준 작업 기록

S3 버킷에서 객체 수준 API 작업을 기록할 수 있습니다. Amazon EventBridge를 이러한 이벤트와 일치시키려면 먼저 AWS CloudTrail을 사용하여 이들 이벤트를 수신하기 위해 구성된 추적을 설정해야 합니다.

1단계: AWS CloudTrail 추적 구성

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

추적을 생성하려면

  1. https://console.aws.amazon.com/cloudtrail/에서 CloudTrail 콘솔을 엽니다.

  2. 탐색 창에서 Trails(추적), Create trail(추적 생성)을 선택합니다.

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

  4. Data events(데이터 이벤트)에 버킷 이름과 접두사(선택 사항)를 입력합니다. 각 추적의 경우 최대 250개의 Amazon S3 객체를 추가할 수 있습니다.

    • 버킷의 모든 Amazon S3 객체에 대한 데이터 이벤트를 로깅하려면 S3 버킷과 빈 접두사를 지정합니다. 이벤트가 해당 버킷의 개체에서 발생하면 추적이 해당 이벤트를 처리하고 기록합니다.

    • 특정 Amazon S3 객체에 대한 데이터 이벤트를 로깅하려면 S3 버킷 추가를 선택한 후 S3 버킷을 지정하고 객체 접두사(선택 사항)를 지정합니다. 이벤트가 해당 버킷의 개체에서 발생하고 개체가 지정된 접두사로 시작하면 추적이 이벤트를 처리하고 기록합니다.

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

  6. Storage location(스토리지 위치)에 대해 로그 파일 스토리지에 지정할 기존 S3 버킷을 생성하거나 선택합니다.

  7. Create를 선택합니다.

자세한 내용은 AWS CloudTrail User Guide데이터 이벤트를 참조하십시오.

2단계: AWS Lambda 함수 만들기

Lambda 함수를 생성하여 S3 버킷에서 데이터 이벤트를 기록합니다. 규칙을 생성할 때 이 함수를 지정합니다.

Lambda 함수를 만들려면

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

  2. Lambda를 처음 사용하는 경우 시작 페이지가 표시됩니다. 함수 만들기를 선택합니다. 그렇지 않은 경우에는 함수 생성을 선택합니다.

  3. 새로 작성을 선택합니다.

  4. 새로 작성에서 다음 작업을 수행합니다.

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

    2. 역할에서 사용자 지정 역할 생성을 선택합니다.

      새 창이 열립니다. 필요할 경우 역할 이름을 변경하고 허용을 선택합니다.

    3. Lambda 콘솔로 돌아가서 함수 생성을 선택합니다.

  5. Lambda 함수의 코드를 다음과 같이 편집하고 저장을 선택합니다.

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

3단계: 규칙 생성

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

규칙을 생성하려면

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

  2. 탐색 창에서 [Rules]를 선택합니다.

  3. [Create rule]을 선택합니다.

  4. 규칙에 대해 이름과 설명을 입력하십시오.

  5. Define pattern(패턴 정의)에 대해 다음을 수행하십시오.

    1. 이벤트 패턴을 선택합니다.

    2. Pre-defined pattern by service(서비스별 사전 정의된 패턴)을 선택하십시오.

    3. Service provider(서비스 제공업체)에 대해 AWS를 선택하십시오.

    4. 서비스 이름에서 Simple Storage Service(S3)를 선택합니다.

    5. 이벤트 유형에서 객체 수준 작업을 선택합니다.

    6. 특정 작업, PutObject를 선택합니다.

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

  6. Select event bus(이벤트 버스 선택)에 대해 AWS default event bus(AWS 기본 이벤트 버스)를 선택하십시오. 계정의 AWS 서비스가 이벤트를 출력하면 항상 계정의 기본 이벤트 버스로 이동합니다.

  7. 대상에서 Lambda 함수를 선택합니다.

  8. 함수에서 생성한 Lambda 함수를 선택합니다.

  9. Create를 선택합니다.

4단계: 규칙 테스트

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

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

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

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

  3. Lambda 함수에 대한 로그 그룹 이름(/aws/lambda/function-name)을 선택합니다.

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

추적에 지정한 S3 버킷의 CloudTrail 로그 내용을 확인할 수도 있습니다. 자세한 내용은 AWS CloudTrail User GuideCloudTrail 로그 파일 가져오기 및 보기를 참조하십시오.