AWS CLI를 사용한 Amazon SQS 예시 - AWS Command Line Interface

이 문서는 AWS CLI의 버전 1에만 해당합니다. AWS CLI의 버전 2와 관련된 문서는 버전 2 사용 설명서를 참조하세요.

AWS CLI를 사용한 Amazon SQS 예시

다음 코드 예시는 Amazon SQS와 함께 AWS Command Line Interface를 사용하여 작업을 수행하고 일반적인 시나리오를 구현하는 방법을 보여줍니다.

작업은 대규모 프로그램에서 발췌한 코드이며 컨텍스트에 맞춰 실행해야 합니다. 작업은 관련 시나리오의 컨텍스트에 따라 표시되며, 개별 서비스 함수를 직접적으로 호출하는 방법을 보여줍니다.

각 예시에는 전체 소스 코드에 대한 링크가 포함되어 있으며, 여기에서 컨텍스트에 맞춰 코드를 설정하고 실행하는 방법에 대한 지침을 찾을 수 있습니다.

주제

작업

다음 코드 예시에서는 add-permission의 사용 방법을 보여줍니다.

AWS CLI

대기열에 권한 추가

이 예시에서는 지정된 AWS 계정이 지정된 대기열로 메시지를 보낼 수 있도록 합니다.

명령:

aws sqs add-permission --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --label SendMessagesFromMyQueue --aws-account-ids 12345EXAMPLE --actions SendMessage

출력:

None.
  • API 세부 정보는 AWS CLI 명령 참조AddPermission을 참조하세요.

다음 코드 예시에서는 cancel-message-move-task의 사용 방법을 보여줍니다.

AWS CLI

메시지 이동 작업 취소

다음 cancel-message-move-task 예시에서는 지정된 메시지 이동 작업을 취소합니다.

aws sqs cancel-message-move-task \ --task-handle AQEB6nR4...HzlvZQ==

출력:

{ "ApproximateNumberOfMessagesMoved": 102 }

자세한 내용은 개발자 안내서Amazon SQS API 권한: 작업 및 리소스 참조를 참조하세요.

다음 코드 예시에서는 change-message-visibility-batch의 사용 방법을 보여줍니다.

AWS CLI

여러 메시지의 제한 시간 가시성 일괄 변경

이 예시에서는 지정된 2개 메시지의 제한 시간 가시성을 10시간(10시간 * 60분 * 60초)으로 변경합니다.

명령:

aws sqs change-message-visibility-batch --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --entries file://change-message-visibility-batch.json

입력 파일(change-message-visibility-batch.json):

[ { "Id": "FirstMessage", "ReceiptHandle": "AQEBhz2q...Jf3kaw==", "VisibilityTimeout": 36000 }, { "Id": "SecondMessage", "ReceiptHandle": "AQEBkTUH...HifSnw==", "VisibilityTimeout": 36000 } ]

출력:

{ "Successful": [ { "Id": "SecondMessage" }, { "Id": "FirstMessage" } ] }

다음 코드 예시에서는 change-message-visibility의 사용 방법을 보여줍니다.

AWS CLI

메시지의 제한 시간 가시성 변경

이 예시에서는 지정된 메시지의 제한 시간 가시성을 10시간(10시간 * 60분 * 60초)으로 변경합니다.

명령:

aws sqs change-message-visibility --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --receipt-handle AQEBTpyI...t6HyQg== --visibility-timeout 36000

출력:

None.

다음 코드 예시에서는 create-queue의 사용 방법을 보여줍니다.

AWS CLI

대기열 생성

이 예시에서는 지정된 이름의 대기열을 만들고, 메시지 보존 기간을 3일(3일 * 24시간 * 60분 * 60초)로 설정하고, 대기열의 Dead Letter Queue(DLQ)를 최대 메시지 수신 개수가 1,000개인 지정된 대기열로 설정합니다.

명령:

aws sqs create-queue --queue-name MyQueue --attributes file://create-queue.json

입력 파일(create-queue.json):

{ "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyDeadLetterQueue\",\"maxReceiveCount\":\"1000\"}", "MessageRetentionPeriod": "259200" }

출력:

{ "QueueUrl": "https://queue.amazonaws.com/80398EXAMPLE/MyQueue" }
  • API 세부 정보는 AWS CLI 명령 참조CreateQueue를 참조하세요.

