API Gateway 統合のレスポンスステータスコードを HTTP API にマッピングするにはどうすれば良いですか?

所要時間1分
0

ペイロードバージョン 1.0 と 2.0 の違いはどのようなものですか? Amazon API Gateway で HTTP API によって返されるステータスコードをマッピングするにはどうすれば良いですか? - または - 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 ゲートウェイは以下を想定していることになります。

  • IsBase64Encodedfalse です。
  • ステータスコード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": "..."
}

ステータスコードのマッピング

返されたバックエンド応答キーに基づいて、ステータスコードを静的な値にマッピングする方法:

  1. HTTP API で設定された統合に移動します。
  2. 変更する統合ルートを選択します。[統合を管理] を選択します。パラメータマッピングまでスクロールして、[パラメータマッピングの作成] を選択します。
  3. [マッピングの種類][レスポンス(ステータスコードに基づく)] に設定します。また、このステータスコードに一致する統合レスポンスには、パラメータマッピングを適用する必要があるため、レスポンスステータスコードも設定します。
  4. [新しいマッピングを追加] を選択します。
  5. [変更するパラメータ][ステータスコード] を選択します。[変更の種類][上書き] に設定します。
  6. [値][静的な値] に設定します。
    注記: この値は、クライアントに送信する必要があります。
  7. [作成] を選択します。

関連情報

モデルとマッピングテンプレートを使用して行う

API リクエストと応答の変換

コメントはありません

関連するコンテンツ