[英]Re-using an existing SNS Topic in a Cloudformation template
我有一個 SAM cloudformation 模板:
Transform: AWS::Serverless-2016-10-31
Description: Create SNS with a sub
Parameters:
NotificationEmail:
Type: String
Description: Email address to subscribe to SNS topic
Resources:
NotificationTopic:
Type: AWS::SNS::Topic
DeletionPolicy: Retain
Properties:
TopicName: sam-test-sns
Subscription:
- Endpoint: !Ref NotificationEmail
Protocol: email
Outputs:
SNSTopic:
Value: !Ref NotificationTopic
因此,我想保留sam-test-sns主題,因為已經有多個訂閱者,並且我不希望訂閱者在我拆除服務並將其重新啟動時繁瑣地重新訂閱。
使用Retain拆除服務可以保持話題,所以這很好。 但是當我嘗試部署模板時,它會失敗,因為它已經存在。
那么使用現有 SNS 主題的正確方法是什么?
在移除堆棧但保留主題后將“Ec2NotificationTopic”資源保留在模板中,將指示 CloudFormation 在(重新)創建堆棧時也創建主題,這將始終失敗。
由於您只是在引用現有主題,因此您應該從模板中刪除資源並將對它的引用替換為 ARN/名稱。
output 完成后,您將導出變量。 我將假設您希望將此資源放在另一個堆棧中。
首先,您需要導出值,例如
Outputs:
SNSTopic:
Value: !Ref NotificationTopic
Export:
Name: Fn::Sub: "${AWS::StackName}-SNSTopic"
向新的SNSStackName
堆棧添加一個參數,您將在其中傳入 SNS 堆棧名稱(在當前區域內)。
然后從您的新堆棧中引用您需要調用 output 值,如下所示:
Fn::ImportValue:
Fn::Sub: "${SNSStackName}-SNSTopic"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.