웹사이트 검색

Cloudformation을 사용하여 AWS에서 SQS 대기열을 생성하는 방법


이 페이지에서

  1. 전제 조건
  2. 무엇을 할 것인가?\n
  3. Cloudformation Stack을 사용하여 표준 대기열 만들기\n
  4. Cloudformation 스택을 사용하여 FIFO 대기열 만들기\n
  5. 결론

AWS Simple Queue Service(SQS)는 마이크로서비스, 서버리스 애플리케이션 및 분산 시스템을 분리하고 확장할 수 있게 해주는 완전관리형 메시지 대기열 서비스입니다. SQS를 사용하면 손실 없이 소프트웨어 구성 요소 간에 메시지를 보내고, 저장하고, 받을 수 있습니다. AWS SQS는 표준 대기열과 FIFO 대기열이라는 두 가지 유형의 메시지 대기열을 제공합니다. SQS 대기열에 대해 자세히 알아보려면 "AWS에서 SQS 대기열을 생성하는 방법" 문서를 검색하십시오.

AWS CloudFormation을 사용하면 프로그래밍 언어(yaml/json) 또는 간단한 텍스트 파일을 사용하여 애플리케이션에 필요한 모든 리소스를 모델링하고 프로비저닝할 수 있습니다. 이를 통해 AWS 리소스에 대한 단일 정보 소스를 얻을 수 있습니다.

이 기사에서는 Cloudformation Stack을 사용하여 표준 및 FIFO 대기열을 생성하는 단계를 볼 것입니다.

전제 조건

  1. AWS 계정(계정이 없는 경우 생성).
  2. Cloudformation 스택에 대한 기본적인 이해.\n
  3. SQS 대기열에 대한 기본적인 이해.\n

우리는 무엇을 할 것인가?

  1. AWS에 로그인합니다.\n
  2. Cloudformation Stack을 사용하여 표준 대기열 만들기\n
  3. Cloudformation 스택을 사용하여 FIFO 대기열 생성\n

AWS에 로그인

  1. AWS 로그인 페이지로 이동하려면 여기를 클릭하십시오.\n

위의 링크를 누르면 로그인 세부 정보를 사용하여 로그인해야 하는 다음과 같은 웹 페이지가 표시됩니다.

AWS에 성공적으로 로그인하면 모든 서비스가 나열된 기본 콘솔이 표시됩니다.

Cloudformation Stack을 사용하여 표준 대기열 만들기

표준 대기열 생성을 진행하기 전에 다음 블록에서 코드를 복사하거나 여기에서 템플릿을 다운로드하여 로컬 머신에 저장하세요. 이 템플릿은 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

Cloudformation 스택을 사용하여 표준 대기열을 만들려면 상단 메뉴 표시줄에서 "서비스"를 클릭하고 "Cloudformation"을 검색합니다.

Cloudformation의 기본 대시보드에서 "스택 생성"을 클릭하여 스택을 생성합니다.

로컬 컴퓨터에서 템플릿을 업로드하려면 "템플릿 파일 업로드" 라디오 버튼을 클릭하고 "다음"을 클릭하십시오.

생성할 스택에 이름을 지정하고 필수 세부정보를 입력하거나 기본값으로 진행하고 "다음"을 클릭합니다.

생성 시 SQS에 적용할 수 있는 태그를 지정하고 "다음"을 클릭합니다.

페이지를 아래로 스크롤하고 "스택 생성" 버튼을 클릭하여 표준 대기열을 생성할 스택을 생성합니다.

이벤트 아래에서 상태를 볼 수 있습니다. 상태가 스택의 "CREATE_COMPLETE"로 변경되면 Queue가 생성되었음을 의미합니다.

대기열이 생성되었는지 확인하려면 "Services"를 클릭하고 "SQS"를 검색하십시오.

SQS의 기본 대시보드에서 대기열이 생성되었고 대기열에 지정된 이름이 임의의 접미사 문자열이 포함된 Cloudformation 스택 이름임을 확인할 수 있습니다. 그 이유는 대기열에 대기열 이름을 지정하지 않았기 때문입니다. 스택.

Cloudformation Stack을 사용하여 FIFO 대기열 만들기

FIFO 대기열 생성을 진행하기 전에 다음 블록에서 코드를 복사하거나 여기에서 템플릿을 다운로드하여 로컬 시스템에 저장하세요.

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

Cloudformation의 기본 대시보드로 돌아가서 표준 대기열을 생성하기 위해 수행한 것과 동일한 단계를 따릅니다.

스택이 생성되면 FIFO 대기열을 사용할 준비가 된 것을 볼 수 있습니다. 여기에서 FIFO 대기열에 임의의 문자열이 없음을 알 수 있습니다. 그 이유는 생성할 대기열의 이름을 지정할 수 있는 Cloudformation 템플릿에 옵션이 있기 때문입니다.

대기열이 더 이상 필요하지 않은 경우 기본 대시보드에서 Cloudformation 스택을 삭제하여 삭제할 수 있습니다.

결론

이 문서에서는 Cloudformation Stack을 사용하여 표준 및 FIFO 대기열을 만드는 단계를 확인했습니다.