GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo usar Cloudformation para crear colas SQS en AWS

AWS Simple Queue Service (SQS) es un servicio de cola de mensajes completamente administrado que nos permite desacoplar y escalar microservicios, aplicaciones sin servidor y sistemas distribuidos. Con SQS, podemos enviar, almacenar y recibir mensajes entre componentes de software sin perderlos. AWS SQS ofrece dos tipos de colas de mensajes, colas estándar y colas FIFO. Para obtener más información sobre las colas de SQS, busque "¿Cómo crear una cola de SQS en AWS?" artículo.

AWS CloudFormation nos permite usar lenguajes de programación (yaml/json) o un archivo de texto simple para modelar y aprovisionar todos los recursos necesarios para nuestras aplicaciones. Esto nos brinda una única fuente de información para nuestros recursos de AWS.

En este artículo, veremos los pasos para crear una cola estándar y FIFO usando Cloudformation Stack.

Requisitos previos

  1. Cuenta de AWS (cree si no tiene una).
  2. Comprensión básica de Cloudformation Stack.
  3. Comprensión básica de las colas SQS.

¿Qué haremos?

  1. Inicie sesión en AWS.
  2. Cree una cola estándar con Cloudformation Stack
  3. Cree una cola FIFO usando Cloudformation Stack

Iniciar sesión en AWS

  1. Haga clic aquí para ir a la página de inicio de sesión de AWS.

Cuando hagamos clic en el enlace anterior, veremos una página web como la siguiente donde debemos iniciar sesión con nuestros datos de inicio de sesión.

Una vez que iniciemos sesión en AWS con éxito, veremos la consola principal con todos los servicios enumerados.

Crea una cola estándar con Cloudformation Stack

Antes de proceder a crear una Cola estándar, copie el código del siguiente bloque o descargue la plantilla desde aquí y guárdela en su máquina local. Esta plantilla será necesaria al crear una pila de 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

Para crear una cola estándar con Cloudformation Stack, haga clic en "Servicios" en la barra de menú superior y busque "Cloudformation".

En el tablero principal de Cloudformation, haga clic en "Crear pila" para crear una pila.

Para cargar la plantilla desde su máquina local, haga clic en el botón de radio "Cargar un archivo de plantilla" y haga clic en "Siguiente".

Especifique un nombre para la pila que se creará y complete los detalles requeridos o continúe con los valores predeterminados y haga clic en "Siguiente".

Especifique la etiqueta que se puede aplicar al SQS al momento de su creación y haga clic en "Siguiente".

Desplácese hacia abajo en la página y haga clic en el botón "Crear pila" para crear una pila que creará una cola estándar.

Puedes ver el estado en Eventos. Una vez que el estado cambia a "CREATE_COMPLETE" de la pila, significa que se ha creado la cola.

Haga clic en "Servicios" y busque "SQS" para ver si la cola se ha creado o no.

En el tablero principal de SQS, puede ver que se ha creado la Cola y el nombre que se le ha dado es el nombre de la Pila de Cloudformation con una cadena de sufijo aleatoria, el la razón de esto es que no especificamos el nombre de la cola en la pila.

Cree una cola FIFO usando Cloudformation Stack

Antes de que procedamos a crear una Cola FIFO , copie el código del siguiente bloque o descargue la plantilla desde aquí y guárdela en su sistema 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

Vuelva al panel principal de Cloudformation y siga los mismos pasos que seguimos para crear una cola estándar.

Una vez que se crea la pila, puede ver que la cola FIFO está lista para usar. Aquí puede ver que la cola FIFO no tiene una cadena aleatoria, la razón de esto es que tenemos una opción en la plantilla de Cloudformation donde podemos especificar el nombre de la cola que se creará.

Si las colas ya no son necesarias, se pueden eliminar eliminando la pila de Cloudformation del panel principal.

Conclusión

En este artículo, vimos los pasos para crear una cola estándar y FIFO con Cloudformation Stack.


Linux
  1. Cómo usar el comando mkdir para hacer o crear un directorio de Linux

  2. Cómo crear y usar datos personalizados en Ansible

  3. Administre las colas de AWS SQS con aws-cli

  4. Cómo crear un rol de IAM en AWS usando Terraform

  5. Cómo usar AWS CLI para administrar Amazon S3

Cómo crear un emparejamiento de VPC entre 2 VPC en AWS

Cómo crear un depósito S3 usando Python Boto3 en AWS

Cómo crear un tema de SNS y un suscriptor en AWS

Cómo crear una tabla de DynamoDB en AWS

Cómo crear un clúster de Kubernetes con AWS CLI

Cómo crear y usar un archivo de intercambio en Linux