SQS CLI 사용법

Qiita에 있는 글을 한 번 가져왔습니다.

출처 : http://qiita.com/tcsh/items/a41ac99e41430c1d758c

Amazon SQS의 주의점

  • FIFO(First In First Out)이 아니다. (US Region에서는 FIFO 사용 가능)
  • 동일한 메시지가 최소 1번에서 여러 번 처리 될 수 있다.
  • Receive 한 후 delete를 건네주지 않으면 같은 메시지가 설정된 시간 후에 다시 도착할 수 있다.

전제 조건

SQS에 대한 권한 -SQS에 대한 모든 권한이 있어야합니다.

AWS CLI 버전

다음 버전에서 동작 확인

  • AWS CLI 1.10.6
  • AWS CLI 1.6.10
명령
aws --version
결과 (예)
aws-cli / 1.9.20 Python / 2.7.5 Darwin / 13.4.0 botocore / 1.3.20

0. 준비

0.1. 지역 설정

이용하는 지역을 결정합니다. (현재 사용자가 사용하는 현재 지역도 변경됩니다.)

변수 설정 (도쿄 지역의 경우) (aws configure로도 설정 가능)
export AWS_DEFAULT_REGION = 'ap-northeast-1'

0.2 지역 설정의 확인

지역 설정이 잘 되어 있는지 확인합니다.

명령
aws configure list
결과 (예)
            Name Value Type Location
            ---- ----- ---- --------
         profile sqs-prjz-mbp13 env AWS_DEFAULT_PROFILE
      access_key **************** XXXX shared-credentials-file
      secret_key **************** XXXX shared-credentials-file
          region ap-northeast-1 env AWS_DEFAULT_REGION

1. 사전 작업

큐 이름 결정 – 만드는 큐의 이름을 결정합니다.

변수의 설정
SQS_QUEUE_NAME = $ ( date + % Y % m % d ) -handsome-queue \ 
  &&  echo  $ { SQS_QUEUE_NAME }

큐 이름은 Region에서 고유해야합니다.

큐 이름 중복 확인 – 이미 같은 이름의 큐가 존재하지 않는 것을 확인합니다.

명령
aws sqs list-queues \ 
        --queue-name-prefix $ { SQS_QUEUE_NAME }
결과 (예)
      (반환 값 없음)

2. 큐 만들기

2.1 큐 만들기

큐를 만듭니다.

변수 확인
cat << ETX

        SQS_QUEUE_NAME : $ {SQS_QUEUE_NAME}

ETX
명령
aws sqs create-queue \ 
        --queue-name $ { SQS_QUEUE_NAME }
결과 (예)
      { 
        "QueueUrl" :  "https://ap-northeast-1.queue.amazonaws.com/XXXXXXXXXXXX/20160509-handson-queue" 
      }

2.2 큐 확인

만든 큐가 큐 목록에 표시되는지 확인합니다.

명령
aws sqs list-queues \ 
        --queue-name-prefix $ { SQS_QUEUE_NAME }
결과 (예)
      { 
        "QueueUrls" :  [ 
          "https://ap-northeast-1.queue.amazonaws.com/XXXXXXXXXXXX/20160509-handson-queue" 
        ] 
      }

반영되기까지 시간 지연이있는 것 같습니다.

3. 큐의 URL 검색

SQS에서 큐를 조작하는 경우에는 대상 큐의 URL을 특정해야합니다.

이 URL을 변수로 가져옵니다.

명령
SQS_QUEUE_URL = $ (  \ 
        aws sqs get-queue-url \ 
          --queue-name $ { SQS_QUEUE_NAME }  \ 
          --output text \ 
      )  \ 
       &&  echo  $ { SQS_QUEUE_URL }
결과 (예)
      https://ap-northeast-1.queue.amazonaws.com/XXXXXXXXXXXX/20160509-handson-queue

4. 큐의 속성 (Attributes)

