AWS Lambda 를 사용하여 EventBridge 이벤트 처리 - Amazon EBS

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

AWS Lambda 를 사용하여 EventBridge 이벤트 처리

Amazon EBS와 Amazon EventBridge를 사용하여 데이터 백업 워크플로를 자동화할 수 있습니다. 이렇게 하려면 IAM 정책, 이벤트를 처리하는 AWS Lambda 함수, 수신 이벤트와 일치하고 이를 Lambda 함수로 라우팅하는 EventBridge 규칙을 생성해야 합니다.

다음 절차에서는 재해 복구를 위해 createSnapshot 이벤트를 사용하여 완료된 스냅샷을 다른 리전으로 자동으로 복사합니다.

완료된 스냅샷을 다른 리전으로 복사하려면
  1. 다음 예에 표시된 것과 같이 CopySnapshot 작업을 사용하고 EventBridge 로그에 쓸 수 있는 권한을 제공하려면 IAM 정책을 생성합니다. EventBridge 이벤트를 처리할 사용자에게 정책을 할당합니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "ec2:CopySnapshot" ], "Resource": "*" } ] }
  2. EventBridge 콘솔에서 사용할 수 있는 Lambda 함수를 정의합니다. 아래 Node.js로 작성된 샘플 Lambda 함수는 일치하는 createSnapshot 이벤트를 Amazon EBS가 발생시킬 때 EventBridge에 의해 호출됩니다. 이는 스냅샷이 완료되었음을 의미합니다. 호출되면 함수가 us-east-2에서 us-east-1로 스냅샷을 복사합니다.

    // Sample Lambda function to copy an EBS snapshot to a different Region var AWS = require('aws-sdk'); var ec2 = new AWS.EC2(); // define variables var destinationRegion = 'us-east-1'; var sourceRegion = 'us-east-2'; console.log ('Loading function'); //main function exports.handler = (event, context, callback) => { // Get the EBS snapshot ID from the event details var snapshotArn = event.detail.snapshot_id.split('/'); const snapshotId = snapshotArn[1]; const description = `Snapshot copy from ${snapshotId} in ${sourceRegion}.`; console.log ("snapshotId:", snapshotId); // Load EC2 class and update the configuration to use destination Region to initiate the snapshot. AWS.config.update({region: destinationRegion}); var ec2 = new AWS.EC2(); // Prepare variables for ec2.modifySnapshotAttribute call const copySnapshotParams = { Description: description, DestinationRegion: destinationRegion, SourceRegion: sourceRegion, SourceSnapshotId: snapshotId }; // Execute the copy snapshot and log any errors ec2.copySnapshot(copySnapshotParams, (err, data) => { if (err) { const errorMessage = `Error copying snapshot ${snapshotId} to Region ${destinationRegion}.`; console.log(errorMessage); console.log(err); callback(errorMessage); } else { const successMessage = `Successfully started copy of snapshot ${snapshotId} to Region ${destinationRegion}.`; console.log(successMessage); console.log(data); callback(null, successMessage); } }); };

    Lambda 함수를 EventBridge 콘솔에서 사용하도록 보장하려면 EventBridge 이벤트가 발생하는 리전에서 생성합니다. 자세한 내용은 개발자 안내서AWS Lambda를 참조하세요.

  3. Amazon EventBridge 콘솔(https://console.aws.amazon.com/events/)을 엽니다.

  4. 탐색 창에서 규칙(Rules)을 선택한 후 규칙 생성(Create rule)을 선택합니다.

  5. Step 1: Define rule detail(1단계: 규칙 세부 정보 정의)에 대해 다음을 수행합니다.

    1. Name(이름)과 Description(설명)을 입력합니다.

    2. Event bus(이벤트 버스)의 경우 default(기본값)를 유지합니다.

    3. Enable the rule on the selected event bus(선택한 이벤트 버스에 대해 규칙 활성화)가 설정되었는지 확인합니다.

    4. Event type(이벤트 유형)에서 Rule with an event pattern(이벤트 패턴이 있는 규칙)을 선택합니다.

    5. Next(다음)를 선택합니다.

  6. Step 2: Build event pattern(2단계: 이벤트 패턴 빌드)에서 다음을 수행합니다.

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

    2. Event pattern(이벤트 패턴) 섹션에서 Event source(이벤트 소스)에 대해 AWS service가 선택되어 있는지 확인하고 AWS service에 대해 EC2를 선택합니다.

    3. Event type(이벤트 유형)에서 EBS Snapshot Notification(EBS 스냅샷 알림)을 선택하고 Specific event(s)(특정 이벤트)를 선택한 다음 createSnapshot을 선택합니다.

    4. 특정 결과(Specific result(s))를 선택한 다음 성공(succeeded)을 선택합니다.

    5. Next(다음)를 선택합니다.

  7. Step 3: Select targets(3단계: 대상 선택)에서 다음을 수행합니다.

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

    2. Select target(대상 선택)에서 Lambda function(Lambda 함수)을 선택하고 Function(함수)에서 이전에 생성한 함수를 선택합니다.

    3. Next(다음)를 선택합니다.

  8. Step 4: Configure tags(4단계: 태그 구성)에서 필요한 경우 규칙에 대한 태그를 지정하고 Next(다음)를 선택합니다.

  9. Step 5: Review and create(5단계: 검토 및 생성)에서 규칙을 검토한 다음 Create rule(규칙 생성)을 선택합니다.

이제 규칙 탭에 규칙이 표시됩니다. 표시된 예에서 구성된 이벤트는 다음에 스냅샷을 복사할 때 EBS가 발생시킵니다.