Amazon의 이벤트 패턴에 사용되는 비교 연산자 EventBridge - 아마존 EventBridge

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

Amazon의 이벤트 패턴에 사용되는 비교 연산자 EventBridge

아래에는 에서 사용할 수 있는 모든 비교 연산자가 요약되어 있습니다. EventBridge

비교 연산자는 $oranything-but을 제외하고 리프 노드에서만 작동합니다.

비교 규칙 구문

위치가 “New York”이고 요일이 “Monday”임

"Location": [ "New York" ], "Day": ["Monday"]

그 외에는 아무것도 없습니다. 상태는 “초기화 중”을 제외한 모든 값입니다.

"state": [ { "anything-but": "initializing" } ]

(로 시작) 을 제외한 모든 항목

지역은 미국에 있지 않습니다.

"Region": [ { "anything-but": {"prefix": "us-" } } ]

(로 끝남) 을 제외한 모든 것

FileName .png 확장자로 끝나지 않습니다.

"FileName": [ { "anything-but": { "suffix": ".png" } } ]

그 외 모든 것 (대소문자 무시)

상태는 “초기화 중” 또는 기타 대소문자 변형 (예: "”) 이외의 모든 값입니다. INITIALIZING

"state": : [{ "anything-but": { "equals-ignore-case": "initializing" }}]}

와일드카드 사용 이외의 모든 것

FileName 를 포함하는 파일 경로가 아닙니다. /lib/

"FilePath" : [{ "anything-but": { "wildcard": "*/lib/*" }}]

다음으로 시작

지역은 미국입니다.

"Region": [ {"prefix": "us-" } ]

로 시작 (대소문자 무시)

서비스 이름은 대소문자를 불문하고 “eventb”로 시작합니다.

{"service" : [{ "prefix": { "equals-ignore-case": "eventb" }}]}

비어 있음

LastName 비어 있습니다.

"LastName": [""]

같음

이름이 “Alice”임

"Name": [ "Alice" ]

같음(대/소문자 무시)

이름이 “Alice”임

"Name": [ { "equals-ignore-case": "alice" } ]

다음으로 끝남

FileName .png 확장자로 끝납니다.

"FileName": [ { "suffix": ".png" } ]

로 끝남 (대소문자 무시)

서비스 이름은 “tbridge”라는 문자로 끝나거나 “" TBRIDGE 와 같은 기타 대/소문자 변형으로 끝납니다.

{"service" : [{ "suffix": { "equals-ignore-case": "tBridge" }}]}

존재함

ProductName 이 존재합니다

"ProductName": [ { "exists": true } ]

존재하지 않음

ProductName 존재하지 않습니다

"ProductName": [ { "exists": false } ]

아님

날씨는 “Raining”이 아님

"Weather": [ { "anything-but": [ "Raining" ] } ]

Null

UserID가 null임

"UserID": [ null ]

숫자(같음)

가격은 100임

"Price": [ { "numeric": [ "=", 100 ] } ]

숫자(범위)

가격이 10을 초과하고 20보다 작거나 같음

"Price": [ { "numeric": [ ">", 10, "<=", 20 ] } ]

Or

PaymentType “신용카드” 또는 “직불카드”입니다.

"PaymentType": [ "Credit", "Debit"]

또는(여러 필드)

위치가 'New York'이고 요일이 'Monday'임

"$or": [ { "Location": [ "New York" ] }, { "Day": [ "Monday" ] } ]

와일드카드

‘dir’ 폴더 내에 있는 확장명이.png인 모든 파일

"FileName": [ { "wildcard": "dir/*.png" } ]

접두사 일치

이벤트 소스에 있는 값의 접두사에 따라 이벤트를 매칭할 수 있습니다. 문자열 값에 접두사 일치를 사용할 수 있습니다.

예를 들어 다음 이벤트 패턴은 "time" 필드가 "time": "2017-10-02T18:43:48Z"와 같이 "2017-10-02"로 시작된 모든 이벤트와 일치합니다.

{ "time": [ { "prefix": "2017-10-02" } ] }

대소문자를 무시하고 접두사 매칭

다음과 함께 사용하여 equals-ignore-case 값이 시작하는 문자의 대/소문자에 관계없이 접두사 값을 일치시킬 수도 있습니다. prefix.

예를 들어, 다음 이벤트 패턴은 service 필드가 해당 문자열로 시작하는 모든 이벤트와 일치하지만 EventB EVENTBeventb, 또는 해당 문자의 다른 대/소문자로 시작하는 모든 이벤트와 일치합니다.

{ "detail": {"service" : [{ "prefix": { "equals-ignore-case": "EventB" }}]} }

접미사 일치

이벤트 소스에 있는 값의 접미사에 따라 이벤트를 매칭할 수 있습니다. 문자열 값에 접미사 일치를 사용할 수 있습니다.

예를 들어 다음 이벤트 패턴은 "FileName" 필드가 .png 파일 확장명으로 끝나는 모든 이벤트와 일치합니다.

{ "FileName": [ { "suffix": ".png" } ] }

대소문자를 무시하고 접미사 매칭

다음과 함께 사용하면 값이 끝나는 문자의 대/소문자에 상관없이 접미사 값을 일치시킬 수도 있습니다. equals-ignore-case suffix.

예를 들어, 다음 이벤트 패턴은 FileName 필드가 문자열로 끝나는 모든 이벤트와 .PNG 일치하거나 해당 문자의 다른 .png 대문자도 일치합니다.

{ "detail": {"FileName" : [{ "suffix": { "equals-ignore-case": ".png" }}]} }

Anything-but 일치

일치하는 항목 이외의 모든 항목은 규칙에 지정된 항목 이외의 모든 항목과 일치합니다.

문자열만 포함하거나 숫자만 포함하는 목록을 포함하여 문자열 및 숫자 값과 함께 Anything-but 일치를 사용할 수 있습니다.

다음 이벤트 패턴은 문자열 및 숫자와의 anything-but 일치를 보여줍니다.

{ "detail": { "state": [ { "anything-but": "initializing" } ] } } { "detail": { "x-limit": [ { "anything-but": 123 } ] } }

다음 이벤트 패턴은 문자열 목록과의 anything-but 일치를 보여줍니다.

{ "detail": { "state": [ { "anything-but": [ "stopped", "overloaded" ] } ] } }

다음 이벤트 패턴은 숫자 목록과의 anything-but 일치를 보여줍니다.

{ "detail": { "x-limit": [ { "anything-but": [ 100, 200, 300 ] } ] } }

대소문자를 무시하고 매칭하는 것 외에는 아무 것도 없습니다.

와 함께 anything-but 사용하여 equals-ignore-case 대/소문자를 구분하지 않고 문자열 값을 일치시킬 수도 있습니다.

다음 이벤트 패턴은 “초기화”, "INITIALIZING“, “초기화” 문자열 또는 해당 문자의 기타 대소문자를 포함하지 않는 state 필드와 일치합니다.

{ "detail": {"state" : [{ "anything-but": { "equals-ignore-case": "initializing" }}]} }

와 함께 anything-but 사용하여 equals-ignore-case 값 목록과 일치시킬 수도 있습니다.

{ "detail": {"state" : [{ "anything-but": { "equals-ignore-case": ["initializing", "stopped"] }}]} }

접두사와 일치하는 것 외에는 아무 것도 없습니다.

와 함께 anything-but 사용하여 prefix 지정된 값으로 시작하지 않는 문자열 값을 일치시킬 수 있습니다. 여기에는 단일 값 또는 값 목록이 포함됩니다.

다음 이벤트 패턴은 필드에 "init" 접두사가 없는 모든 이벤트와 일치하는 항목을 제외한 모든 이벤트를 보여줍니다. "state"

{ "detail": { "state": [ { "anything-but": { "prefix": "init" } } ] } }

다음 이벤트 패턴은 접두사 값 목록에 사용된 일치 항목 이외의 모든 항목을 보여줍니다. 이 이벤트 패턴은 접두사 또는 필드에 접두사가 "init" 없는 모든 이벤트와 일치합니다. "stop" "state"

{ "detail": { "state" : [{ "anything-but": { "prefix": ["init", "stop"] } } ] } } }

접미사가 일치하는 경우를 제외한 모든 항목

와 함께 anything-but 사용하여 suffix 지정된 값으로 끝나지 않는 문자열 값을 일치시킬 수 있습니다. 여기에는 단일 값 또는 값 목록이 포함됩니다.

다음 이벤트 패턴은 로 끝나지 않는 FileName 필드의 모든 값과 .txt 일치합니다.

{ "detail": { "FileName": [ { "anything-but": { "suffix": ".txt" } } ] } }

다음 이벤트 패턴은 접미사 값 목록에 사용된 일치 항목 외에는 모든 항목을 보여줍니다. 이 이벤트 패턴은 또는 로 끝나지 않는 모든 FileName 필드 값과 일치합니다. .txt .rtf

{ "detail": { "FileName": [ { "anything-but": { "suffix": [".txt", ".rtf"] } } ] } }

와일드카드를 사용한 일치 이외의 모든 항목

