LoginSignup
16
10

More than 1 year has passed since last update.

LocalStack を用いたAWS SQS動作確認方法メモ

Posted at
  • LocalStack上で動くAWS SQSをAWS CLIで操作して動作確認する。

LocalStack準備

  • docker-compose.yml
  version: "3.8"
  networks:
    container-link:
      name: docker.internal
  services:
    localstack:
      container_name: "${LOCALSTACK_DOCKER_NAME-localstack_main}"
      image: localstack/localstack
      ports:
        - "127.0.0.1:53:53"                # only required for Pro
        - "127.0.0.1:53:53/udp"            # only required for Pro
        - "127.0.0.1:443:443"              # only required for Pro
        - "127.0.0.1:4510-4530:4510-4530"  # only required for Pro
        - "127.0.0.1:4566:4566"
        - "127.0.0.1:4571:4571"
      environment:
        - SERVICES=${SERVICES- }
        - DEBUG=${DEBUG- }
        - DATA_DIR=${DATA_DIR- }
        - LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR- }
        - LOCALSTACK_API_KEY=${LOCALSTACK_API_KEY- }  # only required for Pro
        - HOST_TMP_FOLDER=${TMPDIR:-/tmp/}localstack
        - DOCKER_HOST=unix:///var/run/docker.sock
      volumes:
        - "${TMPDIR:-/tmp}/localstack:/tmp/localstack"
        - "/var/run/docker.sock:/var/run/docker.sock"
      networks:
        - container-link
  • 起動
  docker-compose up

動作確認

キュー作成

aws sqs create-queue --queue-name test-queue --endpoint-url http://localhost:4566 --profile localstack 
{
    "QueueUrl": "http://localhost:4566/000000000000/test-queue"
}

キューの確認

aws sqs list-queues --endpoint-url http://localhost:4566 --profile localstack 
{
    "QueueUrls": [
        "http://localhost:4566/000000000000/test-queue"
    ]
}
aws sqs get-queue-attributes --queue-url http://localhost:4566/000000000000/test-queue --attribute-names All --endpoint-url http://localhost:4566 --profile localstack 
{
    "Attributes": {
        "ApproximateNumberOfMessages": "0",
        "ApproximateNumberOfMessagesDelayed": "0",
        "ApproximateNumberOfMessagesNotVisible": "0",
        "CreatedTimestamp": "1635594888.406909",
        "DelaySeconds": "0",
        "LastModifiedTimestamp": "1635594888.406909",
        "MaximumMessageSize": "262144",
        "MessageRetentionPeriod": "345600",
        "QueueArn": "arn:aws:sqs:ap-northeast-1:000000000000:test-queue",
        "ReceiveMessageWaitTimeSeconds": "0",
        "VisibilityTimeout": "30"
    }
}

メッセージをキューに送信する

 aws sqs send-message --queue-url "http://localhost:4566/000000000000/test-queue" --message-body "hello sqs" --endpoint-url http://localhost:4566 --profile localstack
 {
    "MD5OfMessageBody": "3b7bef57d06c0021d0aafe8f6d587241",
    "MessageId": "f6c15b00-73fe-703c-9dea-58a452416096"
}

キューにあるメッセージ数を確認する

aws sqs get-queue-attributes --queue-url 'http://localhost:4566/000000000000/test-queue' --attribute-names ApproximateNumberOfMessages --query 'Attributes.ApproximateNumberOfMessages' --endpoint-url http://localhost:4566 --profile localstack
"1"

メッセージをキューから消費する

aws sqs receive-message --queue-url 'http://localhost:4566/000000000000/test-queue' --endpoint-url http://localhost:4566 --profile localstack
{
    "Messages": [
        {
            "MessageId": "f6c15b00-73fe-703c-9dea-58a452416096",
            "ReceiptHandle": "qalxyspqosaejvtpyzymnopxtjvfyahzzfuelsesxkjcnqkiwgsztcklctzrxzwqdsimfpawzjwkwgleykejpskdhkhytmrtciocgegskkinjaqzvqnkvuzylkelzwckqtwfioxaywpfhfkfqghaorhiluvpmsdydkrkawatjlqircwnykvdayydy",
            "MD5OfBody": "3b7bef57d06c0021d0aafe8f6d587241",
            "Body": "hello sqs"
        }
    ]
}

キューからメッセージを削除する

# メッセージ削除
aws sqs delete-message --queue-url 'http://localhost:4566/000000000000/test-queue' --receipt-handle "afofosypthoqphrwwnayjnlnoiuvhvoqzrawwlerwtitpxbyskgksvnzkqrwtwcvvavdcnlrlbdawkzyyijgoznacuiavkkygokonnoxdstwcsktczryujjsypselwdeoicoivsmjgqkxiilhbjnzojdqmzvsjqtqpjpiqqbscoemntwzufgjdkje" --endpoint-url http://localhost:4566 --profile localstack
# メッセージ数確認
aws sqs get-queue-attributes --queue-url 'http://localhost:4566/000000000000/test-queue' --attribute-names ApproximateNumberOfMessages --query 'Attributes.ApproximateNumberOfMessages' --endpoint-url http://localhost:4566 --profile localstack"0"
16
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
10