Как использовать Cloudformation для создания очередей SQS на AWS
На этой странице
- Предварительные требования
- Что будем делать?
- Создание стандартной очереди с помощью стека Cloudformation
- Создание очереди FIFO с помощью стека Cloudformation
- Заключение
AWS Simple Queue Service (SQS) – это полностью управляемый сервис очередей сообщений, который позволяет нам разделять и масштабировать микросервисы, бессерверные приложения и распределенные системы. С помощью SQS мы можем отправлять, хранить и получать сообщения между программными компонентами без их потери. AWS SQS предлагает два типа очередей сообщений: стандартные очереди и очереди FIFO. Чтобы узнать больше об очередях SQS, найдите статью «Как создать очередь SQS на AWS?».
AWS CloudFormation позволяет нам использовать языки программирования (yaml/json) или простой текстовый файл для моделирования и предоставления всех ресурсов, необходимых для наших приложений. Это дает нам единый источник достоверной информации о наших ресурсах AWS.
В этой статье мы увидим шаги по созданию стандартной очереди и очереди FIFO с использованием стека Cloudformation.
Предпосылки
- Аккаунт AWS (создайте, если у вас его нет).
- Основное понимание стека Cloudformation.
- Основное понимание очередей SQS.
Что мы будем делать?
- Войдите в AWS.
- Создание стандартной очереди с помощью стека Cloudformation
- Создание очереди FIFO с помощью стека Cloudformation
Войти в АВС
- Нажмите здесь, чтобы перейти на страницу входа в AWS.
Когда мы перейдем по приведенной выше ссылке, мы увидим следующую веб-страницу, где нам необходимо войти в систему, используя наши данные для входа.
После успешного входа в AWS мы увидим главную консоль со всеми перечисленными сервисами.
Создайте стандартную очередь с помощью стека Cloudformation
Прежде чем мы приступим к созданию стандартной очереди, скопируйте код из следующего блока или загрузите шаблон отсюда и сохраните его на локальном компьютере. Этот шаблон потребуется при создании стека Cloudformation.
--- AWSTemplateFormatVersion: '2010-09-09' Description: This stack creates a Standard Queue Parameters: DelaySeconds: Description: "The time in seconds that the delivery of all messages in the queue is delayed" Type: Number Default: '5' MaximumMessageSize: Type: Number Description: "The limit of how many bytes that a message can contain before Amazon SQS rejects it" Default: '262144' MessageRetentionPeriod: Description: "The number of seconds that Amazon SQS retains a message." Type: Number Default: '345600' ReceiveMessageWaitTimeSeconds: Description: "Specifies the duration, in seconds, that the ReceiveMessage action call waits until a message is in the queue in order to include it in the response" Type: Number Default: '0' UsedeadletterQueue: Description: "A dead-letter queue is a queue that other (source) queues can target for messages that can't be processed (consumed) successfully." Type: String AllowedValues: - 'true' - 'false' Default: 'false' VisibilityTimeout: Description: "This should be longer than the time it would take to process and delete a message" Type: Number Default: '5' Mappings: {} Conditions: CreateDeadLetterQueue: Fn::Equals: - Ref: UsedeadletterQueue - 'true' Resources: SQSQueue: Type: AWS::SQS::Queue Properties: DelaySeconds: Ref: DelaySeconds MaximumMessageSize: Ref: MaximumMessageSize MessageRetentionPeriod: Ref: MessageRetentionPeriod ReceiveMessageWaitTimeSeconds: Ref: ReceiveMessageWaitTimeSeconds RedrivePolicy: Fn::If: - CreateDeadLetterQueue - deadLetterTargetArn: Fn::GetAtt: - MyDeadLetterQueue - Arn maxReceiveCount: 5 - Ref: AWS::NoValue VisibilityTimeout: Ref: VisibilityTimeout MyDeadLetterQueue: Condition: CreateDeadLetterQueue Type: AWS::SQS::Queue Outputs: QueueURL: Description: URL of the created SQS Value: Ref: SQSQueue QueueARN: Description: ARN of the created SQS Value: Fn::GetAtt: - SQSQueue - Arn QueueName: Description: Name of the created SQS Value: Fn::GetAtt: - SQSQueue - QueueName DeadLetterQueueURL: Condition: CreateDeadLetterQueue Description: URL of the dead letter queue Value: Ref: MyDeadLetterQueue DeadLetterQueueARN: Condition: CreateDeadLetterQueue Description: ARN of the dead letter queue Value: Fn::GetAtt: - MyDeadLetterQueue - Arn
Чтобы создать стандартную очередь с помощью стека Cloudformation, нажмите \Сервис\ в верхней строке меню и найдите \Cloudformation\.
На главной панели Cloudformation нажмите «Создать стек», чтобы создать стек.
Чтобы загрузить шаблон с вашего локального компьютера, щелкните переключатель «Загрузить файл шаблона» и нажмите «Далее».
Укажите имя создаваемого стека и заполните необходимые данные или оставьте значения по умолчанию и нажмите \Далее\.
Укажите тег, который можно применить к SQS при его создании, и нажмите «Далее».
Прокрутите страницу вниз и нажмите кнопку \Создать стопку\, чтобы создать стопку, которая создаст стандартную очередь.
Статус можно увидеть в разделе «События». Как только статус стека изменится на CREATE_COMPLETE, это означает, что очередь создана.
Нажмите на \Услуги\ и найдите \SQS\, чтобы увидеть, была ли создана очередь или нет.
На главной панели SQS вы можете видеть, что очередь была создана, и имя, данное очереди, — это имя стека Cloudformation с некоторой случайной строкой суффикса. Причина этого в том, что мы не указали имя очереди в куча.
Создайте очередь FIFO с помощью стека Cloudformation.
Прежде чем мы приступим к созданию очереди FIFO, скопируйте код из следующего блока или загрузите шаблон отсюда и сохраните его в своей локальной системе.
--- AWSTemplateFormatVersion: '2010-09-09' Description: This stack creates a FIFO Queue Parameters: ContentBasedDeduplication: Description: Specifie whether to enable content-based deduplication Type: String AllowedValues: - 'true' - 'false' Default: 'true' QueueName: Description: This stack will append .fifo to the end of the Queue name. Type: String DelaySeconds: Description: "The time in seconds that the delivery of all messages in the queue" Type: Number Default: '5' MaximumMessageSize: Type: Number Description: "The limit of how many bytes that a message can contain before Amazon" Default: '262144' MessageRetentionPeriod: Description: "The number of seconds that Amazon SQS retains a message." Type: Number Default: '345600' ReceiveMessageWaitTimeSeconds: Description: "Specifies the duration, in seconds, that the ReceiveMessage action call waits until a message is in the queue in order to include it in the response" Type: Number Default: '0' UsedeadletterQueue: Description: "A dead-letter queue is a queue that other (source) queues can target for messages that can't be processed (consumed) successfully." Type: String AllowedValues: - 'true' - 'false' Default: 'false' VisibilityTimeout: Description: "This should be longer than the time it would take to process and delete a message" Type: Number Default: '5' Mappings: {} Conditions: CreateDeadLetterQueue: Fn::Equals: - Ref: UsedeadletterQueue - 'true' Resources: SQSQueue: Type: AWS::SQS::Queue Properties: ContentBasedDeduplication: Ref: ContentBasedDeduplication FifoQueue: 'true' QueueName: Fn::Join: - '' - - Ref: QueueName - ".fifo" MaximumMessageSize: Ref: MaximumMessageSize MessageRetentionPeriod: Ref: MessageRetentionPeriod ReceiveMessageWaitTimeSeconds: Ref: ReceiveMessageWaitTimeSeconds RedrivePolicy: Fn::If: - CreateDeadLetterQueue - deadLetterTargetArn: Fn::GetAtt: - MyDeadLetterQueue - Arn maxReceiveCount: 5 - Ref: AWS::NoValue VisibilityTimeout: Ref: VisibilityTimeout MyDeadLetterQueue: Condition: CreateDeadLetterQueue Type: AWS::SQS::Queue Properties: FifoQueue: 'true' QueueName: Fn::Join: - '' - - Ref: QueueName - Deadletter - ".fifo" Outputs: QueueURL: Description: URL of the created SQS Value: Ref: SQSQueue QueueARN: Description: ARN of the created SQS Value: Fn::GetAtt: - SQSQueue - Arn QueueName: Description: Name of the created SQS Value: Fn::GetAtt: - SQSQueue - QueueName
Вернитесь на главную панель инструментов Cloudformation и выполните те же шаги, которые мы выполнили для создания стандартной очереди.
Как только стек будет создан, вы увидите, что очередь FIFO готова к использованию. Здесь вы видите, что в очереди FIFO нет случайной строки, причина этого в том, что у нас есть опция в шаблоне Cloudformation, где мы можем указать имя создаваемой очереди.
Если очереди больше не нужны, их можно удалить, удалив стек Cloudformation с главной панели инструментов.
Заключение
В этой статье мы рассмотрели шаги по созданию стандартной очереди и очереди FIFO с использованием стека Cloudformation.