Amazon API Gateway による API の構築

AWS へのアプリケーションデプロイ

Dunieski Otano

Amazon Web Services Solutions Architect

3つのクライアント、1つのバックエンド

  • Web、モバイル、パートナーが同じバックエンドを呼び出します
  • それぞれ異なるフォーマットを使用します
  • フロントドアがすべての呼び出しを検証・変換します

 

3種類のクライアントが単一の API Gateway を経由してバックエンドサービスに接続する図

AWS へのアプリケーションデプロイ

API Gateway の機能

マネージド型フロントドアとしての API Gateway:Web・モバイルクライアントが中央ゲートウェイを経由し、ルーティング・認証・スロットリング・変換機能を経て Lambda、HTTP エンドポイント、AWS サービスへ接続する図

  • API の 完全マネージド型フロントドア です
  • ルーティング、認証、スロットリング、変換を処理します
  • クライアントと バックエンド の間に位置します
  • バックエンド:Lambda、HTTP エンドポイント、または AWS サービス
AWS へのアプリケーションデプロイ

統合タイプ

  • Lambda プロキシ:リクエスト全体を Lambda に渡します
  • Lambda 非プロキシ:リクエスト・レスポンスのフィールドをマッピングします
  • HTTP:HTTP バックエンドに転送します
  • MOCK:バックエンドなしでレスポンスを返します

API Gateway の4つの統合タイプ:完全なリクエストを渡す Lambda プロキシ、マッピングテンプレートを使う Lambda 非プロキシ、エンドポイントへ転送する HTTP、静的レスポンスを返す MOCK の図

AWS へのアプリケーションデプロイ

リクエストとレスポンスの変換

  • マッピングテンプレート が VTL でペイロードを変換します
  • Velocity Template Language がボディ、ヘッダー、パラメータを変換します
  • リクエストマッピング:クライアント形式をバックエンド形式に変換
  • レスポンスマッピング:バックエンド形式をクライアント形式に変換

VTL マッピングテンプレートのフロー:クライアントのペイロードがリクエストテンプレートで変換されてバックエンドに渡り、バックエンドのレスポンスがレスポンステンプレートで変換されてクライアントに返る図

AWS へのアプリケーションデプロイ

リクエスト検証

リクエスト検証モード:JSON スキーマによるボディの検証、必須クエリ・ヘッダーパラメータの検証、または両方を Lambda バックエンド起動前に検証する図

  • 不正な入力をバックエンドに届く 前 に拒否します
  • 必須パラメータ:ヘッダー、クエリ文字列、パス
  • モデルスキーマ:JSON ボディの構造を検証します
  • ボディ、パラメータ、または両方を検証できます
AWS へのアプリケーションデプロイ

ステータスコードとエラー契約

  • バックエンドのステータスコードを 一貫した契約 に合わせて上書きします
  • バックエンドの 502 をクライアント向けの 503 に変換します
  • ゲートウェイレスポンス:エラーボディをカスタマイズします
  • バックエンドに関わらず、クライアントは予測可能なエラーを受け取ります

API Gateway のリクエストライフサイクル全体:検証がゲートで不正な入力を拒否し、マッピングテンプレートが有効な入力をバックエンド向けに変換し、レスポンステンプレートが出力を一貫したクライアント契約に整形する図

AWS へのアプリケーションデプロイ

全体の流れ

  • クライアントリクエスト → 検証 → 変換 → バックエンド
  • 不正な入力はゲートで拒否されます
  • 正常な入力はバックエンド向けに変換されます
  • バックエンドのレスポンスはクライアント契約に合わせて変換されます

API Gateway のリクエストライフサイクル全体:検証がゲートで不正な入力を拒否し、マッピングテンプレートが有効な入力をバックエンド向けに変換し、レスポンステンプレートが出力を一貫したクライアント契約に整形する図

AWS へのアプリケーションデプロイ

練習しましょう!

AWS へのアプリケーションデプロイ

Preparing Video For Download...