0Pricing
AWS Solutions Architect · レッスン

REST API、HTTP API、WebSocket API

REST API(機能が豊富)、HTTP API(低レイテンシー・低コスト)、WebSocket API(双方向)のトレードオフを理解し、適切に選択します。

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

API Gateway が存在する理由

Amazon API Gatewayは、あらゆる規模の API を作成、公開、保護、監視できるフルマネージドサービスです。Lambda 関数、EC2 インスタンス、HTTP バックエンド、その他の AWS サービスといったバックエンドサービスのフロントドアとして機能します。API Gateway がトラフィック管理、認可、スロットリング、監視、API のバージョニングを処理するため、バックエンドは API インフラストラクチャではなくビジネスロジックに集中できます。

REST API:機能豊富な従来型 API

REST API(API Gateway の初代 API 製品)は、最も幅広い機能を提供します。マッピングテンプレートによるリクエストとレスポンスの変換、メソッド単位のスロットリング、API キーを使用した使用量プラン、レスポンスキャッシュ、WAF 統合、X-Ray トレーシング、リソースポリシー、クライアント証明書による相互 TLS などに対応しています。REST API は、Lambda、HTTP、AWS サービス、Mock、Lambda Proxy のすべての統合タイプをサポートします。変換、キャッシュ、使用量プランなどの高度な機能が必要な場合は、REST API を使用します。

HTTP API:低レイテンシー・低コストの代替

HTTP APIは、REST API よりもシンプルで安価かつ高速な代替として設計されました。サポートする統合はLambda proxyとHTTP proxyのみで、AWS サービス統合や Mock には対応していません。主な利点は、REST API よりも最大 70% 低いコスト、低レイテンシー、OIDC と OAuth 2.0 JWT 認可のネイティブサポート(一般的な認証シナリオでは Lambda authorizer が不要)、自動デプロイです。キャッシュ、使用量プラン、リクエストとレスポンスの変換が不要であれば、HTTP API の方が適しています。

# Create a simple HTTP API
aws apigatewayv2 create-api \
  --name 'MyHttpAPI' \
  --protocol-type HTTP \
  --target 'arn:aws:lambda:us-east-1:123456789012:function:MyLambda'

WebSocket API:双方向のリアルタイム通信

WebSocket APIは、クライアントとサーバー間の永続的な双方向接続を維持します。リクエストとレスポンスの形式である HTTP とは異なり、WebSocket ではクライアントがポーリングしなくても、サーバーが接続中のクライアントにいつでもメッセージをプッシュできます。API Gateway が WebSocket 接続を管理し、ルート式に基づいてメッセージを Lambda 関数にルーティングします。チャットアプリ、ライブダッシュボード、共同編集、ゲーム、株価ティッカーなど、リアルタイムアプリケーションには WebSocket API を使用します。

WebSocket のルートと接続管理

WebSocket API には、3 つの組み込みルートがあります。$connect(クライアントが接続を開いたときにトリガー)、$disconnect(接続が閉じたときにトリガー)、$default(一致しないメッセージを捕捉)です。sendmessageのようなカスタムルートを追加し、特定の Lambda 関数にマッピングすることもできます。@connections管理 API を使用すると、クライアントの接続 IDを指定して、Lambda 関数から接続中のクライアントにメッセージを送信できます。

# Send a message to a specific WebSocket client from Lambda
import boto3

gw_client = boto3.client(
    'apigatewaymanagementapi',
    endpoint_url='https://abc123.execute-api.us-east-1.amazonaws.com/prod'
)

def lambda_handler(event, context):
    connection_id = event['requestContext']['connectionId']
    gw_client.post_to_connection(
        Data='{"type": "message", "text": "Hello!"}',
        ConnectionId=connection_id
    )

機能比較:REST と HTTP と WebSocket

主な違いは次のとおりです。

  • REST API:フル機能(キャッシュ、使用量プラン、変換、WAF)、高コスト、すべての統合タイプをサポート
  • HTTP API:Lambda/HTTP proxy のみ、70% 安価、JWT 認証を内蔵、低レイテンシー、キャッシュや使用量プランには非対応
  • WebSocket API:永続的な双方向接続、サーバープッシュに対応、100 万メッセージ単位および接続時間 1 分単位で課金

SAA-C03 の試験では、リアルタイム性や高度な機能を必要としない HTTP に関する問題 → HTTP API、リアルタイムプッシュ → WebSocket、複雑な API 機能 → REST API と判断します。

ステージとデプロイ

