본문 바로가기

퍼블릭 클라우드

[aws] AWS CLI를 사용하여 Amazon SQS 큐를 생성하고 확인하는 방법

728x90

AWS CLI를 사용하여 Amazon SQS 큐를 생성하고 확인하는 방법

1. 큐 생성

aws sqs create-queue --queue-name MyQueue

위 명령은 "MyQueue"라는 이름의 새로운 SQS 큐를 생성합니다. 큐 생성에 성공하면 큐의 URL이 출력됩니다.

 

2. 큐 확인

aws sqs list-queues

위 명령은 AWS 계정에 있는 모든 SQS 큐의 URL을 출력합니다. 출력된 URL에서 MyQueue의 URL을 찾을 수 있습니다.

{
    "QueueUrls": [
        "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue",
        "https://sqs.us-east-1.amazonaws.com/123456789012/YourQueue"
    ]
}

 

3. 큐 정보 확인

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

위 명령은 "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" URL을 가진 SQS 큐의 모든 속성을 출력합니다. 출력된 결과에서 큐의 이름, URL, 생성일 등의 정보를 확인할 수 있습니다.

 

위의 명령은 AWS CLI를 사용하여 Amazon SQS 큐를 생성하고 확인하는 방법을 보여줍니다. 다른 SQS 관련 명령어를 사용하여 메시지 전송, 메시지 수신 등 다양한 작업을 수행할 수 있습니다.

 

4. 큐 삭제

aws sqs delete-queue --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue

위 명령은 "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" URL을 가진 SQS 큐를 삭제합니다.

 

5. 메시지 전송

aws sqs send-message --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue --message-body "Hello World!"

위 명령은 "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" URL을 가진 SQS 큐에 "Hello World!"라는 메시지를 전송합니다.

 

6. 메시지 수신

aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue

위 명령은 "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" URL을 가진 SQS 큐에서 가장 오래된 메시지를 수신합니다. 출력된 결과에서 수신된 메시지의 ID, 본문 등의 정보를 확인할 수 있습니다.

 

위의 명령은 Amazon SQS 큐에 대한 간단한 작업을 AWS CLI를 사용하여 수행하는 방법을 보여줍니다. 더 많은 명령어와 옵션을 사용하여 더 다양한 작업을 수행할 수 있습니다.

 

7. 메시지 삭제

aws sqs delete-message --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue --receipt-handle AQEBwEXAMPLEu+8IwvSQn2iFrMQ==

위 명령은 "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" URL을 가진 SQS 큐에서 지정된 receipt handle을 가진 메시지를 삭제합니다. receipt handle은 메시지를 수신할 때 받는 핸들 값입니다.

 

8. 메시지 일괄 삭제

aws sqs delete-message-batch --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue --entries Id=1,ReceiptHandle=AQEBwEXAMPLEu+8IwvSQn2iFrMQ== Id=2,ReceiptHandle=AQEBwEXAMPLEu+8IwvSQn2iFrMQ==

위 명령은 "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" URL을 가진 SQS 큐에서 지정된 receipt handle을 가진 메시지를 일괄적으로 삭제합니다.

 

9. 큐 속성 업데이트

aws sqs set-queue-attributes --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue --attributes VisibilityTimeout=3600

위 명령은 "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" URL을 가진 SQS 큐의 속성 중 VisibilityTimeout을 3600초(1시간)로 업데이트합니다. VisibilityTimeout은 메시지가 처리 중인 동안 해당 메시지를 다른 소비자가 처리하지 못하도록 지정하는 시간입니다.

 

이와 같이 AWS CLI를 사용하여 Amazon SQS 큐를 조작할 수 있습니다. AWS SDK를 사용하여 프로그래밍 방식으로 Amazon SQS를 사용할 수도 있습니다.

 

10. 큐 속성 확인

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

위 명령은 "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" URL을 가진 SQS 큐의 속성 중 VisibilityTimeout과 MaximumMessageSize를 확인합니다.

 

11. 큐 URL 목록 확인

aws sqs list-queues

위 명령은 현재 AWS 계정에서 사용 가능한 모든 Amazon SQS 큐 URL 목록을 반환합니다.

 

12. 큐 이름으로 URL 검색

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

위 명령은 "MyQueue"라는 이름의 Amazon SQS 큐의 URL을 검색합니다. 반환된 결과에서 큐의 URL을 확인할 수 있습니다.

 

이러한 AWS CLI 명령을 사용하여 Amazon SQS 큐를 조작할 수 있습니다. 이외에도 다양한 명령이 있으며, 사용자의 필요에 따라 적절한 명령을 선택하여 Amazon SQS를 사용할 수 있습니다.

 

13. 큐 삭제

aws sqs delete-queue --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue

위 명령은 "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" URL을 가진 Amazon SQS 큐를 삭제합니다. 이 명령을 실행하면 해당 큐에서 모든 메시지가 삭제되고, 큐도 삭제됩니다.

 

14. 지역별 큐 목록 확인

aws sqs list-queues --region us-west-2

위 명령은 "us-west-2" 지역에서 사용 가능한 Amazon SQS 큐 URL 목록을 반환합니다.

 

15. 메시지 푸시 알림 구성

aws sqs create-queue --queue-name MyQueue --attributes "Policy={\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Action\":\"sqs:SendMessage\",\"Resource\":\"arn:aws:sqs:us-east-1:123456789012:MyQueue\",\"Condition\":{\"ArnEquals\":{\"aws:SourceArn\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\"}}}]}"

위 명령은 "MyQueue"라는 이름의 Amazon SQS 큐를 생성하고, 해당 큐로 메시지를 전송할 수 있는 권한을 가진 Amazon SNS 주제(arn:aws:sns:us-east-1:123456789012:MyTopic)에서 메시지를 보내도록 구성합니다. 이를 통해 Amazon SNS 주제에서 발생한 이벤트를 Amazon SQS 큐에 전달할 수 있습니다.

 

16. 메시지 수신 대기 시간 구성

aws sqs create-queue --queue-name MyQueue --attributes "ReceiveMessageWaitTimeSeconds=20"

위 명령은 "MyQueue"라는 이름의 Amazon SQS 큐를 생성하고, 해당 큐에서 메시지를 수신 대기할 때 20초 동안 대기하도록 구성합니다.

 

이러한 AWS CLI 명령을 사용하여 Amazon SQS 큐를 생성, 삭제, 수정 및 조회할 수 있습니다. 이외에도 다양한 명령이 있으며, 사용자의 필요에 따라 적절한 명령을 선택하여 Amazon SQS를 사용할 수 있습니다.

 

17. 큐에 메시지 전송

aws sqs send-message --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue --message-body "Hello World"

위 명령은 "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" URL을 가진 Amazon SQS 큐로 "Hello World" 메시지를 전송합니다.

 

18. 큐에서 메시지 수신

aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue

위 명령은 "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" URL을 가진 Amazon SQS 큐에서 메시지를 수신합니다. 이 명령은 큐에서 첫 번째 메시지를 수신하고 해당 메시지의 내용을 반환합니다.

728x90

19. 메시지 삭제

aws sqs delete-message --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue --receipt-handle AQEBBX8r9rRv4syD0Z2kY47i4h4LxIv+3Ez0i0t1qbA9XneRRFYvd8mcMqbTcCj58iL0Q2A0dew78g32Jy45bH9XgADlE8bW+6ZjPfvFnBhdd2ndv+VAWthJy+hL/7e1R+Rv/YptEx1Z2enF4J4PqoMxqz3nSvpV7bKk3qYw7yW8dIPsxI7X9vp3tq+w=

위 명령은 "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" URL을 가진 Amazon SQS 큐에서 메시지를 삭제합니다. 이 명령은 삭제할 메시지의 ReceiptHandle을 지정하여 메시지를 삭제합니다.

 

20. 메시지 속성 확인

aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue --attribute-names All

위 명령은 "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" URL을 가진 Amazon SQS 큐에서 메시지를 수신하고, 해당 메시지의 모든 속성을 반환합니다.

 

이러한 AWS CLI 명령을 사용하여 Amazon SQS 큐에서 메시지를 전송, 수신 및 삭제할 수 있습니다. 이외에도 다양한 명령이 있으며, 사용자의 필요에 따라 적절한 명령을 선택하여 Amazon SQS를 사용할 수 있습니다.

 

21. 메시지 대기 시간 확인

aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue --attribute-names ApproximateReceiveCount, SentTimestamp, ApproximateFirstReceiveTimestamp, VisibilityTimeout

위 명령은 "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" URL을 가진 Amazon SQS 큐에서 메시지를 수신하고, 해당 메시지의 대기 시간 관련 속성을 반환합니다.

 

22. 메시지 수정

aws sqs receive-message --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue
aws sqs change-message-visibility --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue --receipt-handle AQEBBX8r9rRv4syD0Z2kY47i4h4LxIv+3Ez0i0t1qbA9XneRRFYvd8mcMqbTcCj58iL0Q2A0dew78g32Jy45bH9XgADlE8bW+6ZjPfvFnBhdd2ndv+VAWthJy+hL/7e1R+Rv/YptEx1Z2enF4J4PqoMxqz3nSvpV7bKk3qYw7yW8dIPsxI7X9vp3tq+w= --visibility-timeout 60

첫 번째 명령은 큐에서 첫 번째 메시지를 수신합니다. 두 번째 명령은 해당 메시지의 ReceiptHandle을 사용하여 메시지의 가시성을 60초 동안 변경합니다.

 

23. 메시지 크기 제한 설정

aws sqs get-queue-attributes --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue --attribute-names MaximumMessageSize

