Lambda を 同期呼び出しした際のステータスコードを変更する方法を教えてください

2023.08.15

困っていた内容

Lambda の invoke API で Lambda を呼び出すアプリケーションを開発しています。
アプリケーション側では Lambda から返却されるステータスコードによって処理を分岐させたいのですが、Lambda でエラーが発生してもステータスコードが 200 で返却されます。

Lambda を 同期呼び出しした際のステータスコードを変更する方法を教えてください。

どう対応すればいいの?

payload に StatusCode を含める実装をご検討ください。

Lambda を同期呼び出しした際のステータスコードは、エラーが発生した場合でも 200 が返却される仕様になっています。

Lambda が関数を実行できた場合は、関数がエラーを返したとしても、ステータスコードは 200 です。

AWS 公式ドキュメントより

Lambda のステータスコードを変更したい場合には、payload に独自に StatusCode を含める実装をご検討ください。

// statusCode 403 を返却する例
const response = {
    statusCode: 403,
    body: JSON.stringify('Hello from Lambda!'),
};
return response;

参考資料