API Gateway API はステージ(例:dev、staging、prod)にデプロイします。各ステージには固有の URL とスロットリング設定があり、特定のデプロイスナップショットを参照できます。ステージ変数(環境変数に似たもの)を使用して、ステージごとにバックエンドエンドポイントをパラメータ化できます。たとえば、API 設定を複製せずに、devステージを開発用 Lambda エイリアス、prodを本番用エイリアスに向けることができます。

# REST API: create a deployment and stage
aws apigateway create-deployment \
  --rest-api-id 'abc123' \
  --stage-name 'prod'

# Set stage variable
aws apigateway update-stage \
  --rest-api-id 'abc123' \
  --stage-name 'prod' \
  --patch-operations 'op=replace,path=/variables/lambdaAlias,value=prod'

カスタムドメイン名とベースパスマッピング

デフォルトでは、API Gateway の URL に API ID が含まれます(例:abc123.execute-api.us-east-1.amazonaws.com)。本番環境では、ACM 証明書を使用するカスタムドメイン名を作成し、それを API とステージにマッピングします。ベースパスマッピングを使用すると、1 つのドメインで複数の API をホストできます(例:api.example.com/orders → Orders API、api.example.com/users → Users API)。カスタムドメイン名には、API Gateway エンドポイントを指す Route 53 エイリアスレコードが必要です。

エッジ最適化・リージョナル・プライベート API の比較

REST API は、3 種類のエンドポイントタイプでデプロイできます。Edge-Optimised(グローバル配信用の CloudFront フロントエンドを使用、デフォルト)、Regional(CloudFront を使用せず、同一リージョンのクライアントや独自の CloudFront を追加する場合に低レイテンシー)、Private(インターフェイス VPC エンドポイント経由で VPC 内からのみアクセス可能で、内部マイクロサービス向け)です。HTTP API は Edge-Optimised と Regional をサポートします。WebSocket API は Regional と Private をサポートします。同一リージョンから利用される API や、カスタム CloudFront ディストリビューションを使用する場合は Regional を選択します。

API Gateway によるカナリアデプロイ

API Gateway の REST API は、ステージでカナリアデプロイをサポートします。トラフィックの一部をカナリアデプロイ(新バージョン)にルーティングし、残りを本番デプロイに送ることができます。カナリアのエラー率とレイテンシーを監視し、安定していれば 100% に昇格させます。問題が発生した場合は、カナリアの重みを 0 に設定してロールバックします。これは Lambda エイリアスの重み付きルーティングに似ており、ブルー/グリーン環境を切り替えずに、安全かつ段階的に API を更新できます。

試験で適切な API タイプを選択する

SAA-C03 の試験問題で API タイプを見分けるキーワードは次のとおりです。「コスト効率のよいシンプルな API」 → HTTP API、「リアルタイム双方向通信」または「サーバープッシュ」または「チャット」 → WebSocket API、「リクエスト変換」、「使用量プラン」、「API キーによるスロットリング」、「レスポンスキャッシュ」 → REST API です。問題が単に「低コストで Lambda を HTTP エンドポイントとして公開する」内容であれば、HTTP API が適しています。複雑な API 管理機能やパートナーが関係する場合は、通常 REST API が正解です。

クイックチェック

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

レッスンのまとめ

このレッスンでは、次のことを学びました。REST APIは、キャッシュ、変換、使用量プラン、WAF などの API Gateway の全機能を提供しますが、コストは高くなります。HTTP APIは 70% 安価で、JWT 認証を内蔵し、レイテンシーも低いため、高度な機能を必要としない Lambda/HTTP proxy シナリオに適しています。WebSocket APIは、永続的な接続上でサーバープッシュによるリアルタイム通信を実現し、チャット、ゲーム、ライブデータアプリケーションに適しています。次は、API Gateway と Lambda、HTTP バックエンド、Mock レスポンスの統合について学びます。

よくある質問

「REST API、HTTP API、WebSocket API」レッスンは無料ですか?

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

「REST API、HTTP API、WebSocket API」で何を学びますか?

REST API(機能が豊富)、HTTP API(低レイテンシー・低コスト)、WebSocket API(双方向)のトレードオフを理解し、適切に選択します。 ブラウザで直接実行するハンズオンコードでAWS Solutions Architectを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AWS Solutions Architectを始めるのに経験は必要ですか?

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

「REST API、HTTP API、WebSocket API」レッスンにはどのくらい時間がかかりますか?

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

このAWS Solutions Architectレッスンでコードを書いて実行できますか?

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

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

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