AWS::SNS::Subscription - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::SNS::Subscription

AWS::SNS::Subscription 资源将终端节点订阅到 Amazon Simple Notification Service (Amazon SNS) 主题。对于要创建的订阅,终端节点的拥有者必须确认订阅。

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::SNS::Subscription", "Properties" : { "DeliveryPolicy" : Json, "Endpoint" : String, "FilterPolicy" : Json, "Protocol" : String, "RawMessageDelivery" : Boolean, "RedrivePolicy" : Json, "Region" : String, "TopicArn" : String } }

YAML

Type: AWS::SNS::Subscription Properties: DeliveryPolicy: Json Endpoint: String FilterPolicy: Json Protocol: String RawMessageDelivery: Boolean RedrivePolicy: Json Region: String TopicArn: String

属性

DeliveryPolicy

分配给订阅的传输策略 JSON。在 HTTP/S 终端节点订阅了主题的情况下,允许订阅者定义消息传输重试策略。有关更多信息,请参阅 Amazon Simple Notification Service API 参考 中的 GetSubscriptionAttributes 以及 Amazon SNS 开发人员指南 中的消息传输重试

必需:否

类型:Json

Update requires: No interruption

Endpoint

订阅的终端节点。终端节点值取决于您指定的协议。有关更多信息,请参阅 Amazon Simple Notification Service API 参考 中的 Subscribe 操作的 Endpoint 参数。

必需:否

类型:字符串

Update requires: Replacement

FilterPolicy

分配给订阅的筛选策略 JSON。允许订阅者筛选出不需要的消息。有关更多信息,请参阅 Amazon Simple Notification Service API 参考 中的 GetSubscriptionAttributes 以及 Amazon SNS 开发人员指南 中的消息筛选

必需:否

类型:Json

Update requires: No interruption

Protocol

订阅的协议。有关更多信息,请参阅 Amazon Simple Notification Service API 参考 中的 Subscribe 操作的 Protocol 参数。

必需:是

类型:字符串

Update requires: Replacement

RawMessageDelivery

在设置为 true 时,启用原始消息传输。原始消息不包含任何 JSON 格式,并且可发送到 Amazon SQS 和 HTTP/S 终端节点。有关更多信息,请参阅 Amazon Simple Notification Service API 参考 中的 GetSubscriptionAttributes

必需:否

类型:布尔值

Update requires: No interruption

RedrivePolicy

指定后,将无法传输的消息发送到指定的 Amazon SQS 死信队列。由于客户端错误(例如,在无法访问订阅的终端节点时)或服务器错误(例如,在支持订阅的终端节点的服务变得不可用时)而无法传输的消息将保留在死信队列中,以进行进一步分析或重新处理。

必需:否

类型:Json

Update requires: No interruption

Region

对于跨区域订阅,为主题所在的区域。

如果没有指定区域,CloudFormation 将使用发起人的区域作为默认区域。

如果您执行只更新 AWS::SNS::Subscription 资源的 Region 属性的更新操作,则该操作将失败,除非您执行下列操作之一:

  • RegionNULL 更新为发起人区域。

  • Region 从发起人区域更新为 NULL

必需:否

类型:字符串

Update requires: No interruption

TopicArn

要订阅的主题的 ARN。

必需:是

类型:字符串

Update requires: Replacement

示例

创建具有必需属性的订阅

以下示例创建仅具有终端节点、协议和主题 ARN 的订阅。

JSON

"MySubscription" : { "Type" : "AWS::SNS::Subscription", "Properties" : { "Endpoint" : "test@example.com", "Protocol" : "email", "TopicArn" : { "Ref" : "MySNSTopic" } } }

YAML

MySubscription: Type: AWS::SNS::Subscription Properties: Endpoint: test@example.com Protocol: email TopicArn: !Ref 'MySNSTopic'

创建具有可选属性的订阅

以下示例使用筛选策略、传输策略和启用的原始邮件传输来创建订阅。

注意

您只能在独立的 Amazon SNS 订阅上设置订阅属性(而不是在主题中嵌套的订阅上)。

YAML

AWSTemplateFormatVersion: 2010-09-09 Resources: CarSalesTopic: Type: 'AWS::SNS::Topic' ERPSubscription: Type: 'AWS::SNS::Subscription' Properties: TopicArn: !Ref CarSalesTopic Endpoint: !GetAtt - ERPIntegrationQueue - Arn Protocol: sqs RawMessageDelivery: 'true' CRMSubscription: Type: 'AWS::SNS::Subscription' Properties: TopicArn: !Ref CarSalesTopic Endpoint: !GetAtt - CRMIntegrationQueue - Arn Protocol: sqs RawMessageDelivery: 'true' FilterPolicy: buyer-class: - vip SCMSubscription: Type: 'AWS::SNS::Subscription' Properties: TopicArn: !Ref CarSalesTopic Endpoint: !Ref myHttpEndpoint Protocol: https DeliveryPolicy: healthyRetryPolicy: numRetries: 20 minDelayTarget: 10 maxDelayTarget: 30 numMinDelayRetries: 3 numMaxDelayRetries: 17 numNoDelayRetries: 0 backoffFunction: exponential ERPIntegrationQueue: Type: 'AWS::SQS::Queue' Properties: {} CRMIntegrationQueue: Type: 'AWS::SQS::Queue' Properties: {} Parameters: myHttpEndpoint: Type: String

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "CarSalesTopic": { "Type": "AWS::SNS::Topic" }, "ERPSubscription": { "Type": "AWS::SNS::Subscription", "Properties": { "TopicArn": { "Ref": "CarSalesTopic" }, "Endpoint": { "Fn::GetAtt": ["ERPIntegrationQueue", "Arn"] }, "Protocol": "sqs", "RawMessageDelivery": "true" } }, "CRMSubscription": { "Type": "AWS::SNS::Subscription", "Properties": { "TopicArn": { "Ref": "CarSalesTopic" }, "Endpoint": { "Fn::GetAtt": ["CRMIntegrationQueue", "Arn"] }, "Protocol": "sqs", "RawMessageDelivery": "true", "FilterPolicy": { "buyer-class": [ "vip" ] } } }, "SCMSubscription": { "Type": "AWS::SNS::Subscription", "Properties": { "TopicArn": { "Ref": "CarSalesTopic" }, "Endpoint": { "Ref": "myHttpEndpoint" }, "Protocol": "https", "DeliveryPolicy": { "healthyRetryPolicy": { "numRetries": 20, "minDelayTarget": 10, "maxDelayTarget": 30, "numMinDelayRetries": 3, "numMaxDelayRetries": 17, "numNoDelayRetries": 0, "backoffFunction": "exponential" } } } }, "ERPIntegrationQueue": { "Type": "AWS::SQS::Queue", "Properties": {} }, "CRMIntegrationQueue": { "Type": "AWS::SQS::Queue", "Properties": {} } }, "Parameters": { "myHttpEndpoint": { "Type": "String" } } }