

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

# Amazon SNS 예제 필터 정책
<a name="example-filter-policies"></a>

다음 예제에서는 고객 트랜잭션을 처리하는 Amazon SNS 주제에서 전송된 메시지 페이로드를 보여 줍니다.

첫 번째 예에서 `MessageAttributes` 필드에는 트랜잭션을 설명하는 속성이 포함됩니다.
+ 고객의 관심사
+ 스토어 이름
+ 이벤트 상태
+ 구매 가격(USD)

이 메시지에는 `MessageAttributes` 필드가 포함되어 있으므로, 구독의 `FilterPolicyScope`가 `MessageAttributes`로 설정되어 있는 한 `FilterPolicy`가 설정된 주제 구독은 메시지를 선택적으로 수락 또는 거부할 수 있습니다. 메시지에 속성을 적용하는 방법에 대한 자세한 내용은 [Amazon SNS 메시지 속성](sns-message-attributes.md)에서 확인하세요.

```
{
   "Type": "Notification",
   "MessageId": "a1b2c34d-567e-8f90-g1h2-i345j67klmn8",
   "TopicArn": "arn:aws:sns:us-east-2:123456789012:MyTopic",
   "Message": "{{message-body-with-transaction-details}}",
   "Timestamp": "2019-11-03T23:28:01.631Z",
   "SignatureVersion": "4",
   "Signature": "{{signature}}",
   "UnsubscribeURL": "{{unsubscribe-url}}",
   "MessageAttributes": {
      "customer_interests": {
         "Type": "String.Array",
         "Value": "[\"soccer\", \"rugby\", \"hockey\"]"
      },
      "store": {
         "Type": "String",
         "Value":"example_corp"
      },
      "event": {
         "Type": "String",
         "Value": "order_placed"
      },
      "price_usd": {
         "Type": "Number", 
         "Value": "210.75"
      }
   }
}
```

다음 예에서는 `Message` 필드(메시지 페이로드** 또는 메시지 본문**이라고도 함)에 포함된 동일한 속성을 보여줍니다. `FilterPolicy`를 포함하는 모든 주제 구독은 구독의 `FilterPolicyScope`가 `MessageBody`로 설정되어 있는 한 메시지를 선택적으로 수락하거나 거부할 수 있습니다.

```
{
"Type": "Notification",
   "MessageId": "a1b2c34d-567e-8f90-g1h2-i345j67klmn8",
   "TopicArn": "arn:aws:sns:us-east-2:123456789012:MyTopic",
   "Message": "{
      \"customer_interests\": [\"soccer\", \"rugby\", \"hockey\"],
      \"store\": \"example_corp\",
      \"event\":\"order_placed\",
      \"price_usd\":210.75
   }",
   "Timestamp": "2019-11-03T23:28:01.631Z",
   "SignatureVersion": "4",
   "Signature": "signature",
   "UnsubscribeURL": "unsubscribe-url"
}
```

다음 필터 정책은 속성 이름과 값을 기준으로 메시지를 수락하거나 거부합니다.

## 예제 메시지를 수락하는 정책
<a name="policy-accepts-messages"></a>

다음 구독 필터 정책의 속성이 예제 메시지에 지정된 속성과 일치합니다. 참고로 `MessageAttributes` 또는 `MessageBody`로 설정되었는지와 관계없이 `FilterPolicyScope`에 대해 동일한 필터 정책이 적용됩니다. 각 구독자는 주제에서 받는 메시지의 구성에 따라 필터링 범위를 선택합니다.

이 정책의 속성 중 하나가 메시지에 지정된 속성과 일치하지 않으면 정책은 해당 메시지를 거부합니다.

```
{
   "store": ["example_corp"],
   "event": [{"anything-but": "order_cancelled"}],
   "customer_interests": [
      "rugby",
      "football",
      "baseball"
   ],
   "price_usd": [{"numeric": [">=", 100]}]
}
```

## 예제 메시지를 거부하는 정책
<a name="policy-rejects-messages"></a>

다음 구독 필터 정책의 속성과 예제 메시지에 지정된 속성이 서로 여러 가지가 불일치합니다. 예를 들어 `encrypted` 속성 이름이 메시지 속성에 없으므로 이 정책 속성은 할당된 값과 관계없이 메시지를 거부합니다.

불일치가 하나라도 있을 경우 정책은 해당 메시지를 거부합니다.

```
{
   "store": ["example_corp"],
   "event": ["order_cancelled"],
   "encrypted": [false],
   "customer_interests": [
      "basketball",
      "baseball"
   ]
}
```