다음 코드 예시에서는 delete-message-batch의 사용 방법을 보여줍니다.

AWS CLI

여러 메시지 일괄 삭제

이 예시에서는 지정된 메시지를 삭제합니다.

명령:

aws sqs delete-message-batch --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --entries file://delete-message-batch.json

입력 파일(delete-message-batch.json):

[ { "Id": "FirstMessage", "ReceiptHandle": "AQEB1mgl...Z4GuLw==" }, { "Id": "SecondMessage", "ReceiptHandle": "AQEBLsYM...VQubAA==" } ]

출력:

{ "Successful": [ { "Id": "FirstMessage" }, { "Id": "SecondMessage" } ] }

다음 코드 예시에서는 delete-message의 사용 방법을 보여줍니다.

AWS CLI

메시지 삭제

이 예시에서는 지정된 메시지를 삭제합니다.

명령:

aws sqs delete-message --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --receipt-handle AQEBRXTo...q2doVA==

출력:

None.
  • API 세부 정보는 AWS CLI 명령 참조DeleteMessage를 참조하세요.

다음 코드 예시에서는 delete-queue의 사용 방법을 보여줍니다.

AWS CLI

대기열 삭제

이 예시에서는 지정된 대기열을 삭제합니다.

명령:

aws sqs delete-queue --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewerQueue

출력:

None.
  • API 세부 정보는 AWS CLI 명령 참조DeleteQueue를 참조하세요.

다음 코드 예시에서는 get-queue-attributes의 사용 방법을 보여줍니다.

AWS CLI

대기열의 속성 가져오기

이 예시에서는 지정된 대기열의 모든 속성을 가져옵니다.

명령:

aws sqs get-queue-attributes --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --attribute-names All

출력:

{ "Attributes": { "ApproximateNumberOfMessagesNotVisible": "0", "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyDeadLetterQueue\",\"maxReceiveCount\":1000}", "MessageRetentionPeriod": "345600", "ApproximateNumberOfMessagesDelayed": "0", "MaximumMessageSize": "262144", "CreatedTimestamp": "1442426968", "ApproximateNumberOfMessages": "0", "ReceiveMessageWaitTimeSeconds": "0", "DelaySeconds": "0", "VisibilityTimeout": "30", "LastModifiedTimestamp": "1442426968", "QueueArn": "arn:aws:sqs:us-east-1:80398EXAMPLE:MyNewQueue" } }

이 예시에서는 지정된 대기열의 최대 메시지 크기 및 가시성 제한 시간 속성만 가져옵니다.

명령:

aws sqs get-queue-attributes --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewQueue --attribute-names MaximumMessageSize VisibilityTimeout

출력:

{ "Attributes": { "VisibilityTimeout": "30", "MaximumMessageSize": "262144" } }

다음 코드 예시에서는 get-queue-url의 사용 방법을 보여줍니다.

AWS CLI

대기열 URL 가져오기

이 예시에서는 지정된 대기열의 URL을 가져옵니다.

명령:

aws sqs get-queue-url --queue-name MyQueue

출력:

{ "QueueUrl": "https://queue.amazonaws.com/80398EXAMPLE/MyQueue" }
  • API 세부 정보는 AWS CLI 명령 참조GetQueueUrl을 참조하세요.

다음 코드 예시에서는 list-dead-letter-source-queues의 사용 방법을 보여줍니다.

AWS CLI

Dead Letter 소스 대기열 나열

이 예시에서는 지정된 Dead Letter 소스 대기열에 연결된 대기열을 나열합니다.

명령:

aws sqs list-dead-letter-source-queues --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyDeadLetterQueue

출력:

{ "queueUrls": [ "https://queue.amazonaws.com/80398EXAMPLE/MyQueue", "https://queue.amazonaws.com/80398EXAMPLE/MyOtherQueue" ] }

다음 코드 예시에서는 list-message-move-tasks의 사용 방법을 보여줍니다.

AWS CLI

메시지 이동 작업 나열

다음 list-message-move-tasks 예시에서는 지정된 대기열의 최근 메시지 이동 작업 2개를 나열합니다.

aws sqs list-message-move-tasks \ --source-arn arn:aws:sqs:us-west-2:80398EXAMPLE:MyQueue \ --max-results 2

