簡體   English   中英

用於創建多個 SQS 的 Cloudformation 模板

[英]Cloudformation template to create multiple SQS

我正在嘗試使用單個 cloudformation 模板創建 2 個 SQS。 我想對兩個隊列應用相同的隊列策略。 目前我有下面的模板來創建 1 個隊列及其相應的 dlq。 我是否必須將所有資源都寫入兩次,或者我是否可以為 Queue2 重復使用相同的隊列策略?

Resources:
  Queue1:
    Type: AWS::SQS::Queue
    Properties:
      RedrivePolicy:
        deadLetterTargetArn: !GetAtt   DeadLetterQueue.Arn
        maxReceiveCount: 10
      QueueName: queue1
      MessageRetentionPeriod: 604800
      VisibilityTimeout: 150
      ReceiveMessageWaitTimeSeconds: 0

  DeadLetterQueue1:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: queue1-dlq
      MessageRetentionPeriod: 1209600

  QueuePolicy:
    Type: AWS::SQS::QueuePolicy
    Properties:
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Sid: allow-service-to-read-and-write-messages
            Effect: Allow
            Principal:
              AWS:
                - !Sub arn:aws:iam::${AWS::AccountId}:role/User
            Resource: !GetAtt Queue1.Arn
            Action:
              - SQS:ChangeMessageVisibility
              - SQS:DeleteMessage
              - SQS:GetQueueUrl
              - SQS:ReceiveMessage
              - SQS:SendMessage
      Queues:
        - !Ref Queue1

  DeadLetterQueuePolicy:
    Type: AWS::SQS::QueuePolicy
    Properties:
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Sid: allow-service-to-read-messages
            Effect: Allow
            Principal:
              AWS:
                - !Sub arn:aws:iam::${AWS::AccountId}:role/User
            Resource: !GetAtt DeadLetterQueue1.Arn
            Action:
              - SQS:ChangeMessageVisibility
              - SQS:DeleteMessage
              - SQS:GetQueueUrl
              - SQS:ReceiveMessage
          - Sid: allow-queue-to-send-messages
            Effect: Allow
            Principal: '*'
            Resource: !GetAtt DeadLetterQueue1.Arn
            Action:
              - SQS:SendMessage
            Condition:
              ArnEquals:
                "aws:SourceArn": !Ref Queue1
      Queues:
        - !Ref DeadLetterQueue1

Outputs:
  SourceQueueURL:
    Description: URL of source queue
    Value:
      Ref: Queue1
  SourceQueueARN:
    Value: !GetAtt Queue1.Arn
    Description: Arn of created SQS
  DeadLetterQueueURL:
    Description: URL of dead-letter queue
    Value:
      Ref: DeadLetterQueue1
  DeadLetterQueueARN:
    Value: !GetAtt DeadLetterQueue1.Arn
    Description: Arn of created SQS

僅嘗試了 1 個隊列並且工作正常

您必須為第二個隊列單獨創建策略,因為它具有不同.GetAtt DeadLetterQueue1.Arn 如果您不想這樣做,您可以將策略提取到不同的模板,並將該模板用作帶有隊列的模板中的嵌套堆棧

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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