기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon EventBridge의 이벤트 패턴에 사용할 비교 연산자
다음은 EventBridge에서 사용할 수 있는 모든 비교 연산자에 대한 요약입니다.
비교 연산자는 $or
및 anything-but
을 제외하고 리프 노드에서만 작동합니다.
비교 | 예제 | 규칙 구문 | 이벤트 버스 지원 | 파이프 지원 |
---|---|---|---|---|
및 |
위치가 “New York”이고 요일이 “Monday”임 |
|
예 |
예 |
Anything-but | 상태는 ‘initializing’ 이외의 모든 값입니다. |
|
예 |
예 |
Anything-but(다음으로 시작하는 것) | 리전이 미국에 있지 않습니다. |
|
예 |
아니요 |
Anything-but(다음으로 끝나는 것) | FileName이 .png 확장자로 끝나지 않습니다. |
|
예 |
아니요 |
Anything-but(대/소문자 무시) | 상태는 ‘initializing’ 또는 ‘INITIALIZING’과 같은 기타 대/소문자 변형 이외의 모든 값입니다. |
|
예 |
아니요 |
와일드카드를 사용하는 Anything-but | FileName은 |
|
예 |
아니요 |
리전이 미국에 있습니다. |
|
예 |
예 |
|
다음으로 시작(대/소문자 무시) | 서비스 이름은 대/소문자에 관계없이 ‘eventb’ 문자로 시작합니다. |
|
예 |
예 |
LastName이 비어 있습니다. |
|
예 |
예 |
|
같음 |
이름이 ‘Alice’임 |
|
예 |
예 |
이름이 ‘Alice’임 |
|
예 |
예 |
|
FileName은 .png 확장명으로 끝남 |
|
예 |
예 |
|
다음으로 끝남(대/소문자 무시) | 서비스 이름은 문자 'tbridge' 또는 TBRIDGE'와 같은 기타 대/소문자 변형으로 끝납니다. |
|
예 |
예 |
Productname이 있음 |
|
예 |
예 |
|
Productname이 없음 |
|
예 |
예 |
|
날씨는 “Raining”이 아님 |
|
예 |
예 |
|
UserID가 null임 |
|
예 |
예 |
|
가격은 100임 |
|
예 |
예 |
|
가격이 10을 초과하고 20보다 작거나 같음 |
|
예 |
예 |
|
또는 |
PaymentType이 “Credit” 또는 “Debit”임 |
|
예 |
예 |
위치가 'New York'이고 요일이 'Monday'임 |
|
예 |
예 |
|
‘dir’ 폴더 내에 있는 확장명이.png인 모든 파일 |
|
예 |
아니요 |
접두사 일치
이벤트 소스에 있는 값의 접두사에 따라 이벤트를 매칭할 수 있습니다. 문자열 값에 접두사 일치를 사용할 수 있습니다.
예를 들어 다음 이벤트 패턴은 "time"
필드가 "time": "2017-10-02T18:43:48Z"
와 같이 "2017-10-02"
로 시작된 모든 이벤트와 일치합니다.
{
"time": [ { "prefix": "2017-10-02" } ]
}
대/소문자를 무시하는 접두사 일치
또한 prefix.
와 함께 equals-ignore-case
를 사용함으로써, 값이 시작하는 문자의 대/소문자에 관계없이 접두사 값을 일치시킬 수도 있습니다.
예를 들어, 다음 이벤트 패턴은 service
필드가 문자열 EventB
로 시작되는 모든 이벤트와 일치할 뿐만 아니라, EVENTB
, eventb
또는 해당 문자의 기타 대/소문자 변형과도 일치합니다.
{
"detail": {"service" : [{ "prefix": { "equals-ignore-case": "EventB" }}]}
}
접미사 일치
이벤트 소스에 있는 값의 접미사에 따라 이벤트를 매칭할 수 있습니다. 문자열 값에 접미사 일치를 사용할 수 있습니다.
예를 들어 다음 이벤트 패턴은 "FileName"
필드가 .png
파일 확장명으로 끝나는 모든 이벤트와 일치합니다.
{
"FileName": [ { "suffix": ".png" } ]
}
대/소문자를 무시하는 접미사 일치
또한 suffix.
와 함께 equals-ignore-case
를 사용함으로써, 값이 끝나는 문자의 대/소문자에 관계없이 접미사 값을 일치시킬 수도 있습니다.
예를 들어, 다음 이벤트 패턴은 FileName
필드가 문자열 .png
로 끝나는 모든 이벤트와 일치할 뿐만 아니라, .PNG
또는 해당 문자의 기타 대/소문자 변형과도 일치합니다.
{
"detail": {"FileName" : [{ "suffix": { "equals-ignore-case": ".png" }}]}
}
Anything-but 일치
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 일치
anything-but
과 함께 equals-ignore-case
를 사용하여, 문자의 대/소문자에 관계없이 문자열 값을 일치시킬 수도 있습니다.
다음 이벤트 패턴은 문자열 ‘initializing’, ‘INITIALIZING’, ‘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 일치
anything-but
과 함께 prefix
를 사용하여, 지정된 값으로 시작하지 않는 문자열 값을 일치시킬 수 있습니다. 이러한 값에는 단일 값 또는 여러 값의 목록이 포함됩니다.
다음 이벤트 패턴은 "state"
필드에 "init"
접두사가 없는 모든 이벤트와 일치하는 anything-but 일치를 보여줍니다.
{
"detail": {
"state": [ { "anything-but": { "prefix": "init" } } ]
}
}
다음 이벤트 패턴은 여러 접두사 값 목록과의 anything-but 일치를 보여줍니다. 이 이벤트 패턴은 "state"
필드에 접두사 "init"
또는 "stop"
이 없는 모든 이벤트와 일치합니다.
{
"detail": {
"state" : [{ "anything-but": { "prefix": ["init", "stop"] } } ] }
}
}
접미사의 Anything-but 일치
anything-but
과 함께 suffix
를 사용하여, 지정된 값으로 끝나지 않는 문자열 값을 일치시킬 수 있습니다. 이러한 값에는 단일 값 또는 여러 값의 목록이 포함됩니다.
다음 이벤트 패턴은 .txt
로 끝나지 않는 FileName
필드의 모든 값과 일치합니다.
{
"detail": {
"FileName": [ { "anything-but": { "suffix": ".txt" } } ]
}
}
다음 이벤트 패턴은 여러 접미사 값 목록과의 anything-but 일치를 보여줍니다. 이 이벤트 패턴은 .txt
또는 .rtf
로 끝나지 않는 FileName
필드의 모든 값과 일치합니다.
{
"detail": {
"FileName": [ { "anything-but": { "suffix": [".txt", ".rtf"] } } ]
}
}
와일드카드를 사용한 Anything-but 일치
Anything-but 일치를 위해 지정한 값 내에 와일드카드 문자(*)를 사용할 수 있습니다. 이러한 값에는 단일 값 또는 여러 값의 목록이 포함됩니다.
다음 이벤트 패턴은 /lib/
를 포함하지 않는 FileName
필드의 모든 값과 일치합니다.
{
"detail": {
"FilePath" : [{ "anything-but": { "wildcard": "*/lib/*" }}]
}
}
다음 이벤트 패턴은 와일드카드를 포함하는 여러 값 목록과의 anything-but 일치를 보여줍니다. 이 이벤트 패턴은 /lib/
또는 /bin/
을 포함하지 않는 FileName
필드의 모든 값과 일치합니다.
{
"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
필드가 없으므로 이전 이벤트 패턴은 다음 이벤트와 일치하지 않습니다.
{
"detail-type": [ "EC2 Instance State-change Notification" ],
"resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-02ebd4584a2ebd341" ],
"detail": {
"c-count" : {
"c1" : 100
}
}
}
Equals-ignore-case 일치
Equals-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는 와일드카드 필터에 백슬래시 문자(\)를 사용하여 리터럴 * 및 \ 문자를 지정할 수 있도록 지원합니다.
-
문자열
\*
은 리터럴 * 문자를 나타냅니다. -
문자열
\\
은 리터럴 \ 문자를 나타냅니다.
백슬래시를 사용하여 다른 문자를 이스케이프 처리하는 것은 지원되지 않습니다.
-
와일드카드 및 이벤트 패턴 복잡성
와일드카드를 사용하는 규칙의 복잡성에는 제한이 있습니다. 규칙이 너무 복잡하면 EventBridge는 규칙을 생성하려고 할 때 InvalidEventPatternException
을 반환합니다. 규칙에서 이러한 오류가 발생하는 경우 아래 지침을 사용하여 이벤트 패턴의 복잡성을 줄이는 것이 좋습니다.
-
와일드카드 문자 사용 횟수 줄이기
가능한 여러 값과 매칭해야 하는 경우에만 와일드카드 문자를 사용하세요. 예를 들어 동일한 리전의 이벤트 버스와 매칭하려는 다음 이벤트 패턴을 살펴보세요.
{ "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-but
과 numeric
을 결합합니다.
{
"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 ] } ] }
]
}
}
참고
이벤트 패턴(예: PutRule
, CreateArchive
, UpdateArchive
및 TestEventPattern
)을 허용하는 API는 $or
를 사용하여 1,000개가 넘는 규칙 조합이 생성되면 InvalidEventPatternException
을 발생시킵니다.
이벤트 패턴에서 규칙 조합 수를 결정하려면 이벤트 패턴에 있는 각 $or
배열의 총 인수의 수를 곱합니다. 예를 들어 위 패턴에는 세 개의 인수가 있는 단일 $or
배열이 포함되므로 총 규칙 조합 수도 3입니다. 두 개의 인수가 있는 다른 $or
배열을 추가하면 총 규칙 조합은 6개가 됩니다.