출력:

{ "Results": [ { "TaskHandle": "AQEB6nR4...HzlvZQ==", "Status": "RUNNING", "SourceArn": "arn:aws:sqs:us-west-2:80398EXAMPLE:MyQueue1", "DestinationArn": "arn:aws:sqs:us-west-2:80398EXAMPLE:MyQueue2", "MaxNumberOfMessagesPerSecond": 50, "ApproximateNumberOfMessagesMoved": 203, "ApproximateNumberOfMessagesToMove": 30, "StartedTimestamp": 1442428276921 }, { "Status": "COMPLETED", "SourceArn": "arn:aws:sqs:us-west-2:80398EXAMPLE:MyQueue1", "DestinationArn": "arn:aws:sqs:us-west-2:80398EXAMPLE:MyQueue2", "ApproximateNumberOfMessagesMoved": 29, "ApproximateNumberOfMessagesToMove": 0, "StartedTimestamp": 1342428272093 } ] }

자세한 내용은 개발자 안내서Amazon SQS API 권한: 작업 및 리소스 참조를 참조하세요.

다음 코드 예시에서는 list-queue-tags의 사용 방법을 보여줍니다.

AWS CLI

대기열의 모든 비용 할당 태그 나열

다음 list-queue-tags 예시에서는 지정된 대기열에 연결된 모든 비용 할당 태그를 표시합니다.

aws sqs list-queue-tags \ --queue-url https://sqs.us-west-2.amazonaws.com/123456789012/MyQueue

출력:

{ "Tags": { "Team": "Alpha" } }

자세한 내용은 Amazon Simple Queue Service 개발자 안내서비용 할당 태그 나열을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조ListQueueTags를 참조하세요.

다음 코드 예시에서는 list-queues의 사용 방법을 보여줍니다.

AWS CLI

대기열 나열

이 예시에서는 모든 대기열을 나열합니다.

명령:

aws sqs list-queues

출력:

{ "QueueUrls": [ "https://queue.amazonaws.com/80398EXAMPLE/MyDeadLetterQueue", "https://queue.amazonaws.com/80398EXAMPLE/MyQueue", "https://queue.amazonaws.com/80398EXAMPLE/MyOtherQueue", "https://queue.amazonaws.com/80398EXAMPLE/TestQueue1", "https://queue.amazonaws.com/80398EXAMPLE/TestQueue2" ] }

이 예시에서는 'My'로 시작하는 대기열만 나열합니다.

명령:

aws sqs list-queues --queue-name-prefix My

출력:

{ "QueueUrls": [ "https://queue.amazonaws.com/80398EXAMPLE/MyDeadLetterQueue", "https://queue.amazonaws.com/80398EXAMPLE/MyQueue", "https://queue.amazonaws.com/80398EXAMPLE/MyOtherQueue" ] }
  • API 세부 정보는 AWS CLI 명령 참조ListQueues를 참조하세요.

다음 코드 예시에서는 purge-queue의 사용 방법을 보여줍니다.

AWS CLI

대기열 제거

이 예시에서는 지정된 대기열의 모든 메시지를 삭제합니다.

명령:

aws sqs purge-queue --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewQueue

출력:

None.
  • API 세부 정보는 AWS CLI 명령 참조PurgeQueue를 참조하세요.

다음 코드 예시에서는 receive-message의 사용 방법을 보여줍니다.

AWS CLI

메시지 수신

이 예시에서는 사용 가능한 메시지를 최대 10개까지 수신하고 사용 가능한 속성을 모두 반환합니다.

명령:

aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --attribute-names All --message-attribute-names All --max-number-of-messages 10

출력:

{ "Messages": [ { "Body": "My first message.", "ReceiptHandle": "AQEBzbVv...fqNzFw==", "MD5OfBody": "1000f835...a35411fa", "MD5OfMessageAttributes": "9424c491...26bc3ae7", "MessageId": "d6790f8d-d575-4f01-bc51-40122EXAMPLE", "Attributes": { "ApproximateFirstReceiveTimestamp": "1442428276921", "SenderId": "AIDAIAZKMSNQ7TEXAMPLE", "ApproximateReceiveCount": "5", "SentTimestamp": "1442428276921" }, "MessageAttributes": { "PostalCode": { "DataType": "String", "StringValue": "ABC123" }, "City": { "DataType": "String", "StringValue": "Any City" } } } ] }

