SQSのメッセージサイズが最大1MiBに拡張されました

SQSのメッセージサイズが最大1MiBに拡張されました

Amazon SQSで最大1MiBのメッセージが扱えるようになったアップデートを、AWS CLIでの送受信テストを試してみました
2025.08.05

2025年8月4日、Amazon SQS(Simple Queue Service)に待望のアップデートがあり、1つのメッセージで送信できるデータの最大サイズが256KiBから4倍の1MiBに拡張されました。

これまで256KiBを超えるデータを扱うには、S3と連携する拡張クライアントライブラリを利用するなどの工夫が必要でしたが、今回のアップデートにより、より手軽に大きなメッセージを扱えるようになりました。

https://aws.amazon.com/jp/about-aws/whats-new/2025/08/amazon-sqs-max-payload-size-1mib/

今回、AWSCLIを利用して、約1MiBのメッセージの送受信が可能なことを確認する機会がありましたので、紹介します。

SQS設定画面

SQSキューの設定画面で、最大メッセージサイズが1024KiBがデフォルトになりました。

SQS最大メッセージサイズ

動作検証

awscliを利用して、動作確認を試みました。

検証環境

リージョンは大阪(ap-northeast-3)、CloudShell標準の awscliを利用しました。

$ aws --version
aws-cli/2.27.60 Python/3.13.4 Linux/6.1.141-155.222.amzn2023.x86_64 exec-env/CloudShell exe/x86_64.amzn.2023

1. SQSキューの作成

テスト用のSQSキューを作成し、属性を確認しました。

aws sqs create-queue --queue-name sqs-1mib-test-queue

SQSキューのMaximumMessageSizeは、1048576バイト(1MiB)でした。

$ aws sqs get-queue-attributes --queue-url "$QUEUE_URL" --attribute-names MaximumMessageSize
{
    "Attributes": {
        "MaximumMessageSize": "1048576"
    }
}

2. 1MiBメッセージの送信

約1MiB弱のテストファイルを作成、SQSへの送信を試みました。

テストファイル作成

# 1MiBのテストメッセージを生成
python3 -c "
import json
import sys
from datetime import datetime, timezone

# JSONのキーや他の値の長さを考慮してペイロードサイズを調整
data_size = 1048576 - 200
message_data = {
    'test_type': 'SQS 1MiB payload test',
    'timestamp': datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%SZ'),
    'data_size_bytes': data_size,
    'payload': 'A' * data_size
}

message_json = json.dumps(message_data)
# UTF-8エンコード後のバイト数でサイズを確認
message_bytes = message_json.encode('utf-8')
print(f'Message size: {len(message_bytes)} bytes', file=sys.stderr)
sys.stdout.buffer.write(message_bytes)
" > large_message.json

メッセージ送信

# キューURLを取得
QUEUE_URL=$(aws sqs get-queue-url --queue-name sqs-1mib-test-queue --query 'QueueUrl' --output text)

# メッセージを送信
aws sqs send-message \
    --queue-url "$QUEUE_URL" \
    --message-body file://large_message.json

3. メッセージの受信

1MiB弱のメッセージの受信を試みました。

aws sqs receive-message \
    --queue-url "$QUEUE_URL" \
    --max-number-of-messages 1 \
> receive_message.json

受信したメッセージのファイルサイズ、1MiB弱である事が確認できました。

~ $ ls -la receive_message.json 
-rw-r--r--. 1 cloudshell-user cloudshell-user 1049152 Aug  5 02:40 receive_message.json
~ $ ls -lah receive_message.json 
-rw-r--r--. 1 cloudshell-user cloudshell-user 1.1M Aug  5 02:40 receive_message.json
~ $ ls -la large_message.json 
-rw-r--r--. 1 cloudshell-user cloudshell-user 1048494 Aug  5 05:01 large_message.json

受信したメッセージのサイズが少し大きくなった要因は、受信時の APIレスポンスにMessageId、ReceiptHandle などの追加に伴うものでした。

受信メッセージ

メッセージサイズの変更

SQSのメッセージサイズ、従来の上限である 256KiBとする設定を試みました。

aws sqs set-queue-attributes \
    --queue-url "$QUEUE_URL" \
    --attributes '{"MaximumMessageSize":"262144"}' 

この状態で 1MiBのメッセージの送信を試みた所、エラーとなりました。

~ $ aws sqs send-message --queue-url "$QUEUE_URL" --message-body file://large_message.json

An error occurred (InvalidParameterValue) when calling the SendMessage operation: One or more parameters are invalid. Reason: Message must be shorter than 262144 bytes.

キュー作成時のデフォルト指定について

CloudTrail情報で キュー作成時の requestParametersを確認。

GUI(マネージメントコンソール)で作成したキューは、MaximumMessageSizeが明示された状態でした。

  • CLI
    "userAgent": "aws-cli/2.27.60 md/awscrt#0.26.1 ua/2.1 os/linux#6.1.141-155.222.amzn2023.x86_64 md/arch#x86_64 lang/python#3.13.4 md/pyimpl#CPython exec-env/CloudShell m/Z,b,E cfg/retry-mode#standard md/installer#exe md/distrib#amzn.2023 md/prompt#off md/command#sqs.create-queue",
    "requestParameters": {
        "queueName": "sqs-1mib-test-queue"
    },
  • GUI
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36",
    "requestParameters": {
        "queueName": "sqs-1mib-test-queue-gui",
        "attributes": {
            "Policy": "{\"Version\":\"2012-10-17\",\"Id\":\"__default_policy_ID\",\"Statement\":[{\"Sid\":\"__owner_statement\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"xxxxxxxxxxxx\"},\"Action\":[\"SQS:*\"],\"Resource\":\"arn:aws:sqs:ap-northeast-3:xxxxxxxxxxxx:sqs-1mib-test-queue-gui\"}]}",
            "ReceiveMessageWaitTimeSeconds": "0",
            "SqsManagedSseEnabled": "true",
            "DelaySeconds": "0",
            "KmsMasterKeyId": "",
            "RedrivePolicy": "",
            "MessageRetentionPeriod": "345600",
            "MaximumMessageSize": "1048576",
            "VisibilityTimeout": "30",
            "RedriveAllowPolicy": ""
        }

2025年8月以前、GUIなどで 最大メッセージサイズ(MaximumMessageSize)を指定して作成したキューについては、従来の値が維持されている可能性があります。既存のSQSキューで 256KiB以上のメッセージを扱う可能性がある場合、念の為、現在の設定を確認頂くことをおすすめします。

まとめ

SQSの最大メッセージサイズが1MiBに拡張されたことで、多くのワークロードでSQSをよりシンプルに活用できるようになりました。

1MiBを超える大きなメッセージを扱う必要がある場合には、引き続きS3と連携する拡張クライアントライブラリの利用をご検討ください。

https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-managing-large-messages.html

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.