[アップデート] AWS Lambda の非同期呼び出しペイロードサイズ上限が 256 KB から 1 MB に拡張されました
こんにちは、製造ビジネステクノロジー部の若槻です。
AWS Lambda の非同期呼び出しペイロードサイズの上限が 256 KB から 1 MB に拡張されるアップデートがありました。
AWS ドキュメント(英語版)で Lambda 関数の制限の記載を確認すると、非同期呼び出しペイロードサイズの上限が 1 MB に変更されています。(日本語版では現時点で未更新)

試してみた
今回のアップデートを受けて、非同期呼び出しペイロードサイズの上限が 1 MB に拡張されたことを確認してみます。
リソース準備
検証用の Lambda 関数を AWS CDK(TypeScript)で作成して準備します。
export const handler = async (): Promise<void> => {};
import * as cdk from "aws-cdk-lib";
import * as lambda_nodejs from "aws-cdk-lib/aws-lambda-nodejs";
import { Construct } from "constructs";
export class MainStack extends cdk.Stack {
constructor(scope: Construct, id: string) {
super(scope, id);
/**
* Lambda 関数
*/
new lambda_nodejs.NodejsFunction(this, "LambdaFunction", {
entry: "src/handler.ts",
});
}
}
動作確認(1MB未満 → OK)
まずはペイロードサイズが 1 MB 未満の場合に正常に呼び出せることを確認します。
1MB に近いサイズのペイロードを生成します。
python3 << 'EOF' > payload_1000kb.json
import json
target_size = 1024000
overhead = len('{"data":""}')
data_size = target_size - overhead
payload = {"data": "A" * data_size}
print(json.dumps(payload), end='')
EOF
生成したペイロードを指定して Lambda 関数を非同期呼び出しします。
$ aws lambda invoke \
--function-name $FUNCTION_NAME \
--invocation-type Event \
--payload file://payload_1000kb.json \
--cli-binary-format raw-in-base64-out \
response_1000kb.json
{
"StatusCode": 202
}
ステータスコード 202 が返却され、正常に呼び出せることが確認できました。
動作確認(1MB超 → Error)
続いてペイロードサイズが 1 MB を超える場合にエラーになることを確認します。
1MB を超えるサイズのペイロードを生成します。
python3 << 'EOF' > payload_1100kb.json
import json
target_size = 1126400
overhead = len('{"data":""}')
data_size = target_size - overhead
payload = {"data": "A" * data_size}
print(json.dumps(payload), end='')
EOF
生成したペイロードを指定して Lambda 関数を非同期呼び出しします。
$ aws lambda invoke \
--function-name $FUNCTION_NAME \
--invocation-type Event \
--payload file://payload_1100kb.json \
--cli-binary-format raw-in-base64-out \
response_1100kb.json
An error occurred (RequestEntityTooLargeException) when calling the Invoke operation: 1126401 byte payload is too large for the Event invocation type (limit 1048576 bytes)
ペイロードサイズが 1 MB を超える場合に RequestEntityTooLargeException エラーが発生することが確認できました。
ちなみに Lambda 関数の呼び出しメトリクスは記録されておらず、同エラー発生時はそもそも関数が呼び出しが行われないようです。
おわりに
AWS Lambda の非同期呼び出しペイロードサイズの上限が 256 KB から 1 MB に拡張されるアップデートがあったのでご紹介しました。
非同期呼び出しは重い処理を依頼する用途が多いにも関わらず、同期呼び出しの制限(6MB)と比べてペイロードサイズが大幅に小さいという矛盾がありましたが、今回のアップデートでその制約が大きく緩和されたと言えるのではないでしょう。
以上






