準備

  1. メッセージを用意

    {
      "id": "xyz",
      "type": "TYPE",
      "body": "あいうえお。\nかきくけこ。",
      "nest":{
        "key": "サシスセソ。\nタチツテト。",
        "array": [
          "なにぬねの\tはっひふっへほ~"
        ]
      }
    }
  2. Queueを作成

    QUEUE_NAME="my-queue"
    ## Queueの作成
    aws sqs create-queue --queue-name ${QUEUE_NAME}
    ## QueueのURL取得
    QUEUE_URL=$(aws sqs get-queue-url --queue-name ${QUEUE_NAME} --output text)

方法

--message-bodyに file://${JSONのファイルパス} のような形式で指定する。

Note
次のエラーメッセージが出る場合はJSONファイルの文字コードに注意。 [Error parsing parameter '--message-body': Unable to load paramfile (message.json), text contents could not be decoded. If this is a binary file, please use the fileb:// prefix instead of the file:// prefix.]

送信

メッセージ送信(bash)
aws sqs send-message --queue-url "${QUEUE_URL}" --message-body "file://message.json"
結果
aws sqs send-message --queue-url "${QUEUE_URL}" --message-body "file://message.json"
{
    "MD5OfMessageBody": "8479748f7b5224df6596bb8766113b7d",
    "MessageId": "c8ac739e-6737-4d28-b6f3-fbe0ce2887fa"
}

受信

メッセージ受信(bash)
aws sqs receive-message --queue-url "${QUEUE_URL}" > resp.json
resp.json
{
    "Messages": [
        {
            "MessageId": "eabd6944-235c-4c96-9f31-1bf43992445a",
            "ReceiptHandle": "AQEBdVJhStsAWRu9+/Hel+58Va+BM5oxkkeo18kdPk1zWuA5fIBpUJY7Z1+8RBi78nCjOoSjDaQmi1828H5zLJNCTETInI1pIVJjHP+Ocdxw6yUWkTxM6YZLWBwPjOM55wWH6SZR4AHBl0FzlfUvCcW7IXHABz8OUOVktlP8LAwKFhGYwXA4YFDcqZzVb5DGO6cm8MsDnyIi6+uzeuqmxjeizui5MoPCS8EA4a0tJjbTlqkWlmbOswc6JIs9EjsLRV6llPe/Dzbc4tSJclZtkMfALIK687J5iCDuL/v/cJHgWkoPCvn73dHzsJqpsRXXbqDInoCEsOSDjkMNlq1c3zpFQ7jNTteNHOYECK6s7iuOhk1ZtLh1CIJWReHHQa6nBAa/5IjB2l0ed58ylCAAXWxaaw==",
            "MD5OfBody": "8479748f7b5224df6596bb8766113b7d",
            "Body": "{\n  \"id\": \"xyz\",\n  \"type\": \"TYPE\",\n  \"body\": \"あいうえお。\\nかきくけこ。\",\n  \"nest\":{\n    \"key\": \"サシスセソ。\\nタチツテト。\",\n    \"array\": [\n      \"なにぬねの\\tはっひふっへほ~\"\n    ]\n  }\n}"
        }
    ]
}

Bodyの取り出し

Bodyに送信したJsonの内容が含まれているが、エスケープされた状態なのでjqのfromjsonを使用して元に戻す。

Bodyを取り出す(bash)
cat resp.json | jq -r '.Messages[0].Body | fromjson'
結果
cat resp.json | jq -r '.Messages[0].Body | fromjson'
{
  "id": "xyz",
  "type": "TYPE",
  "body": "あいうえお。\nかきくけこ。",
  "nest": {
    "key": "サシスセソ。\nタチツテト。",
    "array": [
      "なにぬねの\tはっひふっへほ~"
    ]
  }
}

Clean

Queueの削除(bash)
aws sqs delete-queue --queue-url ${QUEUE_URL}