지정한 값 내에서 와일드카드 문자 (*) 를 사용하여 매칭을 제외한 모든 항목에 사용할 수 있습니다. 여기에는 단일 값이나 값 목록이 포함됩니다.

다음 이벤트 패턴은 포함하지 않는 FileName 필드의 모든 값과 /lib/ 일치합니다.

{ "detail": { "FilePath" : [{ "anything-but": { "wildcard": "*/lib/*" }}] } }

다음 이벤트 패턴은 와일드카드를 포함한 값 목록에 사용된 일치 항목 이외의 모든 항목을 보여줍니다. 이 이벤트 패턴은 또는 중 하나를 포함하지 않는 FileName 필드의 모든 값과 일치합니다. /lib/ /bin/

{ "detail": { "FilePath" : [{ "anything-but": { "wildcard": ["*/lib/*", "*/bin/*"] }}] } }

자세한 내용은 와일드카드를 사용한 매칭 단원을 참조하십시오.

숫자 일치

숫자 매칭은 JSON 숫자인 값과 함께 작동합니다. -5.0e9와 +5.0e9 사이의 값으로 제한되며 정밀도는 15자리(소수점 오른쪽의 6자리)입니다.

다음은 모든 필드에 해당하는 이벤트만 매칭되는 이벤트 패턴의 숫자 일치를 보여줍니다.

{ "detail": { "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ], "d-count": [ { "numeric": [ "<", 10 ] } ], "x-limit": [ { "numeric": [ "=", 3.018e2 ] } ] } }

IP 주소 일치

IPv4및 IPv6 주소에 대해 IP 주소 매칭을 사용할 수 있습니다. 다음 이벤트 패턴은 10.0.0으로 시작하고 0에서 255 사이의 숫자로 끝나는 IP 주소와 일치하는 IP 주소를 보여줍니다.

{ "detail": { "sourceIPAddress": [ { "cidr": "10.0.0.0/24" } ] } }

Exists 일치

Exists 매칭은 이벤트에 필드가 있는지 여부에 따라 작동합니다. JSON

Exists 일치는 리프 노드에서만 작동합니다. 중간 노드에서는 작동하지 않습니다.

다음 이벤트 패턴은 detail.state 필드가 있는 모든 이벤트와 일치합니다.

{ "detail": { "state": [ { "exists": true } ] } }

이전 이벤트 패턴은 다음 이벤트와 일치합니다.

{ "version": "0", "id": "7bf73129-1428-4cd3-a780-95db273d1602", "detail-type": "EC2 Instance State-change Notification", "source": "aws.ec2", "account": "123456789012", "time": "2015-11-11T21:29:54Z", "region": "us-east-1", "resources": ["arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1111"], "detail": { "instance-id": "i-abcd1111", "state": "pending" } }

이전 이벤트 패턴은 detail.state 필드가 없으므로 다음 이벤트와 NOT 일치합니다.

{ "detail-type": [ "EC2 Instance State-change Notification" ], "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-02ebd4584a2ebd341" ], "detail": { "c-count" : { "c1" : 100 } } }

E 매칭 quals-ignore-case

E quals-ignore-case 매칭은 대소문자를 구분하지 않고 문자열 값에 적용됩니다.

다음 이벤트 패턴은 대소문자를 구분하지 않고 지정된 문자열과 일치하는 detail-type 필드가 있는 모든 이벤트와 일치합니다.

{ "detail-type": [ { "equals-ignore-case": "ec2 instance state-change notification" } ] }

이전 이벤트 패턴은 다음 이벤트와 일치합니다.

{ "detail-type": [ "EC2 Instance State-change Notification" ], "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-02ebd4584a2ebd341" ], "detail": { "c-count" : { "c1" : 100 } } }

와일드카드를 사용한 매칭

와일드카드 문자(*)를 사용하여 이벤트 패턴의 문자열 값을 매칭할 수 있습니다.

참고

현재 와일드카드 문자는 이벤트 버스 규칙에서만 지원됩니다.

이벤트 패턴에서 와일드카드를 사용할 때 고려할 사항:

  • 주어진 문자열 값에 와일드카드 문자를 원하는 수만큼 지정할 수 있지만 연속된 와일드카드 문자는 지원되지 않습니다.

  • EventBridge 와일드카드 필터에서 백슬래시 문자 (\) 를 사용하여 리터럴 * 및\ 문자를 지정할 수 있습니다.

    • 문자열 \*은 리터럴 * 문자를 나타냅니다.

    • 문자열 \\은 리터럴 \ 문자를 나타냅니다.

    백슬래시를 사용하여 다른 문자를 이스케이프 처리하는 것은 지원되지 않습니다.

와일드카드 및 이벤트 패턴 복잡성

