#!/bin/bash # create-queue.sh # Usage: DOMAIN=andreasknuth.de ./create-queue.sh set -e AWS_REGION="us-east-2" # Domain aus Environment Variable if [ -z "$DOMAIN" ]; then echo "Error: DOMAIN environment variable not set" echo "Usage: DOMAIN=andreasknuth.de $0" exit 1 fi QUEUE_NAME="${DOMAIN//./-}-queue" DLQ_NAME="${QUEUE_NAME}-dlq" echo "========================================" echo "Creating SQS Queue for Email Delivery" echo "========================================" echo "" echo "📧 Domain: $DOMAIN" echo " Region: $AWS_REGION" echo "" # Dead Letter Queue erstellen echo "Creating DLQ: $DLQ_NAME" DLQ_URL=$(aws sqs create-queue \ --queue-name "${DLQ_NAME}" \ --region "${AWS_REGION}" \ --attributes '{ "MessageRetentionPeriod": "1209600" }' \ --query 'QueueUrl' \ --output text 2>/dev/null || aws sqs get-queue-url --queue-name "${DLQ_NAME}" --region "${AWS_REGION}" --query 'QueueUrl' --output text) echo " ✓ DLQ URL: ${DLQ_URL}" # DLQ ARN ermitteln DLQ_ARN=$(aws sqs get-queue-attributes \ --queue-url "${DLQ_URL}" \ --region "${AWS_REGION}" \ --attribute-names QueueArn \ --query 'Attributes.QueueArn' \ --output text) echo " ✓ DLQ ARN: ${DLQ_ARN}" echo "" # Haupt-Queue erstellen mit Redrive Policy echo "Creating Main Queue: $QUEUE_NAME" QUEUE_URL=$(aws sqs create-queue \ --queue-name "${QUEUE_NAME}" \ --region "${AWS_REGION}" \ --attributes "{ \"VisibilityTimeout\": \"300\", \"MessageRetentionPeriod\": \"86400\", \"ReceiveMessageWaitTimeSeconds\": \"20\", \"RedrivePolicy\": \"{\\\"deadLetterTargetArn\\\":\\\"${DLQ_ARN}\\\",\\\"maxReceiveCount\\\":\\\"3\\\"}\" }" \ --query 'QueueUrl' \ --output text 2>/dev/null || aws sqs get-queue-url --queue-name "${QUEUE_NAME}" --region "${AWS_REGION}" --query 'QueueUrl' --output text) echo " ✓ Queue URL: ${QUEUE_URL}" echo "" echo "========================================" echo "✅ Queue created successfully!" echo "========================================" echo "" echo "Configuration:" echo " Domain: $DOMAIN" echo " Queue: $QUEUE_NAME" echo " Queue URL: $QUEUE_URL" echo " DLQ: $DLQ_NAME" echo " Region: $AWS_REGION"