자습서: CEventBridge를 사용하여 Amazon S3 객체 수준 작업 로깅 - 아마존 EventBridge

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

자습서: CEventBridge를 사용하여 Amazon S3 객체 수준 작업 로깅

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

이 자습서에서는 CloudTrail 추적을 생성하고 AWS Lambda 함수를 생성한 다음 EventBridge 콘솔에서 S3 데이터 이벤트에 대한 응답으로 해당 함수를 간접 호출하는 규칙을 생성합니다.

1단계: AWS CloudTrail 추적 구성

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

자세한 내용을 알아보려면 AWS CloudTrail 사용 설명서데이터 이벤트를 참조하세요.

추적을 생성하려면
  1. https://console.aws.amazon.com/cloudwatch/에서 CloudTrail 콘솔을 엽니다.

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

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

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

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

  6. 다음을 선택합니다.

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

  8. 데이터 이벤트에서 다음 중 하나를 수행합니다.

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

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

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

  10. 다음을 선택합니다.

  11. 추적 생성을 선택합니다.

2단계: AWS Lambda 함수 생성

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

Lambda 함수를 만들려면
  1. https://console.aws.amazon.com/lambda/에서 AWS Lambda 콘솔을 엽니다.

  2. 함수 생성을 선택합니다.

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

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

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

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

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

    'use strict'; exports.handler = (event, context, callback) => { console.log('LogS3DataEvents'); console.log('Received event:', JSON.stringify(event, null, 2)); callback(null, 'Finished'); };
  8. 배포를 선택합니다.

3단계: 규칙 생성

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

규칙을 생성하려면
  1. https://console.aws.amazon.com/events/에서 Amazon EventBridge 콘솔을 엽니다.

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

  3. 규칙 생성을 선택합니다.

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

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

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

  7. 다음을 선택합니다.

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

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

    1. 이벤트 소스의 경우 드롭다운 목록에서 Simple Storage Service(S3)를 선택합니다.

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

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

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

  10. 다음을 선택합니다.

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

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

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

  14. 다음을 선택합니다.

  15. 다음을 선택합니다.

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

4단계: 규칙 테스트

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

Lambda 함수에 대한 로그를 보려면
  1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

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

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

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

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

5단계: 성공 확인

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

6단계: 리소스 정리

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

EventBridge 규칙을 삭제하려면
  1. EventBridge 콘솔의 규칙 페이지를 엽니다.

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

  3. 삭제를 선택합니다.

  4. 삭제를 선택합니다.

Lambda 함수를 삭제하려면
  1. Lambda 콘솔의 함수 페이지를 엽니다.

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

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

  4. 삭제를 선택합니다.

CloudTrail 추적을 삭제하려면
  1. CloudTrail 콘솔의 추적 페이지를 엽니다.

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

  3. 삭제를 선택합니다.

  4. 삭제를 선택합니다.