应用订阅筛选策略
您可以使用 Amazon SNS 控制台将筛选策略应用于 Amazon SNS 订阅。或者,要以编程方式应用策略,您可以使用 Amazon SNS API、Amazon Command Line Interface (Amazon CLI) 或任何支持 Amazon SNS 的 Amazon 开发工具包。
Amazon 服务(例如 IAM 和 Amazon SNS)使用称为最终一致性的分布式计算模型。对订阅筛选器策略的添加或更改最多需要 15 分钟即可完全生效。
Amazon Web Services Management Console
登录 Amazon SNS 控制台
。 -
在导航面板中,选择 Subscriptions(订阅)。
-
选择订阅,然后选择编辑。
-
在 Edit(编辑)页面上,展开 Subscription filter policy(订阅筛选策略)部分。
-
在 JSON editor(JSON 编辑器)字段中,提供筛选策略的 JSON body(JSON 正文)。
-
选择 Save changes(保存更改)。
Amazon SNS 将您的筛选策略应用到订阅。
Amazon CLI
要使用 Amazon Command Line Interface (Amazon CLI) 应用筛选策略,请使用 set-subscription-attributes
命令,如以下示例所示:
$
aws sns set-subscription-attributes --subscription-arn
arn:aws:sns: ...
--attribute-name FilterPolicy --attribute-value'{"store":["example_corp"],"event":["order_placed"]}'
对于 --attribute-name
选项,请指定 FilterPolicy
。对于 --attribute-value
,请指定您的 JSON 策略。
要为您的策略提供有效的 JSON,请用双引号将属性名和值括起来。此外,您必须用引号将整个策略参数括起来。要避免转义引号,您可以使用单引号将策略括起来,并使用双引号将 JSON 名称和值括起来,如以上示例中所示。
要验证是否已应用您的筛选策略,请使用 get-subscription-attributes
命令。终端输出中的属性应显示 FilterPolicy
键的筛选策略,如以下示例中所示:
$
aws sns get-subscription-attributes --subscription-arn arn:aws:sns: ...
{
"Attributes": {
"Endpoint": "endpoint . . .",
"Protocol": "https",
"RawMessageDelivery": "false",
"EffectiveDeliveryPolicy": "delivery policy . . .",
"ConfirmationWasAuthenticated": "true",
"FilterPolicy": "{\"store\": [\"example_corp\"], \"event\": [\"order_placed\"]}",
"Owner": "111122223333",
"SubscriptionArn": "arn:aws:sns: . . .",
"TopicArn": "arn:aws:sns: . . ."
}
}
Amazon 开发工具包
以下代码示例显示如何设置 Amazon SNS 筛选策略。
Amazon SNS API
要使用 Amazon SNS API 应用筛选策略,需要请求 SetSubscriptionAttributes
操作。将 AttributeName
参数设置为 FilterPolicy
,并将 AttributeValue
参数设置为您的筛选策略 JSON。
Amazon CloudFormation
要使用 Amazon CloudFormation 应用筛选策略,请使用 JSON 或 YAML 模板创建一个 Amazon CloudFormation 堆栈。有关更多信息,请参阅 Amazon CloudFormation 用户指南中的 AWS::SNS::Subscription
资源的 FilterPolicy
属性以及示例 Amazon CloudFormation 模板
-
选择创建堆栈。
-
在 Select Template (选择模板) 页面上,依次选择 Upload a template to Amazon S3 (将模板上传到 Amazon S3)、您的文件和下一步。
-
在指定详细信息页面中,执行以下操作:
-
对于堆栈名称,键入
MyFilterPolicyStack
。 -
对于 myHttpEndpoint,键入要订阅主题的 HTTP 终端节点。
提示 如果没有 HTTP 终端节点,请创建一个。
-
-
在 Options (选项) 页面上,选择 Next (下一步)。
-
在 Review 页面上,选择 Create。