Amazon EventBridge 이벤트 패턴 모범 사례 - 아마존 EventBridge

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

Amazon EventBridge 이벤트 패턴 모범 사례

다음은 이벤트 버스 규칙에서 이벤트 패턴을 정의할 때 고려해야 할 몇 가지 모범 사례입니다.

무한 루프를 작성하지 마세요.

EventBridge에서는 규칙이 반복적으로 실행되는 무한 루프로 이어지는 규칙을 만들 수 있습니다. 예를 들어 규칙은 S3 버킷에서 ACLs 변경된 사항을 감지하고 소프트웨어를 트리거하여 원하는 상태로 변경할 수 있습니다. 규칙을 주의해서 작성하지 않으면 이후에 규칙을 변경하면 규칙이 다시 ACLs 실행되어 무한 루프가 생성됩니다.

이러한 문제를 방지하려면 규칙에 대한 이벤트 패턴을 실제로 대상에 전송하려는 이벤트와만 일치하도록 최대한 정확하게 작성합니다. 위 예시에서는 트리거된 작업이 동일한 규칙을 다시 실행하지 않도록 이벤트와 일치하는 이벤트 패턴을 생성합니다. 예를 들어, 이벤트를 변경한 후가 아니라 잘못된 상태인 것으로 밝혀진 경우에만 ACLs 이벤트를 일치시키는 이벤트 패턴을 규칙에 만드십시오. 자세한 내용은 이벤트 패턴을 최대한 정확하게 구성하세요.이벤트 소스 업데이트를 고려하여 이벤트 패턴의 범위를 지정하세요. 단원을 참조하세요.

무한 루프는 예상보다 높은 요금을 빠르게 야기할 수 있습니다. 또한 제한으로 이어질 수 있으며 이벤트 전송이 지연될 수 있습니다. 간접 호출 속도의 상한선을 모니터링하여 예상치 못한 볼륨 급증에 대한 경고를 받을 수 있습니다.

예산 책정을 통해 요금이 지정된 한도를 초과할 경우에 알림을 받을 수 있습니다. 자세한 내용은 예산을 통해 비용 관리 섹션을 참조하세요.

이벤트 패턴을 최대한 정확하게 구성하세요.

이벤트 패턴이 정확할수록 실제로 원하는 이벤트와만 일치할 가능성이 높아지고, 새 이벤트가 이벤트 소스에 추가되거나 기존 이벤트가 새 속성을 포함하도록 업데이트될 때 예기치 않은 일치를 피할 수 있습니다.

이벤트 패턴에는 다음과 일치하는 필터가 포함될 수 있습니다.

  • 이벤트에 대한 이벤트 메타데이터(예: source, detail-type, account 또는 region)입니다.

  • 이벤트 데이터, 즉 detail 객체 내부의 필드입니다.

  • 이벤트 콘텐츠 또는 detail 객체 내 필드의 실제 값입니다.

대부분의 패턴은 sourcedetail-type 필터만 지정하는 것처럼 단순합니다. 그러나 EventBridge 패턴에는 이벤트의 모든 키 또는 값을 기준으로 필터링할 수 있는 유연성이 포함됩니다. 또한 prefixsuffix 필터와 같은 콘텐츠 필터를 적용하여 패턴의 정밀도를 높일 수 있습니다. 자세한 내용은 Amazon EventBridge 이벤트 패턴에서 비교 연산자 사용 단원을 참조하십시오.

이벤트 소스 및 세부 유형을 필터로 지정하세요.

sourcedetail-type 메타데이터 필드를 사용하여 이벤트 패턴을 더 정확하게 구성하면 무한 루프가 생성되고 원치 않는 이벤트가 일치되는 현상을 줄일 수 있습니다.

둘 이상의 필드 내에서 특정 값을 매칭해야 하는 경우 단일 값 배열 내에 가능한 모든 값을 나열하는 대신 $or 비교 연산자를 사용하세요.

