Amazon API Gateway の HTTP API から返されたステータスコードをマッピングしたいです。
解決策
バックエンドレスポンスステータスコードを上書きする場合は、API Gateway マッピングテンプレートまたは正規表現を使用して、ステータスコードをマッピングします。HTTP API を使用したプロキシ統合と非プロキシ統合でこれを実行できます。
HTTP API を使用して行う
HTTP API は、REST API と比較した場合に設計が異なっています。HTTP API はデフォルトのプロキシで統合されており、同じレスポンスを返します。HTTP API は、REST API と異なり、Lambda 統合で使用する 2 つのペイロード形式バージョンが提供される点が違う点です。1.0 および 2.0 ペイロード形式バージョンの場合は、関連する Lambda 関数レスポンス形式があります。
ペイロード形式バージョン 2.0 を使用する場合、Lambda 関数が有効な JSON レスポンスでステータスコードを明示的に渡さない場合は、API ゲートウェイは以下を想定していることになります。
- IsBase64Encoded は false です。
- ステータスコードは200です
- コンテンツタイプは application/json です
- body は Lambda 関数からのレスポンスです
前の例では、HTTP API はエラーを返さず、想定される状態コード 200 を転送します。
ペイロード形式バージョン 1.0 を使用する場合、Lambda 統合は、以下の形式でレスポンスを返す必要があります。API Gateway はレスポンスを仮定せず、500 エラーを返します。
{
"isBase64Encoded": true|false,
"statusCode": httpStatusCode,
"headers": { "headername": "headervalue", ... },
"multiValueHeaders": { "headername": ["headervalue", "headervalue2", ...], ... },
"body": "..."
}
ステータスコードのマッピング
返されたバックエンド応答キーに基づいて、ステータスコードを静的な値にマッピングする方法:
- HTTP API で設定された統合に移動します。
- 変更する統合ルートを選択します。[統合を管理] を選択します。パラメータマッピングまでスクロールして、[パラメータマッピングの作成] を選択します。
- [マッピングの種類] を [レスポンス(ステータスコードに基づく)] に設定します。また、このステータスコードに一致する統合レスポンスには、パラメータマッピングを適用する必要があるため、レスポンスステータスコードも設定します。
- [新しいマッピングを追加] を選択します。
- [変更するパラメータ] で [ステータスコード] を選択します。[変更の種類] を [上書き] に設定します。
- [値] を [静的な値] に設定します。
注記: この値は、クライアントに送信する必要があります。
- [作成] を選択します。
関連情報
REST API 用のマッピングテンプレート
API Gateway で HTTP API に対する API リクエストと応答を変換する