위 명령은 "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" URL을 가진 Amazon SQS 큐의 최대 메시지 크기 제한을 반환합니다.

 

24. 큐 삭제

aws sqs delete-queue --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue

위 명령은 "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue" URL을 가진 Amazon SQS 큐를 삭제합니다.

 

이러한 명령을 사용하여 Amazon SQS 큐를 생성, 확인, 메시지 전송 및 삭제, 메시지 속성 확인, 메시지 수정, 큐 크기 제한 확인 및 큐 삭제를 수행할 수 있습니다. 이외에도 다양한 명령이 있으며, 사용자의 필요에 따라 적절한 명령을 선택하여 Amazon SQS를 사용할 수 있습니다.

 

25. AWS SDK를 사용하여 Amazon SQS 큐 생성

AWS SDK를 사용하면 다양한 프로그래밍 언어로 Amazon SQS를 사용할 수 있습니다. 아래는 Python을 사용하여 Amazon SQS 큐를 생성하는 예시 코드입니다.

import boto3

# Create SQS client
sqs = boto3.client('sqs')

# Create a SQS queue
response = sqs.create_queue(
    QueueName='MyQueue',
    Attributes={
        'DelaySeconds': '60',
        'MessageRetentionPeriod': '86400'
    }
)

print(response['QueueUrl'])

위 코드는 boto3 라이브러리를 사용하여 Python으로 Amazon SQS 큐를 생성합니다. create_queue 메서드를 사용하여 큐 이름과 속성을 정의합니다. 생성된 큐의 URL은 response['QueueUrl']에서 확인할 수 있습니다.

 

26. AWS SDK를 사용하여 Amazon SQS 큐 확인

Python을 사용하여 Amazon SQS 큐를 확인하는 예시 코드입니다.

import boto3

# Create SQS client
sqs = boto3.client('sqs')

# List SQS queues
response = sqs.list_queues()

# Print out the queues
print('Queues:')
for url in response['QueueUrls']:
    print(url)

위 코드는 list_queues 메서드를 사용하여 계정에 연결된 모든 Amazon SQS 큐의 URL 목록을 반환합니다. 반환된 URL은 response['QueueUrls']에서 확인할 수 있습니다.

 

27. AWS SDK를 사용하여 Amazon SQS 메시지 전송

Python을 사용하여 Amazon SQS 큐에 메시지를 전송하는 예시 코드입니다.

import boto3

# Create SQS client
sqs = boto3.client('sqs')

# Send message to SQS queue
response = sqs.send_message(
    QueueUrl='https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue',
    MessageBody='Hello world!'
)

print(response['MessageId'])

위 코드는 send_message 메서드를 사용하여 Amazon SQS 큐에 메시지를 전송합니다. QueueUrl 매개 변수에 큐 URL을, MessageBody 매개 변수에 전송할 메시지를 입력합니다. 전송된 메시지의 ID는 response['MessageId']에서 확인할 수 있습니다.

 

28. AWS SDK를 사용하여 Amazon SQS 메시지 수신

Python을 사용하여 Amazon SQS 큐에서 메시지를 수신하는 예시 코드입니다.

import boto3

# Create SQS client
sqs = boto3.client('sqs')

# Receive message from SQS queue
response = sqs.receive_message(
    QueueUrl='https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue',
    MaxNumberOfMessages=1,
    VisibilityTimeout=30,
    WaitTimeSeconds=20
)

message = response['Messages'][0]
receipt_handle = message['ReceiptHandle']

print(f"Received message: {message['Body']}")

# Delete the message from the queue
sqs.delete_message(
    QueueUrl='https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue',
    ReceiptHandle=receipt_handle
)

위 코드는 receive_message 메서드를 사용하여 Amazon SQS 큐에서 메시지를 수신합니다. QueueUrl 매개 변수에 큐 URL을, MaxNumberOfMessages 매개 변수에 한 번에 수신할 메시지 수를, VisibilityTimeout 매개 변수에 메시지의 가시성 제한 시간을, WaitTimeSeconds 매개 변수에 수신할 메시지를 기다릴 최대 시간을 입력합니다. 반환된 메시지 목록 중 첫 번째 메시지의 내용은 message['Body']에서 확인할 수 있습니다. ReceiptHandle은 메시지를 삭제할 때 사용됩니다. 메시지를 삭제하려면 delete_message 메서드를 사용하고 QueueUrl 매개 변수에 큐 URL을, ReceiptHandle 매개 변수에 삭제할 메시지의 ReceiptHandle 값을 입력합니다.

 

이상으로 AWS CLI와 AWS SDK를 사용하여 Amazon SQS 큐를 생성하고 확인하며 메시지를 전송 및 수신하는 방법에 대해 알아보았습니다. Amazon SQS를 사용하면 손쉽게 분산 시스템에서 메시지 전송 및 처리를 구현할 수 있습니다.

 

728x90