를 통해 AWS CloudTrail전달되는 이벤트의 경우 eventName 필드를 필터로 사용하는 것이 좋습니다.

다음 이벤트 패턴 예제는 Amazon Simple Queue Service 서비스 CreateQueue 또는 SetQueueAttributes 해당 서비스의 이벤트와 CreateKey 일치하거나 해당 AWS Key Management Service 서비스에서 DisableKeyRotation 발생한 이벤트입니다.

{ "detail-type": ["AWS API Call via CloudTrail"], "$or": [{ "source": [ "aws.sqs" ], "detail": { "eventName": [ "CreateQueue", "SetQueueAttributes" ] } }, { "source": [ "aws.kms" ], "detail": { "eventName": [ "CreateKey", "DisableKeyRotation" ] } } ] }

계정 및 리전을 필터로 지정하세요.

이벤트 패턴에 accountregion 필드를 포함하면 교차 계정 또는 교차 리전 이벤트 매칭을 제한할 수 있습니다.

콘텐츠 필터를 지정하세요.

콘텐츠 기반 필터링은 이벤트 패턴의 길이를 최소한으로 유지하면서 이벤트 패턴 정밀도를 개선하는 데 도움이 될 수 있습니다. 예를 들어 가능한 모든 숫자 값을 나열하는 대신 숫자 범위를 기반으로 매칭하는 것이 유용할 수 있습니다.

자세한 내용은 Amazon EventBridge 이벤트 패턴에서 비교 연산자 사용 단원을 참조하십시오.

이벤트 소스 업데이트를 고려하여 이벤트 패턴의 범위를 지정하세요.

이벤트 패턴을 생성할 때 이벤트 스키마와 이벤트 도메인이 시간이 지날수록 진화하고 확장할 수 있다는 점을 고려해야 합니다. 여기서도 이벤트 패턴을 최대한 정확하게 구성하면 이벤트 소스가 변경되거나 확장되는 경우 예기치 않은 일치를 줄일 수 있습니다.

예를 들어 결제 관련 이벤트를 게시하는 새 마이크로 서비스의 이벤트와 매칭한다고 가정해 보겠습니다. 처음에 서비스는 도메인 acme.payments를 사용하고 단일 이벤트인 Payment accepted를 게시합니다.

{ "detail-type": "Payment accepted", "source": "acme.payments", "detail": { "type": "credit", "amount": "100", "date": "2023-06-10", "currency": "USD" } } }

이때 결제 허용 이벤트와 일치하는 간단한 이벤트 패턴을 생성할 수 있습니다.

{ “source” : “acme.payments” }

그러나 서비스가 나중에 거부된 결제에 대한 새 이벤트를 도입한다고 가정해 보겠습니다.

{ "detail-type": "Payment rejected", "source": "acme.payments", "detail": { } }

이 경우 생성한 단순 이벤트 패턴은 이제 Payment acceptedPayment rejected 이벤트와 모두 일치합니다. EventBridge 두 가지 유형의 이벤트를 지정된 처리 대상으로 라우팅하므로 처리 실패와 추가 처리 비용이 발생할 수 있습니다.

이벤트 패턴의 범위를 Payment accepted 이벤트로만 지정하려면 최소한 sourcedetail-type을 지정해야 합니다.

{ "detail-type": "Payment accepted", "source": "acme.payments" } }

이벤트 패턴에 계정과 리전을 지정하여 교차 계정 또는 교차 리전 이벤트가 이 규칙과 일치하는 경우에 추가로 제한할 수도 있습니다.

{ "account": "012345678910", "source": "acme.payments", "region": "AWS-Region", "detail-type": "Payment accepted" }

이벤트 패턴을 검증하세요.

규칙이 원하는 이벤트와 일치하는지 확인하려면 이벤트 패턴을 검증하는 것이 좋습니다. EventBridge 콘솔을 사용하거나 다음을 사용하여 이벤트 패턴을 검증할 수 있습니다API.