翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
次の例は、顧客のトランザクションを処理する Amazon SNS トピックから配信されるメッセージペイロードを示しています。
最初の例には、トランザクションを記述する属性がある MessageAttributes
フィールドが含まれます。
-
顧客の興味
-
ストア名
-
イベント状態
-
購入価格 (USD)
このメッセージには MessageAttributes
フィールドが含まれるため、サブスクリプションで FilterPolicyScope
が MessageAttributes
に設定されている限り、FilterPolicy
を設定するトピックサブスクリプションは、メッセージを選択的に許可または拒否することができます。メッセージへの属性の適用の詳細については、「Amazon SNS メッセージ属性」を参照してください。
{
"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"
}
以下のフィルターポリシーでは、プロパティの名前と値に基づいてメッセージを許可または拒否します。
メッセージ例を許可するポリシー
以下のサブスクリプションフィルターポリシーのプロパティは、メッセージ例に割り当てられた属性に一致します。MessageAttributes
または MessageBody
に設定されているかどうかにかかわらず、同じフィルターポリシーが FilterPolicyScope
に対して有効であることに注意してください。各サブスクライバーは、トピックから受信するメッセージの構成に従ってフィルタリング範囲を選択します。
このポリシーの 1 つのプロパティが、メッセージに割り当てられた属性と一致しなかった場合、ポリシーはメッセージを拒否します。
{
"store": ["example_corp"],
"event": [{"anything-but": "order_cancelled"}],
"customer_interests": [
"rugby",
"football",
"baseball"
],
"price_usd": [{"numeric": [">=", 100]}]
}
メッセージ例を拒否するポリシー
以下のサブスクリプションフィルターポリシーでは、そのプロパティと、メッセージ例に割り当てられた属性の間に、複数の不一致があります。例えば、encrypted
プロパティ名はメッセージ属性に存在していないため、割り当てられている値にかかわらず、このポリシープロパティによってメッセージは拒否されます。
不一致が発生すると、ポリシーはメッセージを拒否します。
{
"store": ["example_corp"],
"event": ["order_cancelled"],
"encrypted": [false],
"customer_interests": [
"basketball",
"baseball"
]
}