Comment utiliser Cloudformation pour créer des files d’attente SQS sur AWS

AWS Simple Queue Service (SQS) est un service de mise en file d’attente des messages entièrement géré qui nous permet de découpler et de mettre à l’échelle les microservices, les applications sans serveur et les systèmes distribués. Grâce à SQS, nous pouvons envoyer, stocker et recevoir des messages entre les composants logiciels sans les perdre. AWS SQS propose deux types de files d’attente de messages, les files d’attente standard et les files d’attente FIFO. Pour en savoir plus sur les files d’attente SQS, recherche l’article « Comment créer une file d’attente SQS sur AWS ».

AWS CloudFormation nous permet d’utiliser des langages de programmation (yaml/json) ou un simple fichier texte pour modéliser et provisionner toutes les ressources nécessaires à nos applications. Cela nous donne une source unique de vérité pour nos ressources AWS.

Dans cet article, nous allons voir les étapes pour créer une file d’attente standard et FIFO à l’aide de Cloudformation Stack.

Pré-requis

  1. Compte AWS (Créer si tu n’en as pas).
  2. Compréhension de base de Cloudformation Stack.
  3. Compréhension de base des files d’attente SQS.

Que ferons-nous ?

  1. Connecte-toi à AWS.
  2. Crée une File d’attente standard en utilisant Cloudformation Stack
  3. Créer une File d’attente FIFO à l’aide de Cloudformation Stack

Connecte-toi à AWS

  1. Clique sur ici pour aller sur la page de connexion AWS.

Lorsque nous cliquons sur le lien ci-dessus, nous voyons apparaître la page Web suivante où nous devons nous connecter à l’aide de nos informations de connexion.

Connecte-toi à AWS

Une fois que nous nous sommes connectés à AWS avec succès, nous verrons la console principale avec tous les services répertoriés.

AWS Management Console

Créer une file d’attente standard à l’aide de Cloudformation Stack

Avant de procéder à la création d’une file d’attente standard, copie le code du bloc suivant ou télécharge le modèleici et enregistre-le sur ta machine locale. Ce modèle sera nécessaire lors de la création d’un Cloudformation Stack.

---
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

Pour créer une File d’attente standard à l’aide de la Pile Cloudformation, clique sur « Services » dans la barre de menu supérieure et cherche « Cloudformation ».

Standard QUEUE

Sur le tableau de bord principal de Cloudformation, clique sur « Créer une pile » pour créer une pile.

Piles

Pour télécharger le modèle depuis ta machine locale, clique sur le bouton radio « Télécharger un fichier modèle » et clique sur « Suivant ».

Créer une pile

Indique un nom à la pile à créer et remplis les détails requis ou continue avec les valeurs par défaut et clique sur « Suivant ».

Détails de l'empilement

Indique la balise qui peut être appliquée au SQS lors de sa création et clique sur « Suivant ».

Options avancées

Fais défiler la page et clique sur le bouton « Créer une pile » pour créer une pile qui créera une file d’attente standard.

Politiques et notifications

Tu peux voir le statut sous Événements. Une fois que le statut passe à « CREATE_COMPLETE » de la pile, cela signifie que la Queue a été créée.

Queue SQS créée

Clique sur « Services » et cherche « SQS » pour voir si la file d’attente a été créée ou non.

Service SQS

Sur le tableau de bord principal de SQS, tu peux voir que la file d’attente a été créée et que le nom donné à la file d’attente est le nom de la pile Cloudformation avec une chaîne de suffixe aléatoire, car nous n’avons pas spécifié le nom de la file d’attente dans la pile.

Crée une nouvelle QUEUE

Créer une file d’attente FIFO à l’aide de Cloudformation Stack

Avant de procéder à la création d’une Queue FIFO, copiele code du bloc suivant ou télécharge le modèle depuisici et enregistre-le sur ton système local.

---
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

Retourne dans le tableau de bord principal de Cloudformation et suis les mêmes étapes que nous avons suivies pour créer une Queue Standard.

FIFO Queue

Une fois la pile créée, tu peux voir que la Queue FIFO est prête à être utilisée. Tu vois ici que la Queue FIFO n’a pas de chaîne aléatoire, la raison en est que nous avons une option dans le Modèle de Cloudformation où nous pouvons spécifier le nom de la Queue à créer.

Queue list

Si les Queues ne sont plus nécessaires, elles peuvent être supprimées en supprimant la Pile Cloudformation depuis le tableau de bord principal.

Liste des piles

Conclusion

Dans cet article, nous avons vu les étapes pour créer une Queue standard et FIFO à l’aide de Cloudformation Stack.

Vous aimerez aussi...