-
AWS CLI 로 SQS 일괄 생성 및 일괄 삭제AWS 2024. 4. 12. 12:23
만약 다음과 같이 많은 queue를 생성해야 하는 경우, aws cli를 활용할 수 있습니다.
SQS 일괄 생성 스크립트
#!/bin/bash # AWS 리전과 계정 ID 자동 감지 REGION=$(aws configure get region) # 큐 이름 정의 declare -a queues=( "dev-order_queue" "dev-order_queue_dlq" "dev-payment_queue" "dev-payment_queue_dlq" "stage-order_queue" "stage-order_queue_dlq" "stage-payment_queue" "stage-payment_queue_dlq" "prod-order_queue" "prod-order_queue_dlq" "prod-payment_queue" "prod-payment_queue_dlq" ) # 큐 생성 및 설정 for queue in "${queues[@]}" do echo "Creating $queue..." if [[ $queue == *"_dlq" ]]; then # DLQ 생성 aws sqs create-queue --queue-name $queue --region $REGION else # 일반 큐 생성 QUEUE_URL=$(aws sqs create-queue --queue-name $queue --region $REGION --attributes '{ "VisibilityTimeout": "120", "MessageRetentionPeriod": "86400", "MaximumMessageSize": "262144", "DelaySeconds": "10" }' --query 'QueueUrl' --output text) # DLQ와 연결 DLQ_NAME="${queue%-Queue}-DLQ" DLQ_ARN=$(aws sqs get-queue-url --queue-name $DLQ_NAME --region $REGION --query 'QueueUrl' | xargs -I {} aws sqs get-queue-attributes --queue-url {} --attribute-names QueueArn --query 'Attributes.QueueArn' --output text) aws sqs set-queue-attributes --queue-url $QUEUE_URL --attributes '{ "RedrivePolicy": "{\"maxReceiveCount\":\"5\", \"deadLetterTargetArn\":\"'$DLQ_ARN'\"}" }' fi done echo "All queues created and configured successfully!"스크립트 사용 방법
1. 위 스크립트를 .sh 파일로 저장합니다 (예: create_configure_queues.sh).
2. 해당 스크립트 파일을 실행할 수 있는 위치로 이동합니다.
3. 스크립트에 실행 권한을 부여합니다: chmod +x create_configure_queues.sh
4. 스크립트를 실행합니다: ./create_configure_queues.sh큐 생성 옵션
VisibilityTimeout
초(second) 단위입니다. 이 설정은 메시지가 수신된 후 다른 수신자에게 보이지 않도록 설정하는 시간을 의미합니다. 여기서 "120"은 메시지가 수신되고 난 후 120초 동안 다른 수신자가 해당 메시지를 볼 수 없게 합니다.
MessageRetentionPeriod
역시 초(second) 단위입니다. 이는 메시지가 SQS 큐에 보관되는 최대 시간을 설정합니다. "86400"은 하루(24시간 × 60분 × 60초) 동안 메시지가 큐에 유지됨을 의미합니다.
MaximumMessageSize
바이트(byte) 단위입니다. 이 값은 큐에 보낼 수 있는 메시지의 최대 크기를 제한합니다. "262144" 바이트는 약 256KB를 의미합니다.
DelaySeconds
이 설정도 초(second) 단위입니다. 이는 메시지가 큐에 도착한 후 소비자가 메시지를 볼 수 있도록 되기까지 지연되는 시간을 설정합니다. "10"은 메시지가 큐에 도착한 후 10초 동안 대기하게 됨을 의미합니다.RedrivePolicy.maxReceiveCount
이 값은 메시지가 주 큐에서 수신될 수 있는 최대 횟수를 지정합니다. 이 횟수를 초과하면 메시지는 자동적으로 DLQ로 이동합니다. 예를 들어, "maxReceiveCount":"5"라고 설정하면, 메시지가 5회 수신되고 여전히 처리되지 않았다면, 그 이후에는 DLQ로 전송됩니다.위 파일을 만들고, 실행권한을 줘야 합니다.
chmod +x create-sqs-queues.sh혹시, 삭제하려는 경우, 다음 스크립트를 실행해서 삭제 합니다.
#!/bin/bash # AWS 리전 설정 REGION=$(aws configure get region) # 큐 이름 정의 declare -a queues=( "dev-order_queue" "dev-order_queue_dlq" "dev-payment_queue" "dev-payment_queue_dlq" "stage-order_queue" "stage-order_queue_dlq" "stage-payment_queue" "stage-payment_queue_dlq" "prod-order_queue" "prod-order_queue_dlq" "prod-payment_queue" "prod-payment_queue_dlq" ) # 큐 삭제 for queue in "${queues[@]}" do echo "Deleting $queue..." QUEUE_URL=$(aws sqs get-queue-url --queue-name $queue --region $REGION --query 'QueueUrl' --output text) if [ ! -z "$QUEUE_URL" ]; then aws sqs delete-queue --queue-url $QUEUE_URL echo "$queue deleted successfully." else echo "Failed to delete $queue or queue does not exist." fi done echo "All specified queues have been processed for deletion."스크립트 사용 방법
1. 위 스크립트를 .sh 파일로 저장합니다 (예: delete-queues.sh).
2. 해당 스크립트 파일을 실행할 수 있는 위치로 이동합니다.
3. 스크립트에 실행 권한을 부여합니다: chmod +x delete-queues.sh
4. 스크립트를 실행합니다: ./delete-queues.sh'AWS' 카테고리의 다른 글
Amazon SQS 에 대해 알아보자 (0) 2024.04.12