와일드카드를 사용하는 규칙의 복잡성에는 제한이 있습니다. 규칙이 너무 복잡하면 규칙을 만들려고 InvalidEventPatternException 하면 an을 EventBridge 반환합니다. 규칙에서 이러한 오류가 발생하는 경우 아래 지침을 사용하여 이벤트 패턴의 복잡성을 줄이는 것이 좋습니다.

  • 와일드카드 문자 사용 횟수 줄이기

    가능한 여러 값과 매칭해야 하는 경우에만 와일드카드 문자를 사용하세요. 예를 들어 동일한 리전의 이벤트 버스와 매칭하려는 다음 이벤트 패턴을 살펴보세요.

    { "EventBusArn": [ { "wildcard": "*:*:*:*:*:event-bus/*" } ] }

    위의 경우, 의 많은 ARN 섹션은 이벤트 버스가 위치한 지역을 직접 기반으로 합니다. 따라서 us-east-1 리전을 사용하는 경우 원하는 값과 여전히 일치하는 덜 복잡한 패턴은 다음을 예로 들 수 있습니다.

    { "EventBusArn": [ { "wildcard": "arn:aws:events:us-east-1:*:event-bus/*" } ] }
  • 와일드카드 문자 뒤에 나오는 반복되는 문자 시퀀스 줄이기

    와일드카드를 사용한 후 동일한 문자 시퀀스가 여러 번 나타나면 이벤트 패턴 처리가 더 복잡해집니다. 이벤트 패턴을 재구성하여 반복되는 시퀀스를 최소화하세요. 예를 들어 모든 사용자의 파일 이름 doc.txt 파일과 일치하는 다음 예를 살펴보세요.

    { "FileName": [ { "wildcard": "/Users/*/dir/dir/dir/dir/dir/doc.txt" } ] }

    doc.txt 파일이 지정된 경로에서만 발생한다는 것을 알고 있다면 다음과 같은 방법으로 반복되는 문자 시퀀스를 줄일 수 있습니다.

    { "FileName": [ { "wildcard": "/Users/*/doc.txt" } ] }

여러 일치가 있는 복잡한 예제

여러 매칭 기준을 결합하여 더 복잡한 이벤트 패턴으로 만들 수 있습니다. 예를 들어 다음 이벤트 패턴은 anything-butnumeric을 결합합니다.

{ "time": [ { "prefix": "2017-10-02" } ], "detail": { "state": [ { "anything-but": "initializing" } ], "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ], "d-count": [ { "numeric": [ "<", 10 ] } ], "x-limit": [ { "anything-but": [ 100, 200, 300 ] } ] } }
참고

이벤트 패턴을 작성할 때 키를 두 번 이상 포함하면 마지막 참조가 이벤트를 평가하는 데 사용됩니다. 예를 들어, 다음 패턴의 경우:

{ "detail": { "location": [ { "prefix": "us-" } ], "location": [ { "anything-but": "us-east" } ] } }

location을 평가할 때는 { "anything-but": "us-east" }만 고려됩니다.

$or 일치가 있는 복잡한 예제

여러 필드에서 일치하는 필드 값이 있는지 확인하는 복잡한 이벤트 패턴을 생성할 수도 있습니다. 여러 필드의 값 중 하나라도 일치하는 경우 $or를 사용하여 일치하는 이벤트 패턴을 만듭니다.

$or 구성의 개별 필드에 대한 패턴 일치에 숫자 일치배열 등의 다른 필터 유형을 포함할 수 있습니다.

다음과 같은 조건 중 하나라도 충족되면 다음 이벤트 패턴이 일치합니다.

  • c-count 필드가 0보다 크거나 5 이하입니다.

  • d-count 필드가 10보다 작습니다.

  • x-limit 필드는 3.018e2와 같습니다.

{ "detail": { "$or": [ { "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ] }, { "d-count": [ { "numeric": [ "<", 10 ] } ] }, { "x-limit": [ { "numeric": [ "=", 3.018e2 ] } ] } ] } }
참고

APIs이벤트 패턴 (예:PutRule,, CreateArchiveUpdateArchive,TestEventPattern) 을 수락하면 1,000개가 넘는 규칙 조합이 사용될 InvalidEventPatternException 경우 if가 $or 발생합니다.

이벤트 패턴에서 규칙 조합 수를 결정하려면 이벤트 패턴에 있는 각 $or 배열의 총 인수의 수를 곱합니다. 예를 들어 위 패턴에는 세 개의 인수가 있는 단일 $or 배열이 포함되므로 총 규칙 조합 수도 3입니다. 두 개의 인수가 있는 다른 $or 배열을 추가하면 총 규칙 조합은 6개가 됩니다.