[英]aws cloudformation template sns sqs
我在 Cloudformation 堆棧中定義了一個 SNS 主題、一個 SQS 隊列和一個 SNS 訂閱資源。 這三個都在同一個堆棧、同一個區域和同一個 AWS 賬戶中。
Resources:
SqsQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: 'some-queue'
SnsTopic:
Type: AWS::SNS::Topic
Properties:
TopicName: 'some-topic'
SnsSubscription:
Type: AWS::SNS::Subscription
Properties:
Endpoint: !GetAtt [SqsQueue, Arn]
Protocol: sqs
TopicArn: !Ref SnsTopic
當我運行堆棧時,所有三個資源都已成功創建,但是當我從 SNS 發布消息時,SQS 隊列從未收到它。
我一直在關注這個鏈接( https://aws.amazon.com/premiumsupport/knowledge-center/sqs-sns-subscribe-cloudformation/ ),據我所知,我已經完成了我需要做的一切。 我還缺少什么?
謝謝!
附加信息
如果我刪除 Cloudformation 通過控制台創建的訂閱,然后通過控制台創建一個新訂閱,則可以正常發布消息。 所以訂閱一定有問題。
我使用 AWS CLI 將 Cloudformation 模板創建的訂閱屬性與控制台創建的屬性進行比較。 它們完全相同。
您需要添加策略以允許 SNS 主題發布到您的隊列。 像這樣的東西:
SnsToQueuePolicy:
Type: AWS::SQS::QueuePolicy
Properties:
Queues:
- !Ref SqsQueue
PolicyDocument:
Version: '2012-10-17'
Statement:
- Sid: allow-sns-messages
Effect: Allow
Principal: '*'
Resource: !GetAtt SqsQueue.Arn
Action: SQS:SendMessage,
Condition:
ArnEquals:
aws:SourceArn: !Ref SnsTopic
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.