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.