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
- Compte AWS (créez-le si vous n'en avez pas).
- Compréhension de base de Cloudformation Stack.
- Compréhension de base des files d'attente SQS.
Qu'allons-nous faire ?
- Connectez-vous à AWS.
- Créer une file d'attente standard à l'aide de Cloudformation Stack
- Créer une file d'attente FIFO à l'aide de Cloudformation Stack
Connexion à AWS
- 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.