CloudFormation - 在禁用状态下创建 SNS 订阅

CloudFormation - Create SNS subscription in disabled state

有没有办法在禁用状态下创建 SNS 订阅?如果有所不同,这是针对 lambda 的。

示例:

MySubscription:
  Type: AWS::SNS::Subscription
  Properties:
    Endpoint: arn:aws:lambda:region:account-id:function:mylambda
    Protocol: lambda
    TopicArn: arn:aws:sns:region:account-id:topic
    Enabled: false # like this

在 AWS CloudFormation 文档中找不到类似的内容

Cloudformation 没有符合您示例的方法。根据 documentationAWS::SNS::Subscription 没有 'Enabled' 作为设置。

尽管如此,文档确实指出终端节点的所有者必须在 Amazon SNS 创建订阅之前确认订阅。所以,从某种意义上说,它已经被禁用了,因为它不存在,直到你在 SNS 主题上确认它。

您可以为创建订阅创建一个条件。

先加一个参数:

   "CreateSubscription": {
      "Type": "String",
      "AllowedValues": [
        "true",
        "false"
      ],
      "Description": "Create subscription to sns"
    }

在 'parameters' 部分之后,创建一个 'conditions' 部分:

"Conditions" : {
    "CreateSubscription" : {"Fn::Equals" : [{"Ref" : "CreateSubscription"}, "true"]}
  }

将条件添加到您的订阅

"Subscription": {
      "Type": "AWS::SNS::Subscription",
      "Condition" : "CreateSubscription",
      [...]
}

当您想"activate"订阅时,您只需更改使用相同模板更新堆栈的参数值

Conditions section reference