0Pricing
Cloud & IT Cert Prep · レッスン

統合:Lambda、HTTP、Mock

API Gateway のメソッドを Lambda プロキシ統合、上流の HTTP エンドポイント、テスト用のモック統合に接続します。

「統合:Lambda、HTTP、Mock」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。

API Gateway の統合タイプの概要

API Gateway のすべてのメソッドには、リクエストを処理してレスポンスを返すシステムであるバックエンド統合が必要です。API Gateway は、Lambda Proxy、Lambda Custom、HTTP Proxy、HTTP Custom、Mockの 5 種類の統合タイプをサポートします。HTTP API がサポートするのは Lambda Proxy と HTTP Proxy のみです。REST API は 5 種類すべてをサポートします。適切な統合を選択することで、リクエストとレスポンスの変換をどの程度制御できるかが決まります。

Lambda Proxy 統合

Lambda Proxy統合では、API Gateway が HTTP リクエスト全体を、構造化されたイベントオブジェクトとして Lambda に渡します。このオブジェクトには、ヘッダー、クエリ文字列、パスパラメータ、ボディ、コンテキストが含まれます。Lambda 関数は、statusCode、headers、bodyを含む、適切な形式のレスポンスオブジェクトを返す責任を負います。これは最もシンプルで一般的なパターンです。マッピングテンプレートは不要で、Lambda がレスポンス全体を制御します。

def lambda_handler(event, context):
    # event.httpMethod, event.path, event.queryStringParameters
    # event.headers, event.body
    user_id = event['pathParameters']['userId']
    return {
        'statusCode': 200,
        'headers': {'Content-Type': 'application/json'},
        'body': '{"userId": "' + user_id + '", "name": "Alice"}'
    }

Lambda Non-Proxy(カスタム)統合

Lambda Non-Proxy(カスタム統合)では、API Gateway がマッピングテンプレート(Apache Velocity Template Language、VTL)を使用して、Lambda に送信する前にリクエストを変換し、Lambda のレスポンスをクライアントに返す前にも変換します。Lambda 関数は、API Gateway の生のイベントではなく、整形されたカスタムペイロードを受け取ります。これにより、転送処理とビジネスロジックを分離できますが、VTL テンプレートの保守が必要です。API とバックエンドの契約を厳密に分離したい場合は、カスタム統合を使用します。

## Integration Request Mapping Template (VTL)
#set($inputRoot = $input.path('$'))
{
  'userId': '$input.params('userId')',
  'action': '$inputRoot.action',
  'timestamp': '$context.requestTime'
}

HTTP Proxy 統合

HTTP Proxy統合は、変換を行わずにリクエストを外部 HTTP エンドポイント(EC2 インスタンス、ALB、オンプレミスサーバー、パブリック URL など)へ直接転送します。API Gateway はリクエストをそのまま通過させ、バックエンドのレスポンスをクライアントに返します。既存の REST バックエンドを API Gateway の背後に移行し、バックエンドコードを変更せずにスロットリング、監視、API キーを追加したい場合に適しています。証明書検証を使用する HTTPS バックエンドをサポートします。

# Create HTTP proxy integration via REST API
aws apigateway put-integration \
  --rest-api-id 'abc123' \
  --resource-id 'xyz789' \
  --http-method GET \
  --type HTTP_PROXY \
  --integration-http-method GET \
  --uri 'https://my-backend.example.com/api/users/{userId}'

HTTP Custom(Non-Proxy)統合

HTTP Custom統合も外部 HTTP エンドポイントに転送しますが、マッピングテンプレートを使用して、バックエンドに送信するリクエストと返されるレスポンスの両方を変換します。これは、API Gateway のインターフェイスとバックエンド API の契約が異なる場合に便利です。たとえば、REST API の呼び出しをレガシー SOAP やカスタム形式に変換し、バックエンドのレスポンスをクライアント向けの整った JSON 構造に変換できます。複雑さは増しますが、レガシー統合を最も細かく制御できます。

AWS サービス統合

AWS Service統合では、Lambda を仲介せずに API Gateway を AWS サービスへ直接接続します。たとえば、SQS にメッセージを直接書き込む、SNS に発行する、Step Functions の実行を開始するといった POST エンドポイントを設定できます。これにより、単純なルーティング処理のレイテンシーを短縮し、Lambda 関数のコストを削減できます。AWS API の呼び出しを正しい形式にするには、IAM ロールの設定とマッピングテンプレートが必要です。

# Direct API Gateway → SQS integration
# Integration Request URI:
https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue

# Integration Request Body Mapping Template:
Action=SendMessage&MessageBody=$input.body

開発とテストのためのモック統合