이 예시에서는 다음으로 사용 가능한 메시지를 수신하여 SenderID 및 SentTimestamp 속성과 PostalCode 메시지 속성만 반환합니다.

명령:

aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --attribute-names SenderId SentTimestamp --message-attribute-names PostalCode

출력:

{ "Messages": [ { "Body": "My first message.", "ReceiptHandle": "AQEB6nR4...HzlvZQ==", "MD5OfBody": "1000f835...a35411fa", "MD5OfMessageAttributes": "b8e89563...e088e74f", "MessageId": "d6790f8d-d575-4f01-bc51-40122EXAMPLE", "Attributes": { "SenderId": "AIDAIAZKMSNQ7TEXAMPLE", "SentTimestamp": "1442428276921" }, "MessageAttributes": { "PostalCode": { "DataType": "String", "StringValue": "ABC123" } } } ] }
  • API 세부 정보는 AWS CLI 명령 참조ReceiveMessage를 참조하세요.

다음 코드 예시에서는 remove-permission의 사용 방법을 보여줍니다.

AWS CLI

권한 제거

이 예시에서는 지정된 대기열에서 지정된 레이블이 있는 권한을 제거합니다.

명령:

aws sqs remove-permission --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --label SendMessagesFromMyQueue

출력:

None.
  • API 세부 정보는 AWS CLI 명령 참조RemovePermission을 참조하세요.

다음 코드 예시에서는 send-message-batch의 사용 방법을 보여줍니다.

AWS CLI

여러 메시지 일괄 전송

이 예시에서는 지정된 메시지 본문, 지연 기간 및 메시지 속성이 설정된 메시지 2개를 지정된 대기열로 보냅니다.

명령:

aws sqs send-message-batch --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --entries file://send-message-batch.json

입력 파일(send-message-batch.json):

[ { "Id": "FuelReport-0001-2015-09-16T140731Z", "MessageBody": "Fuel report for account 0001 on 2015-09-16 at 02:07:31 PM.", "DelaySeconds": 10, "MessageAttributes": { "SellerName": { "DataType": "String", "StringValue": "Example Store" }, "City": { "DataType": "String", "StringValue": "Any City" }, "Region": { "DataType": "String", "StringValue": "WA" }, "PostalCode": { "DataType": "String", "StringValue": "99065" }, "PricePerGallon": { "DataType": "Number", "StringValue": "1.99" } } }, { "Id": "FuelReport-0002-2015-09-16T140930Z", "MessageBody": "Fuel report for account 0002 on 2015-09-16 at 02:09:30 PM.", "DelaySeconds": 10, "MessageAttributes": { "SellerName": { "DataType": "String", "StringValue": "Example Fuels" }, "City": { "DataType": "String", "StringValue": "North Town" }, "Region": { "DataType": "String", "StringValue": "WA" }, "PostalCode": { "DataType": "String", "StringValue": "99123" }, "PricePerGallon": { "DataType": "Number", "StringValue": "1.87" } } } ]

출력:

{ "Successful": [ { "MD5OfMessageBody": "203c4a38...7943237e", "MD5OfMessageAttributes": "10809b55...baf283ef", "Id": "FuelReport-0001-2015-09-16T140731Z", "MessageId": "d175070c-d6b8-4101-861d-adeb3EXAMPLE" }, { "MD5OfMessageBody": "2cf0159a...c1980595", "MD5OfMessageAttributes": "55623928...ae354a25", "Id": "FuelReport-0002-2015-09-16T140930Z", "MessageId": "f9b7d55d-0570-413e-b9c5-a9264EXAMPLE" } ] }
  • API 세부 정보는 AWS CLI 명령 참조SendMessageBatch를 참조하세요.

다음 코드 예시에서는 send-message의 사용 방법을 보여줍니다.

AWS CLI

메시지 전송

이 예시에서는 지정된 메시지 본문, 지연 기간 및 메시지 속성이 설정된 메시지를 지정된 대기열로 보냅니다.

명령:

aws sqs send-message --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue --message-body "Information about the largest city in Any Region." --delay-seconds 10 --message-attributes file://send-message.json

입력 파일(send-message.json):

