Wie man mit Cloudformation SQS-Warteschlangen auf AWS erstellt

AWS Simple Queue Service (SQS) ist ein vollständig verwalteter Warteschlangen-Service, mit dem wir Microservices, serverlose Anwendungen und verteilte Systeme entkoppeln und skalieren können. Mit SQS können wir Nachrichten zwischen Softwarekomponenten senden, speichern und empfangen, ohne dass sie verloren gehen. AWS SQS bietet zwei Arten von Nachrichten-Warteschlangen: Standard-Warteschlangen und FIFO-Warteschlangen. Um mehr über SQS-Warteschlangen zu erfahren, suche nach dem Artikel „Wie erstelle ich eine SQS-Warteschlange auf AWS?“.

Mit AWS CloudFormation können wir Programmiersprachen (yaml/json) oder eine einfache Textdatei verwenden, um alle für unsere Anwendungen benötigten Ressourcen zu modellieren und bereitzustellen. So haben wir eine einzige Quelle der Wahrheit für unsere AWS-Ressourcen.

In diesem Artikel zeigen wir dir, wie du eine Standard- und eine FIFO-Warteschlange mit Cloudformation Stack erstellst.

Vorraussetzungen

  1. AWS-Konto (Erstelle wenn du noch keins hast).
  2. Grundlegendes Verständnis von Cloudformation Stack.
  3. Grundlegendes Verständnis von SQS-Warteschlangen.

Was werden wir tun?

  1. Melde dich bei AWS an.
  2. Erstelle eine Standard-Warteschlange mit Cloudformation Stack
  3. Erstelle eine FIFO-Warteschlange mit Cloudformation Stack

Anmelden bei AWS

  1. Klicke auf hier um zur AWS-Anmeldeseite zu gelangen.

Wenn wir auf den obigen Link klicken, sehen wir eine Webseite wie die folgende, auf der wir uns mit unseren Anmeldedaten anmelden müssen.

Bei AWS anmelden

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

AWS Management Console

Eine Standard-Warteschlange mit Cloudformation Stack erstellen

Bevor wir mit der Erstellung einer Standard-Warteschlange beginnen, kopiere den Code aus dem folgenden Block oder lade die Vorlage vonhierherunterund speichere sie auf deinem lokalen Rechner. Diese Vorlage wird bei der Erstellung eines Cloudformation Stack 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 Standard-Warteschlange mit dem Cloudformation Stack zu erstellen, klicke in der oberen Menüleiste auf „Dienste“ und suche nach „Cloudformation“.

Standard QUEUE

Im Haupt-Dashboard von Cloudformation klickst du auf „Stack erstellen“, um einen Stack zu erstellen.

Stapel

Um die Vorlage von deinem lokalen Rechner hochzuladen, klicke auf das Optionsfeld „Vorlagendatei hochladen“ und dann auf „Weiter“.

Stapel erstellen

Gib einen Namen für den zu erstellenden Stack an und gib die erforderlichen Details ein oder übernehme die Standardwerte und klicke auf „Weiter“.

Stack Details

Gib das Tag an, das bei der Erstellung auf die SQS angewendet werden kann, und klicke auf „Weiter“.

Erweiterte Optionen

Scrolle auf der Seite nach unten und klicke auf die Schaltfläche „Stapel erstellen“, um einen Stapel zu erstellen, der eine Standardwarteschlange erzeugt.

Richtlinien und Benachrichtigungen

Du kannst den Status unter Ereignisse sehen. Sobald der Status des Stapels auf „CREATE_COMPLETE“ wechselt, bedeutet dies, dass die Warteschlange erstellt wurde.

SQS-Warteschlange erstellt

Klicke auf „Dienste“ und suche nach „SQS“, um zu sehen, ob die Warteschlange erstellt wurde oder nicht.

SQS-Dienst

Auf dem Haupt-Dashboard der SQS kannst du sehen, dass die Warteschlange erstellt wurde. Der Name der Warteschlange ist der Name des Cloudformation Stacks mit einem zufälligen Suffix, da wir den Namen der Warteschlange im Stack nicht angegeben haben.

Neue QUEUE erstellen

Eine FIFO-Warteschlange mit Cloudformation Stack erstellen

Bevor wir mit der Erstellung einer FIFO-Warteschlange fortfahren,kopiere den Code aus dem folgenden Block oder lade die Vorlage vonhier herunter und speichere sie auf deinem 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

Gehe zurück zum Haupt-Dashboard von Cloudformation und befolge die gleichen Schritte wie bei der Erstellung einer Standard-Warteschlange.

FIFO Queue

Sobald der Stack erstellt ist, kannst du sehen, dass die FIFO-Warteschlange einsatzbereit ist. Hier siehst du, dass die FIFO-Warteschlange keine zufällige Zeichenkette hat. 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.

Queue-Liste

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

Liste der Stapel

Fazit

In diesem Artikel haben wir die Schritte zur Erstellung einer Standard- und einer FIFO-Warteschlange mithilfe von Cloudformation Stack kennengelernt.

Das könnte dich auch interessieren …