モック統合では、バックエンドを呼び出さずに、あらかじめ定義したレスポンスを返すよう API Gateway を設定します。レスポンスは統合レスポンスのマッピングテンプレートで定義します。モック統合は、バックエンドの構築前に API を開発する場合(フロントエンドチームがすぐに作業を開始できます)、API 設定の単体テスト、標準の CORS ヘッダーの返却、開発中のサードパーティパートナー向けのスタブ提供に適しています。モックエンドポイントを使用して、410 Gone を返すことで非推奨の API バージョンをブロックすることもできます。

# Integration Response for Mock
# Integration Response Mapping Template:
{
  'statusCode': 200,
  'message': 'This is a mock response',
  'timestamp': '$context.requestTime'
}

# Method Response: map status code 200 to this template

API Gateway の CORS 設定

CORS (Cross-Origin Resource Sharing) は、あるドメイン上のブラウザクライアントが別のドメイン上の API を呼び出す場合に有効にする必要があります。HTTP API にはワンクリックの CORS 設定があります。REST API では、必要な CORS ヘッダー(Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Allow-Headers)を返すモック統合の OPTIONS メソッドを作成する必要があります。Lambda プロキシ統合では、Lambda のレスポンスにも CORS ヘッダーを含める必要があります。

# HTTP API CORS config (simple)
aws apigatewayv2 update-api \
  --api-id 'abc123' \
  --cors-configuration '{
    "AllowOrigins": ["https://myapp.example.com"],
    "AllowMethods": ["GET", "POST", "OPTIONS"],
    "AllowHeaders": ["Content-Type", "Authorization"]
  }'

REST API のリクエスト検証

REST API はリクエスト検証をサポートしています。API Gateway は、バックエンドを呼び出す前に、必須のクエリ文字列パラメータ、ヘッダー、リクエストボディのスキーマが存在し、正しい形式であることを検証できます。これにより、不正なリクエストによる不要な Lambda の呼び出しを減らし、標準化された 400 エラーを自動的に返せます。JSON Schema を使用してリクエストモデルを定義し、メソッドに関連付けることで、ボディの検証を有効にします。リクエスト検証は HTTP API では利用できません。

統合のタイムアウト

API Gateway の統合タイムアウトは、REST API と HTTP API でデフォルト 29 秒です(REST API では最大値、HTTP API プロキシでは固定値)。バックエンドの処理に 29 秒を超えると、API Gateway は 504 Gateway Timeout エラーを返します。つまり、API Gateway 経由で同期的に呼び出される Lambda 関数は、Lambda 自体が 15 分のタイムアウトをサポートしている場合でも、29 秒以内に完了する必要があります。長時間実行する処理には非同期パターンを使用します。API Gateway が Lambda をトリガーし、Lambda が非同期ジョブを開始して、すぐにジョブ ID を返すようにします。

適切な統合タイプの選択

統合タイプの選択ガイド:Lambda Proxy:最も一般的で、最もシンプルです。Lambda でリクエストを完全に制御できます。Lambda Custom:ゲートウェイ層でリクエストとレスポンスを変換する必要がある場合に使用します。HTTP Proxy:既存の HTTP バックエンドや移行シナリオに適しています。HTTP Custom:レガシー API の形式を変換する場合に使用します。AWS Service:SQS、SNS、DynamoDB への単純なルーティングで Lambda を省略できます。Mock:開発用スタブや CORS のプリフライトに使用します。SAA-C03 試験では、Lambda Proxy と HTTP Proxy が最も頻繁に出題されるパターンです。

理解度チェック

このレッスンで学んだ AWS Solutions Architect (SAA-C03) の概念について理解度を確認します。

レッスンのまとめ

このレッスンでは、次のことを学びました。Lambda Proxy 統合では、リクエスト全体を Lambda に渡し、Lambda がレスポンスを制御します。これは最もシンプルで一般的な統合です。HTTP Proxy はリクエストを既存の HTTP バックエンドに転送し、バックエンドを変更せずに API Gateway の機能を追加できます。Mock 統合は、バックエンドのインフラストラクチャなしで、フロントエンドの開発やテスト向けにあらかじめ定義したレスポンスを返します。次は、IAM、Lambda オーソライザー、Cognito を使用した API Gateway の認可について学びます。

よくある質問

「統合:Lambda、HTTP、Mock」レッスンは無料ですか?

はい。「統合:Lambda、HTTP、Mock」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。

「統合:Lambda、HTTP、Mock」で何を学びますか?

API Gateway のメソッドを Lambda プロキシ統合、上流の HTTP エンドポイント、テスト用のモック統合に接続します。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cloud & IT Cert Prepを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「統合:Lambda、HTTP、Mock」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?

はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. REST API、HTTP API、WebSocket API
  2. 統合:Lambda、HTTP、Mock
  3. 認可:IAM、Lambda Authorizers、Cognito
  4. スロットリング、キャッシュ、使用量プラン
← Cloud & IT Cert Prepに戻る