

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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` フィールドに含まれ、*メッセージペイロード*または*メッセージ本文*とも呼ばれる同じ属性を示しています。サブスクリプションで `FilterPolicyScope` が `MessageBody` に設定されている限り、`FilterPolicy` を含むトピックサブスクリプションは、メッセージを選択的に許可または拒否することができます。

```
{
"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` に対して有効であることに注意してください。各サブスクライバーは、トピックから受信するメッセージの構成に従ってフィルタリング範囲を選択します。

このポリシーの 1 つのプロパティが、メッセージに割り当てられた属性と一致しなかった場合、ポリシーはメッセージを拒否します。

```
{
   "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"
   ]
}
```