SQS 큐의 속성은 get-queue-attributes 명령 옵션에 속성 이름을 지정하여 확인할 수 있습니다.

(속성 이름을 지정하지 않으면 아무것도 표시되지 않습니다 …)

큐 생성 직후의 기본 속성을 확인하자.

명령
aws sqs get-queue-attributes \ 
        --queue-url $ { SQS_QUEUE_URL }  \ 
        --attribute-names \ 
          Policy \ 
          VisibilityTimeout \ 
          MaximumMessageSize \ 
          MessageRetentionPeriod \ 
          ApproximateNumberOfMessages \ 
          ApproximateNumberOfMessagesNotVisible \ 
          CreatedTimestamp \ 
          LastModifiedTimestamp \ 
          QueueArn \ 
          ApproximateNumberOfMessagesDelayed \ 
          DelaySeconds \ 
          ReceiveMessageWaitTimeSeconds \
          RedrivePolicy
결과 (예)
      { 
        "Attributes" :  { 
          "ApproximateNumberOfMessagesNotVisible" :  "0" , 
          "VisibilityTimeout" :  "30" , 
          "LastModifiedTimestamp" :  "1456735033" , 
          "MaximumMessageSize" :  "262144" , 
          "CreatedTimestamp" :  "1456735033" , 
          "ApproximateNumberOfMessages" :  "0" , 
          "ReceiveMessageWaitTimeSeconds" :  "0" , 
          "DelaySeconds" :  "0" , 
          "MessageRetentionPeriod" :  "345600" , 
          "ApproximateNumberOfMessagesDelayed" :  "0" , 
          "QueueArn" :  "arn : aws : sqs : ap-northeast -1 : XXXXXXXXXXXX : 20160509-handson-queue " 
        } 
      }

다음 속성은 큐를 생성 한 후 값이 존재하지 않는 것 같습니다.

  • Policy
  • RedrivePolicy

5. 큐의 속성 변경 (VisibilityTimeout)

SQS 큐의 속성은 set-queue-attributes 명령으로 변경이 가능합니다.

여기에서는 VisibilityTimeout 값을 변경하여 봅시다.

5.1. VisibilityTimeout 확인

VisibilityTimeout받은 작업을 수행하면 그 메시지가 보이지 않을 때 일정 시간입니다. Timeout 전에 그 메시지에 대한 삭제 작업이되지 않으면 다시 큐로 반환됩니다.

하나의 메시지를 여러 클라이언트가 동시에 취득하지 않기위한 구조입니다.

큐 속성 VisibilityTimeout는 큐의 VisibilityTimeout의 기본값을 설정합니다.

기본값은 30 초입니다.

명령
aws sqs get-queue-attributes \ 
        --queue-url $ { SQS_QUEUE_URL }  \
        --attribute-names VisibilityTimeout
결과 (예)
      { 
          "Attributes" :  { 
              "VisibilityTimeout" :  "30" 
          } 
      }

5.2 VisibilityTimeout 변경

큐 속성 VisibilityTimeout을 60 초로 변경하자.

변수의 설정
SQS_VTOUT = 60
변수 확인
cat << ETX 
  SQS_QUEUE_URL : $ {SQS_QUEUE_URL} 
  SQS_VTOUT : $ {SQS_VTOUT} 
ETX
명령
aws sqs set -queue-attributes \ 
        --queue-url $ { SQS_QUEUE_URL }  \ 
        --attributes VisibilityTimeout = $ { SQS_VTOUT }
결과 (예)
      (반환 값 없음)

5.3 VisibilityTimeout 확인

큐 속성 VisibilityTimeout이 60 초로 설정되어 있는지 확인합니다.

명령
aws sqs get-queue-attributes \ 
        --queue-url $ { SQS_QUEUE_URL }  \
        --attribute-names VisibilityTimeout

결과

{ “Attributes” : { “VisibilityTimeout” : “60” } }

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중