쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

AND/OR 로직

포커스 모드
AND/OR 로직 - Amazon Simple Notification Service

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

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

AND/OR 로직을 포함하는 연산을 사용하여 메시지 속성 또는 메시지 본문 속성을 일치시킬 수 있습니다.

AND 로직

여러 속성 이름을 사용하여 AND 로직을 적용할 수 있습니다.

다음 정책을 살펴보겠습니다.

{ "customer_interests": ["rugby"], "price_usd": [{"numeric": [">", 100]}] }

이 속성은 rugby로 설정된 customer_interests그리고 100을 초과하는 값으로 설정된 price_usd 값을 갖는 모든 메시지 속성 또는 메시지 본문 속성과 일치합니다.

참고

동일한 속성의 값에는 AND 로직을 적용할 수 없습니다.

OR 로직

속성 이름에 여러 값을 할당하여 OR 로직을 적용할 수 있습니다.

다음 정책을 살펴보겠습니다.

{ "customer_interests": ["rugby", "football", "baseball"] }

이 속성은 customer_interests 값이 rugby, football 또는 baseball로 설정된 모든 메시지 속성 또는 메시지 본문 속성과 일치합니다.

OR 연산자

"$or" 연산자를 사용해 필터 정책을 명시적으로 정의하여 정책에 있는 여러 속성 간의 OR 관계를 표현할 수 있습니다.

Amazon SNS는 정책이 다음 조건을 모두 충족하는 경우에만 "$or" 관계를 인식합니다. 이러한 조건이 모두 충족되지 않으면 "$or"은 정책의 다른 문자열과 마찬가지로 일반 속성 이름으로 처리됩니다.

  • 규칙에 "$or" 필드 속성이 있고 그 뒤에 배열이 있습니다(예: “$or” : []).

  • "$or" 배열에 최소 두 개의 객체가 있습니다. "$or": [{}, {}]

  • "$or" 배열의 모든 객체에 예약된 키워드인 필드 이름이 없습니다.

그렇지 않으면 "$or"는 정책의 다른 문자열과 마찬가지로 일반 속성 이름으로 처리됩니다.

숫자와 접두사는 예약된 키워드이므로 다음 정책은 OR 관계로 구문 분석되지 않습니다.

{ "$or": [ {"numeric" : 123}, {"prefix": "abc"} ] }

OR 연산자 예제

표준 OR:

{ "source": [ "aws.cloudwatch" ], "$or": [ { "metricName": [ "CPUUtilization" ] }, { "namespace": [ "AWS/EC2" ] } ] }

이 정책의 필터 로직은 다음과 같습니다.

"source" && ("metricName" || "namespace")

이는 다음 메시지 속성 중 하나와 일치합니다.

"source": {"Type": "String", "Value": "aws.cloudwatch"}, "metricName": {"Type": "String", "Value": "CPUUtilization"}

or

"source": {"Type": "String", "Value": "aws.cloudwatch"}, "namespace": {"Type": "String", "Value": "AWS/EC2"}

이 속성은 다음 메시지 본문 중 하나와도 일치합니다.

{ "source": "aws.cloudwatch", "metricName": "CPUUtilization" }

or

{ "source": "aws.cloudwatch", "namespace": "AWS/EC2" }

OR 관계를 포함하는 정책 제약 조건

다음 정책을 살펴보겠습니다.

{ "source": [ "aws.cloudwatch" ], "$or": [ { "metricName": [ "CPUUtilization", "ReadLatency" ] }, { "metricType": [ "MetricType" ] , "$or" : [ { "metricId": [ 1234, 4321 ] }, { "spaceId": [ 1000, 2000, 3000 ] } ] } ] }

이 정책의 로직을 다음과 같이 단순화할 수도 있습니다.

("source" AND "metricName") OR ("source" AND "metricType" AND "metricId") OR ("source" AND "metricType" AND "spaceId")

OR 관계가 있는 정책의 복잡성 계산은 각 OR 문에 대한 조합 복잡성의 합으로 단순화할 수 있습니다.

따라서 전체 조합은 다음과 같습니다.

(source * metricName) + (source * metricType * metricId) + (source * metricType * spaceId) = (1 * 2) + (1 * 1 * 2) + (1 * 1 * 3) = 7

source에는 값이 하나, metricName에는 값이 두 개, metricType에는 값이 하나, metricId에는 값이 두 개, spaceId에는 값이 세 개 있습니다.

다음과 같은 중첩 필터 정책을 고려해 봅니다.

{ "$or": [ { "metricName": [ "CPUUtilization", "ReadLatency" ] }, { "namespace": [ "AWS/EC2", "AWS/ES" ] } ], "detail" : { "scope" : [ "Service" ], "$or": [ { "source": [ "aws.cloudwatch" ] }, { "type": [ "CloudWatch Alarm State Change"] } ] } }

이 정책의 로직을 다음과 같이 단순화할 수 있습니다.

("metricName" AND ("detail"."scope" AND "detail"."source") OR ("metricName" AND ("detail"."scope" AND "detail"."type") OR ("namespace" AND ("detail"."scope" AND "detail"."source") OR ("namespace" AND ("detail"."scope" AND "detail"."type")

총 조합 계산은 키의 중첩 수준을 고려해야 한다는 점을 제외하고 중첩되지 않은 정책과 동일합니다.

따라서 전체 조합은 다음과 같습니다.

(2 * 2 * 2) + (2 * 2 * 2) + (2 * 2 * 2) + (2 * 2 * 2) = 32

metricName에는 두 개의 값이 있고, namespace에는 두 개의 값이 있고, scope는 하나의 값이 있는 2수준 중첩 키이고, source는 하나의 값이 있는 2수준 중첩 키이며, type은 하나의 값이 있는 2수준 중첩 키입니다.

이 페이지에서

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.