EventBridge에서 이벤트 패턴 생성 - Amazon EventBridge

EventBridge에서 이벤트 패턴 생성

이벤트 패턴을 만들려면 이벤트 패턴에서 매칭할 이벤트의 필드를 지정합니다. 매칭에 사용하는 필드만 지정하세요.

예를 들어, 다음 이벤트 패턴 예제에서는 최상위 필드 "source""detail-type""detail" 객체 필드 내 "state" 필드라는 세 개의 필드에 대한 값만 제공합니다. EventBridge는 규칙을 적용할 때 이벤트의 다른 모든 필드를 무시합니다.

{ "source": ["aws.ec2"], "detail-type": ["EC2 Instance State-change Notification"], "detail": { "state": ["terminated"] } }

이벤트와 이벤트 패턴을 매칭하려면 이벤트에 이벤트 패턴에 나열된 모든 필드 이름이 포함되어 있어야 합니다. 필드 이름은 같은 중첩 구조를 가진 이벤트에도 나타나야 합니다.

이벤트에 매칭되는 이벤트 패턴을 작성할 때는 TestEventPattern API 또는 test-event-pattern CLI 명령을 사용하여 패턴이 올바른 이벤트와 매칭되는지 테스트할 수 있습니다. 자세한 내용은 TestEventPattern을 참조하세요.

이벤트 값 일치

이벤트 패턴에서 매칭할 값은 대괄호("[", "]")로 묶인 JSON 배열에 있으므로 여러 값을 제공할 수 있습니다. 예를 들어 Amazon EC2 또는 AWS Fargate의 이벤트를 매칭하려면 "source" 필드 값이 "aws.ec2" 또는 "aws.fargate"인 이벤트와 일치하는 다음 패턴을 사용할 수 있습니다.

{ "source": ["aws.ec2", "aws.fargate"] }

자세한 내용은 여러 필드 값에서 일치 단원을 참조하십시오.

Amazon EventBridge 이벤트 패턴에서 비교 연산자 사용

Amazon EventBridge는 이벤트 패턴을 사용하여 선언적 콘텐츠 필터링을 지원합니다. 콘텐츠 필터링을 사용하면 매우 특정한 조건에서만 이벤트와 일치하는 복잡한 이벤트 패턴을 작성할 수 있습니다. 예를 들어 다음과 같은 경우 이벤트와 일치하는 이벤트 패턴을 생성할 수 있습니다.

  • 이벤트 필드는 특정 숫자 범위 내에 있습니다.

  • 이벤트는 특정 IP 주소에서 발생합니다.

  • 이벤트 JSON에는 특정 필드가 없습니다.

자세한 내용은 비교 연산자 단원을 참조하십시오.

이벤트 패턴 생성 시 고려 사항

다음은 이벤트 패턴을 구성할 때 고려해야 할 몇 가지 사항입니다.

  • EventBridge는 이벤트 패턴에 포함되지 않은 이벤트의 필드를 무시합니다. 그 결과 이벤트 패턴에 나타나지 않는 필드에 "*": "*" 와일드카드가 있습니다.

  • 이벤트 패턴이 매칭하는 값은 JSON 규칙을 따릅니다. 따옴표(“)로 묶인 문자열, 숫자 및 키워드(true, falsenull)를 포함할 수 있습니다.

  • 문자열의 경우 EventBridge는 대소문자 변환이나 기타 문자열 정규화 없이 정확한 문자별 일치를 사용합니다.

  • 숫자의 경우 EventBridge는 문자열 표현을 사용합니다. 예를 들어 300, 300.0 및 3.0e2는 동일한 것으로 간주되지 않습니다.

  • 동일한 JSON 필드에 여러 패턴이 지정된 경우 EventBridge는 마지막 패턴만 사용합니다.

  • EventBridge는 사용할 이벤트 패턴을 컴파일할 때 점(.)을 결합 문자로 사용합니다.

    즉, EventBridge는 다음 이벤트 패턴을 동일하게 처리합니다.

    ## has no dots in keys { "detail" : { "state": { "status": [ "running" ] } } } ## has dots in keys { "detail" : { "state.status": [ "running" ] } }

    그리고 두 이벤트 패턴이 모두 다음 두 이벤트와 일치합니다.

    ## has no dots in keys { "detail" : { "state": { "status": "running" } } } ## has dots in keys { "detail" : { "state.status": "running" } }
    참고

    이는 현재 EventBridge 동작을 설명하며, 변경되지 않을 것이라고 간주해서는 안 됩니다.

  • 중복된 필드를 포함하는 이벤트 패턴은 유효하지 않습니다. 패턴에 중복 필드가 포함된 경우 EventBridge는 최종 필드 값만 고려합니다.

    예를 들어 다음 이벤트 패턴은 동일한 이벤트와 일치합니다.

    ## has duplicate keys { "source": ["aws.s3"], "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["s3.amazonaws.com"], "eventSource": ["sns.amazonaws.com"] } } ## has unique keys { "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["sns.amazonaws.com"] } }

    그리고 EventBridge는 다음 두 이벤트를 동일하게 처리합니다.

    ## has duplicate keys { "source": ["aws.s3"], "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": [ { "eventSource": ["s3.amazonaws.com"], "eventSource": ["sns.amazonaws.com"] } ] } ## has unique keys { "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": [ { "eventSource": ["sns.amazonaws.com"] } ] }
    참고

    이는 현재 EventBridge 동작을 설명하며, 변경되지 않을 것이라고 간주해서는 안 됩니다.