簡體   English   中英

aws cloudformation 模板 sns sqs

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM