AWS Simple Queue Service (SQS) ist ein vollständig verwalteter Nachrichtenwarteschlangendienst, der es uns ermöglicht, Mikrodienste, serverlose Anwendungen und verteilte Systeme zu entkoppeln und zu skalieren. Mit SQS können wir Nachrichten zwischen Softwarekomponenten senden, speichern und empfangen, ohne sie zu verlieren. AWS SQS bietet zwei Arten von Nachrichtenwarteschlangen, Standardwarteschlangen und FIFO-Warteschlangen. Um mehr über SQS-Warteschlangen zu erfahren, suchen Sie nach „How to create an SQS Queue on AWS?“. Artikel.
AWS CloudFormation ermöglicht es uns, Programmiersprachen (yaml/json) oder eine einfache Textdatei zu verwenden, um alle für unsere Anwendungen erforderlichen Ressourcen zu modellieren und bereitzustellen. Dies gibt uns eine einzige Quelle der Wahrheit für unsere AWS-Ressourcen.
In diesem Artikel sehen wir die Schritte zum Erstellen einer Standard- und FIFO-Warteschlange mit Cloudformation Stack.
Voraussetzungen
- AWS-Konto (erstellen, falls Sie noch keins haben).
- Grundlegendes Verständnis von Cloudformation Stack.
- Grundlegendes Verständnis von SQS-Warteschlangen.
Was werden wir tun?
- Melden Sie sich bei AWS an.
- Erstellen Sie eine Standardwarteschlange mit Cloudformation Stack
- Erstellen Sie eine FIFO-Warteschlange mit Cloudformation Stack
Melden Sie sich bei AWS an
- Klicken Sie hier, um zur AWS-Anmeldeseite zu gelangen.
Wenn wir auf den obigen Link klicken, sehen wir eine Webseite wie folgt, auf der wir uns mit unseren Anmeldedaten anmelden müssen.

Sobald wir uns erfolgreich bei AWS angemeldet haben, sehen wir die Hauptkonsole mit allen aufgelisteten Diensten.

Erstellen Sie eine Standardwarteschlange mit Cloudformation Stack
Bevor wir mit der Erstellung einer Standardwarteschlange fortfahren, kopieren Sie den Code aus dem folgenden Block oder laden Sie die Vorlage hier herunter und speichern Sie sie auf Ihrem lokalen Computer. Diese Vorlage wird beim Erstellen eines Cloudformation Stacks benötigt.
---
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 Um eine Standardwarteschlange mit dem Cloudformation-Stack zu erstellen, klicken Sie in der oberen Menüleiste auf „Dienste“ und suchen Sie nach „Cloudformation“.

Klicken Sie auf dem Haupt-Dashboard für Cloudformation auf „Create Stack“, um einen Stack zu erstellen.

Um die Vorlage von Ihrem lokalen Computer hochzuladen, klicken Sie auf das Optionsfeld „Vorlagendatei hochladen“ und dann auf „Weiter“.

Geben Sie einen Namen für den zu erstellenden Stapel an und füllen Sie die erforderlichen Details aus oder fahren Sie mit den Standardwerten fort und klicken Sie auf "Weiter".

Geben Sie das Tag an, das bei seiner Erstellung auf den SQS angewendet werden kann, und klicken Sie auf "Weiter".

Scrollen Sie auf der Seite nach unten und klicken Sie auf die Schaltfläche "Stapel erstellen", um einen Stapel zu erstellen, der eine Standardwarteschlange erstellt.

Sie können den Status unter Ereignisse sehen. Sobald sich der Status des Stapels auf "CREATE_COMPLETE" ändert, bedeutet dies, dass die Warteschlange erstellt wurde.

Klicken Sie auf "Dienste" und suchen Sie nach "SQS", um zu sehen, ob die Warteschlange erstellt wurde oder nicht.

Auf dem Haupt-Dashboard des SQS können Sie sehen, dass die Warteschlange erstellt wurde und der Name der Warteschlange Cloudformation Stack name mit einer zufälligen Suffix-Zeichenfolge dazu ist, the Der Grund dafür ist, dass wir den Queue-Namen nicht im Stack angegeben haben.

Erstellen Sie eine FIFO-Warteschlange mit Cloudformation Stack
Bevor wir mit der Erstellung einer FIFO-Warteschlange fortfahren, kopieren Sie den Code aus dem folgenden Block oder laden Sie die Vorlage hier herunter und speichern Sie sie auf Ihrem lokalen System.
---
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
Kehren Sie zum Haupt-Dashboard von Cloudformation zurück und befolgen Sie die gleichen Schritte , die wir zum Erstellen einer Standardwarteschlange befolgt haben.

Sobald der Stack erstellt wurde, können Sie sehen, dass die FIFO-Warteschlange einsatzbereit ist. Hier sehen Sie, dass die FIFO-Warteschlange keine zufällige Zeichenfolge enthält. Der Grund dafür ist, dass wir in der Cloudformation-Vorlage eine Option haben, mit der wir den Namen für die zu erstellende Warteschlange angeben können.

Wenn die Warteschlangen nicht mehr benötigt werden, können sie gelöscht werden, indem Sie den Cloudformation Stack aus dem Haupt-Dashboard löschen.

Schlussfolgerung
In diesem Artikel haben wir die Schritte zum Erstellen einer Standard- und FIFO-Warteschlange mit Cloudformation Stack gesehen.