{ "City": { "DataType": "String", "StringValue": "Any City" }, "Greeting": { "DataType": "Binary", "BinaryValue": "Hello, World!" }, "Population": { "DataType": "Number", "StringValue": "1250800" } }

출력:

{ "MD5OfMessageBody": "51b0a325...39163aa0", "MD5OfMessageAttributes": "00484c68...59e48f06", "MessageId": "da68f62c-0c07-4bee-bf5f-7e856EXAMPLE" }
  • API 세부 정보는 AWS CLI 명령 참조SendMessage를 참조하세요.

다음 코드 예시에서는 set-queue-attributes의 사용 방법을 보여줍니다.

AWS CLI

대기열 속성 설정

이 예시에서는 지정된 대기열을 전송 지연 10초, 최대 메시지 크기 128KB(128KB * 1,024바이트), 메시지 보존 기간 3일(3일 * 24시간 * 60분 * 60초), 메시지 수신 대기 시간 20초, 기본 가시성 제한 시간 60초로 설정합니다. 또한 이 예시에서는 최대 메시지 수신 개수가 1,000개인 지정된 Dead Letter Queue(DLQ)를 연결합니다.

명령:

aws sqs set-queue-attributes --queue-url https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewQueue --attributes file://set-queue-attributes.json

입력 파일(set-queue-attributes.json):

{ "DelaySeconds": "10", "MaximumMessageSize": "131072", "MessageRetentionPeriod": "259200", "ReceiveMessageWaitTimeSeconds": "20", "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyDeadLetterQueue\",\"maxReceiveCount\":\"1000\"}", "VisibilityTimeout": "60" }

출력:

None.

다음 코드 예시에서는 start-message-move-task의 사용 방법을 보여줍니다.

AWS CLI

예시 1: *메시지 이동 작업 시작*

다음 start-message-move-task 예시에서는 메시지 이동 작업을 시작하여 지정된 Dead Letter Queue(DLQ)에서 소스 대기열로 메시지를 이동시킵니다.

aws sqs start-message-move-task \ --source-arn arn:aws:sqs:us-west-2:80398EXAMPLE:MyQueue

출력:

{ "TaskHandle": "AQEB6nR4...HzlvZQ==" }

자세한 내용은 안내서의 이름주제 제목을 참조하세요.

예시 2: *메시지 이동 작업을 최대 속도로 시작*

다음 start-message-move-task 예시에서는 메시지 이동 작업을 시작하여 지정된 Dead Letter Queue(DLQ)에서 지정된 대상 대기열로 메시지를 초당 최대 50개의 메시지 속도로 이동시킵니다.

aws sqs start-message-move-task \ --source-arn arn:aws:sqs:us-west-2:80398EXAMPLE:MyQueue1 \ --destination-arn arn:aws:sqs:us-west-2:80398EXAMPLE:MyQueue2 \ --max-number-of-messages-per-second 50

출력:

{ "TaskHandle": "AQEB6nR4...HzlvZQ==" }

자세한 내용은 개발자 안내서Amazon SQS API 권한: 작업 및 리소스 참조를 참조하세요.

다음 코드 예시에서는 tag-queue의 사용 방법을 보여줍니다.

AWS CLI

대기열에 비용 할당 태그 추가

다음 tag-queue 예시에서는 지정된 Amazon SQS 대기열에 비용 할당 태그를 추가합니다.

aws sqs tag-queue \ --queue-url https://sqs.us-west-2.amazonaws.com/123456789012/MyQueue \ --tags Priority=Highest

이 명령은 출력을 생성하지 않습니다.

자세한 내용은 Amazon Simple Queue Service 개발자 안내서비용 할당 태그 추가를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조TagQueue를 참조하세요.

다음 코드 예시에서는 untag-queue의 사용 방법을 보여줍니다.

AWS CLI

대기열에서 비용 할당 태그 제거

다음 untag-queue 예시에서는 지정된 Amazon SQS 대기열에서 비용 할당 태그를 제거합니다.

aws sqs untag-queue \ --queue-url https://sqs.us-west-2.amazonaws.com/123456789012/MyQueue \ --tag-keys "Priority"

이 명령은 출력을 생성하지 않습니다.

자세한 내용은 Amazon Simple Queue Service 개발자 안내서비용 할당 태그 추가를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조UntagQueue를 참조하세요.