应用订阅筛选策略
您可以使用 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 筛选策略。
如果您使用 SDK for Java 2.x 示例,则类 SNSMessageFilterPolicy
并非开箱即用。有关如何安装此类的说明,请参阅 GitHub 网站上的示例
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 。