#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