GNU/Linux >> Tutoriels Linux >  >> Linux

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

AWS Simple Queue Service (SQS) est un service de file d'attente de 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, recherchez "Comment créer une file d'attente SQS sur AWS ?" article.

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 verrons les étapes pour créer une file d'attente standard et FIFO à l'aide de Cloudformation Stack.

Pré-requis

  1. Compte AWS (créez-le si vous n'en avez pas).
  2. Compréhension de base de Cloudformation Stack.
  3. Compréhension de base des files d'attente SQS.

Qu'allons-nous faire ?

  1. Connectez-vous à AWS.
  2. Créer une file d'attente standard à l'aide de Cloudformation Stack
  3. Créer une file d'attente FIFO à l'aide de Cloudformation Stack

Connexion à AWS

  1. Cliquez ici pour accéder à la page de connexion AWS.

Lorsque nous cliquons sur le lien ci-dessus, nous verrons une page Web comme suit où nous devons nous connecter en utilisant nos informations de connexion.

Une fois que nous aurons réussi à nous connecter à AWS, nous verrons la console principale avec tous les services répertoriés.

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, copiez le code du bloc suivant ou téléchargez le modèle ici et enregistrez-le sur votre ordinateur local. Ce modèle sera requis lors de la création d'une pile 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

Pour créer une file d'attente standard à l'aide de la pile Cloudformation, cliquez sur "Services" dans la barre de menu supérieure et recherchez "Cloudformation".

Sur le tableau de bord principal de Cloudformation, cliquez sur "Créer une pile" pour créer une pile.

Pour télécharger le modèle depuis votre ordinateur local, cliquez sur le bouton radio "Télécharger un fichier de modèle" et cliquez sur "Suivant".

Spécifiez un nom pour la pile à créer et remplissez les détails requis ou continuez avec les valeurs par défaut et cliquez sur "Suivant".

Spécifiez le tag qui pourra être appliqué au SQS lors de sa création et cliquez sur "Suivant".

Faites défiler la page et cliquez sur le bouton "Créer une pile" pour créer une pile qui créera une file d'attente standard.

Vous pouvez voir le statut sous Événements. Une fois que le statut passe à "CREATE_COMPLETE" de la pile, cela signifie que la file d'attente a été créée.

Cliquez sur "Services" et recherchez "SQS" pour voir si la file d'attente a été créée ou non.

Sur le tableau de bord principal du SQS, vous pouvez 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, le la raison en est que nous n'avons pas spécifié le nom de la file d'attente dans la pile.

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

Avant de procéder à la création d'une file d'attente FIFO, copiez le code du bloc suivant ou téléchargez le modèle ici et enregistrez-le sur votre 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

Retournez au tableau de bord principal de Cloudformation et suivez les mêmes étapes que nous avons suivies pour créer une file d'attente standard.

Une fois la pile créée, vous pouvez voir que la file d'attente FIFO est prête à être utilisée. Ici, vous voyez que la file d'attente FIFO n'a pas de chaîne aléatoire, la raison en est que nous avons une option dans le modèle Cloudformation où nous pouvons spécifier le nom de la file d'attente à créer.

Si les files d'attente ne sont plus nécessaires, elles peuvent être supprimées en supprimant la pile Cloudformation du tableau de bord principal.

Conclusion

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


Linux
  1. Comment utiliser la commande mkdir pour créer ou créer un répertoire Linux

  2. Comment créer et utiliser des faits personnalisés dans Ansible

  3. Gérer les files d'attente AWS SQS à l'aide d'aws-cli

  4. Comment créer un rôle IAM dans AWS à l'aide de Terraform

  5. Comment utiliser AWS CLI pour gérer Amazon S3

Comment créer un VPC Peering entre 2 VPC sur AWS

Comment créer un compartiment S3 à l'aide de Python Boto3 sur AWS

Comment créer une rubrique SNS et un abonné sur AWS

Comment créer une table DynamoDB dans AWS

Comment créer un cluster Kubernetes avec AWS CLI

Comment créer et utiliser un fichier d'échange sous Linux