Вопросы о создании очереди SQS / dead letter queue в AWS с cloudformation

#amazon-web-services #amazon-cloudformation #amazon-sqs

#amazon-веб-сервисы #aws-cloudformation #amazon-sqs

Вопрос:

Я хочу создать очередь SQS, которая подключена к очереди dead letter. Я хочу, чтобы сообщения, которые получены, но не могут быть правильно обработаны из очереди SQS, помещались в очередь dead letter queue. Кроме того, я хочу настроить это для формирования облака. Я просмотрел эти документы. Но у меня все еще есть вопросы о процессе настройки этого. Я вижу этот фрагмент кода на странице, которая показывает, как это сделать:

 AWSTemplateFormatVersion: "2010-09-09"
Resources: 
  MySourceQueue: 
    Type: AWS::SQS::Queue
    Properties: 
      RedrivePolicy: 
        deadLetterTargetArn: 
          Fn::GetAtt: 
            - "MyDeadLetterQueue"
            - "Arn"
        maxReceiveCount: 5
  MyDeadLetterQueue: 
    Type: AWS::SQS::Queue
Outputs: 
  SourceQueueURL: 
    Description: "URL of the source queue"
    Value: 
      Ref: "MySourceQueue"
  SourceQueueARN: 
    Description: "ARN of the source queue"
    Value: 
      Fn::GetAtt: 
        - "MySourceQueue"
        - "Arn"
  DeadLetterQueueURL: 
    Description: "URL of the dead letter queue"
    Value: 
      Ref: "MyDeadLetterQueue"
  DeadLetterQueueARN: 
    Description: "ARN of the dead letter queue"
    Value: 
      Fn::GetAtt: 
        - "MyDeadLetterQueue"
        - "Arn"
  

Мои вопросы:

1) Предназначен ли этот фрагмент кода для 1 очереди sqs / dead letter? Итак, если я захочу создать много из них, я бы продублировал весь этот блок для каждого?

2) Если очередь sqs уже существует, но я хочу добавить к ней очередь dead letter в cloud formation, могу ли я просто указать где-нибудь имя этой очереди и заставить ее сгенерировать правильную очередь dead letter? Или мне нужно удалить старые очереди и заново создать их с помощью cloud formation?

Ответ №1:

В этом фрагменте создается очередь Amazon SQS под названием MyDeadLetterQueue :

   MyDeadLetterQueue: 
    Type: AWS::SQS::Queue
  

Этот фрагмент:

   MySourceQueue: 
    Type: AWS::SQS::Queue
    Properties: 
      RedrivePolicy: 
        deadLetterTargetArn: 
          Fn::GetAtt: 
            - "MyDeadLetterQueue"
            - "Arn"
        maxReceiveCount: 5
  

говорит:

  • Создайте очередь Amazon SQS под названием MySourceQueue
  • Установите для очереди Dead Letter значение MyDeadLetterQueue
  • Если сообщение не удается обработать 5 раз, переместите его в MyDeadLetterQueue

При желании одну и ту же очередь Dead Letter Queue можно использовать в нескольких очередях, поэтому повторите этот блок для каждой очереди, которую вы хотите создать.

Если очередь Dead Letter Queue уже существует, вы можете указать ARN для очереди:

  • Создайте параметр для принятия ARN
  • Обратитесь к ARN в определении очереди

Например:

 Parameters: 
  DLQarn: 
    Type: String

Resources:
  MySourceQueue: 
    Type: AWS::SQS::Queue
    Properties: 
      RedrivePolicy: 
        deadLetterTargetArn: 
          Ref: DLQarn
        maxReceiveCount: 5