자습서: 소스 이벤트를 필터링하는 EventBridge 파이프 생성 - Amazon EventBridge

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

자습서: 소스 이벤트를 필터링하는 EventBridge 파이프 생성

이 자습서에서는 DynamoDB 스트림 소스를 Amazon SQS 대기열 대상에 연결하는 파이프를 생성합니다. 여기에는 대기열에 전달할 이벤트를 필터링할 때 파이프에서 사용할 이벤트 패턴을 지정하는 것이 포함됩니다. 그런 다음 파이프를 테스트하여 원하는 이벤트만 전달되는지 확인합니다.

사전 조건: 소스 및 대상 생성

파이프를 만들기 전에 파이프가 연결할 소스와 대상을 만들어야 합니다. 이 경우 Amazon DynamoDB 데이터 스트림은 파이프 소스 역할을 하고 Amazon SQS 대기열은 파이프 대상 역할을 합니다.

이 단계를 단순화하기 위해 AWS CloudFormation 를 사용하여 소스 및 대상 리소스를 배포할 수 있습니다. 이를 위해 다음 리소스를 정의하는 CloudFormation 템플릿을 생성해야 합니다.

  • 파이프 소스

    DynamoDB 테이블의 항목 변경 사항에 대한 정렬된 정보 흐름을 제공하기 위해 활성화된 스트림이 있는 Amazon DynamoDB 테이블(이름: pipe-tutorial-source)입니다.

  • 파이프 대상

    파이프에서 DynamoDB 이벤트 스트림을 수신하기 위한 Amazon SQS 대기열(이름: pipe-tutorial-target).

파이프 리소스 프로비저닝을 위한 CloudFormation 템플릿을 만들려면
  1. 아래 AWS CloudFormation 사전 조건 생성을 위한 템플릿 섹션의 JSON 템플릿 텍스트를 복사합니다.

  2. 템플릿을 JSON 파일(예: ~/pipe-tutorial-resources.json)로 저장합니다.

다음으로 방금 생성한 템플릿 파일을 사용하여 CloudFormation 스택을 프로비저닝합니다.

참고

CloudFormation 스택을 생성하면 프로비저닝하는 AWS 리소스에 대한 요금이 청구됩니다.

AWS CLI를 사용하여 자습서 사전 조건 프로비저닝
  • 다음 CLI 명령을 실행합니다. 여기서 --template-body는 템플릿 파일의 위치를 지정합니다.

    aws cloudformation create-stack --stack-name pipe-tuturial-resources --template-body file://~/pipe-tutorial-resources.json
CloudFormation 콘솔을 사용하여 자습서 사전 조건 프로비저닝
  1. https://console.aws.amazon.com/cloudformation AWS CloudFormation 콘솔을 엽니다.

  2. 스택을 선택한 다음 스택 생성을 선택하고 새 리소스 사용(표준)을 선택합니다.

    CloudFormation에 스택 생성 마법사가 표시됩니다.

  3. 사전 조건 - 템플릿 준비에서 템플릿 준비 완료를 선택합니다.

  4. 템플릿 지정에서 템플릿 파일 업로드를 선택한 다음 파일을 선택하고 다음을 선택합니다.

  5. 스택과 해당 스택이 프로비저닝할 리소스를 구성합니다.

    • 스택 이름pipe-tuturial-resources을 입력합니다.

    • 파라미터의 경우 DynamoDB 테이블 및 Amazon SQS 대기열의 기본 이름을 그대로 둡니다.

    • 다음을 선택합니다.

  6. 다음을 선택한 후 제출을 선택합니다.

    CloudFormation에서는 스택을 생성하고 템플릿에 정의된 리소스를 프로비저닝합니다.

CloudFormation에 대한 자세한 내용은 AWS CloudFormation 사용 설명서What is AWS CloudFormation?를 참조하세요.

1단계: 파이프 생성

파이프 소스와 대상이 프로비저닝되었으므로 이제 파이프를 생성하여 두 서비스를 연결할 수 있습니다.

EventBridge 콘솔을 사용하여 파이프 생성
  1. Amazon EventBridge 콘솔(https://console.aws.amazon.com/events/)을 엽니다.

  2. 탐색 창에서 파이프를 선택합니다.

  3. 파이프 생성을 선택합니다.

  4. 이름에 파이프 이름을 pipe-tutorial로 지정합니다.

  5. DynamoDB 데이터 스트림 소스를 지정합니다.

    1. 세부 정보에서 소스에 대해 DynamoDB 데이터 스트림을 선택합니다.

      EventBridge는 DynamoDB 관련 소스 구성 설정을 표시합니다.

    2. DynamoDB 스트림의 경우 pipe-tutorial-source를 선택합니다.

      시작 위치를 기본값인 Latest로 설정된 상태로 유지합니다.

    3. 다음을 선택합니다.

  6. 이벤트 패턴을 지정하고 테스트하여 이벤트를 필터링합니다.

    필터링을 사용하면 파이프가 보강 또는 대상으로 보내는 이벤트를 제어할 수 있습니다. 파이프는 이벤트 패턴과 일치하는 이벤트만 보강 또는 대상으로 보냅니다.

    자세한 내용은 Amazon EventBridge Pipes의 이벤트 필터링 단원을 참조하십시오.

    참고

    보강 또는 대상으로 전송된 이벤트에 대해서만 요금이 청구됩니다.

    1. 샘플 이벤트 - 선택 사항에서 AWS 이벤트를 선택한 상태로 두고 DynamoDB 스트림 샘플 이벤트 1이 선택되었는지 확인합니다.

      이벤트 패턴을 테스트하는 데 사용할 샘플 이벤트입니다.

    2. 이벤트 패턴에서 다음 이벤트 패턴을 입력합니다.

      { "eventName": ["INSERT", "MODIFY"] }
    3. 패턴 테스트를 선택합니다.

      EventBridge는 샘플 이벤트가 이벤트 패턴과 일치한다는 메시지를 표시합니다. 샘플 이벤트에 INSERT라는 eventName 값이 있기 때문입니다.

    4. 다음을 선택합니다.

  7. 보강 지정을 건너뛰려면 다음을 선택합니다.

    이 예시에서는 보강을 선택하지 않습니다. 강화를 사용하면 소스의 데이터를 대상으로 보내기 전에 개선하는 서비스를 선택할 수 있습니다. 자세한 내용은 Amazon EventBridge Pipes의 이벤트 보강을 참조하세요.

  8. Amazon SQS 대기열을 파이프 대상으로 지정합니다.

    1. 세부 정보에서 대상 서비스에 대해 Amazon SQS 대기열을 선택합니다.

    2. 대기열에서 pipe-tutorial-target을 선택합니다.

    3. 대상 입력 변환기 섹션은 비워둡니다.

      자세한 내용은 Amazon EventBridge Pipes 입력 변환 단원을 참조하십시오.

  9. 파이프 생성을 선택합니다.

    EventBridge는 파이프를 생성하고 파이프 세부 정보 페이지를 표시합니다. 상태가 Running으로 업데이트되면 파이프가 준비된 것입니다.

2단계: 파이프 필터 이벤트 확인

파이프가 설정되었지만 아직 테이블에서 이벤트를 수신하지 않았습니다.

파이프를 테스트하려면 DynamoDB 테이블의 항목을 업데이트해야 합니다. 각 업데이트는 DynamoDB 스트림이 파이프로 보내는 이벤트를 생성합니다. 지정한 이벤트 패턴과 일치하는 것도 있고 그렇지 않은 것도 있습니다. 그런 다음 Amazon SQS 대기열을 검사하여 파이프가 이벤트 패턴과 일치하는 이벤트만 전송했는지 확인할 수 있습니다.

테이블 항목을 업데이트하여 이벤트를 생성합니다.
  1. https://console.aws.amazon.com/dynamodb/에서 DynamoDB 콘솔을 엽니다.

  2. 왼쪽 탐색 메뉴에서 테이블을 선택합니다. pipe-tutorial-source 테이블을 선택합니다.

    DynamoDB는 pipe-tutorial-source에 대한 테이블 세부 정보 페이지를 표시합니다.

  3. 테이블 항목 탐색을 선택한 다음 항목 생성을 선택합니다.

    DynamoDB는 항목 생성 페이지를 표시합니다.

  4. 속성에서 새 테이블 항목을 생성합니다.

    1. 앨범의 경우 Album A를 입력합니다.

    2. 아티스트Artist A를 입력합니다.

    3. 항목 생성을 선택합니다.

  5. 테이블 항목 업데이트:

    1. 반환된 항목에서 앨범 A를 선택합니다.

    2. 새 속성 추가를 선택한 다음 문자열을 선택합니다.

    3. Song A 값으로 Song의 새 값을 입력합니다.

    4. 변경 사항 저장을 선택합니다.

  6. 테이블 항목 삭제:

    1. 반환된 항목에서 앨범 A를 확인합니다.

    2. 작업 메뉴에서 항목 삭제를 선택합니다.

테이블 항목을 세 번 업데이트했습니다. 그러면 DynamoDB 데이터 스트림에 대한 세 가지 이벤트가 생성됩니다.

  • 항목을 생성할 때의 INSERT 이벤트입니다.

  • 항목에 속성을 추가했을 때의 MODIFY 이벤트입니다.

  • 항목을 삭제했을 때 REMOVE 이벤트입니다.

그러나 파이프에 대해 지정한 이벤트 패턴은 INSERT 또는 MODIFY 이벤트가 아닌 모든 이벤트를 필터링해야 합니다. 다음으로 파이프가 예상 이벤트를 대기열에 전달했는지 확인합니다.

예상된 이벤트가 대기열에 전달되었는지 확인
  1. https://console.aws.amazon.com/sqs/에서 Amazon SQS 콘솔을 엽니다.

  2. pipe-tutorial-target 대기열을 선택합니다.

    Amazon SQS는 대기열 세부 정보 페이지를 표시합니다.

  3. 메시지 전송 및 수신을 선택한 다음 메시지 수신에서 메시지 폴링을 선택합니다.

    대기열은 파이프를 폴링한 다음 수신한 이벤트를 나열합니다.

  4. 전달된 이벤트 JSON을 보려면 이벤트 이름을 선택합니다.

대기열에는 두 개의 이벤트가 있어야 합니다. 하나는 eventNameINSERT고 다른 하나는 eventNameMODIFY입니다. 하지만 파이프는 테이블 항목을 삭제하는 이벤트를 전달하지 않았습니다. 해당 이벤트에는 REMOVE라는 eventName이 있었고 이는 파이프에 지정한 이벤트 패턴과 일치하지 않았기 때문입니다.

3단계: 리소스 정리

먼저 파이프 자체를 삭제합니다.

EventBridge 콘솔을 사용하여 파이프 삭제
  1. Amazon EventBridge 콘솔(https://console.aws.amazon.com/events/)을 엽니다.

  2. 탐색 창에서 파이프를 선택합니다.

  3. pipe-tutorial 파이프를 선택하고 삭제를 선택합니다.

그런 다음 CloudFormation 스택을 삭제하여 스택 내에 프로비저닝된 리소스의 지속적인 사용에 대한 요금이 청구되지 않도록 합니다.

AWS CLI를 사용하여 자습서 사전 조건 삭제
  • 다음 CLI 명령을 실행합니다. 여기서 --stack-name은 스택 이름을 지정합니다.

    aws cloudformation delete-stack --stack-name pipe-tuturial-resources
AWS CloudFormation 콘솔을 사용하여 자습서 사전 조건 삭제
  1. https://console.aws.amazon.com/cloudformation AWS CloudFormation 콘솔을 엽니다.

  2. 스택 페이지에서 스택을 선택한 다음 삭제를 선택합니다.

  3. 삭제를 선택하여 작업을 확인합니다.

AWS CloudFormation 사전 조건 생성을 위한 템플릿

아래 JSON을 사용하여 이 자습서에 필요한 소스 및 대상 리소스를 프로비저닝하기 위한 CloudFormation 템플릿을 생성합니다.

{ "AWSTemplateFormatVersion": "2010-09-09", "Description" : "Provisions resources to use with the EventBridge Pipes tutorial. You will be billed for the AWS resources used if you create a stack from this template.", "Parameters" : { "SourceTableName" : { "Type" : "String", "Default" : "pipe-tutorial-source", "Description" : "Specify the name of the table to provision as the pipe source, or accept the default." }, "TargetQueueName" : { "Type" : "String", "Default" : "pipe-tutorial-target", "Description" : "Specify the name of the queue to provision as the pipe target, or accept the default." } }, "Resources": { "PipeTutorialSourceDynamoDBTable": { "Type": "AWS::DynamoDB::Table", "Properties": { "AttributeDefinitions": [{ "AttributeName": "Album", "AttributeType": "S" }, { "AttributeName": "Artist", "AttributeType": "S" } ], "KeySchema": [{ "AttributeName": "Album", "KeyType": "HASH" }, { "AttributeName": "Artist", "KeyType": "RANGE" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 10, "WriteCapacityUnits": 10 }, "StreamSpecification": { "StreamViewType": "NEW_AND_OLD_IMAGES" }, "TableName": { "Ref" : "SourceTableName" } } }, "PipeTutorialTargetQueue": { "Type": "AWS::SQS::Queue", "Properties": { "QueueName": { "Ref" : "TargetQueueName" } } } } }