変更要約: in-scopeサービス網羅(軸B): s1にEKS/EFS、s2にAppSync/ELB/Route 53/WAF、s3にAuroraの定義・役割・選択基準を追記。
1.2Amazon API Gateway で API を公開
API Gateway による API の公開(ルーティング・認証・スロットリング・ステージ・キャッシュ)、REST/HTTP/WebSocket の違い、Lambda 統合といった API 開発の基礎を理解します。
バックエンド(Lambda 等)を安全に公開する「正面玄関」が Amazon API Gateway です。ルーティング・認証・スロットリングなどをマネージドで担います。
1.2.1API Gateway の役割
- ルーティング:パス/メソッドごとにバックエンド(Lambda・HTTP)へ振り分ける。
- 認証/認可:IAM・Cognito オーソライザー(ユーザープール)・Lambda オーソライザー(独自ロジック)でアクセスを制御。
- スロットリング/キャッシュ:流量制限(レート/バースト)で保護し、レスポンスキャッシュで負荷と遅延を下げる。
- ステージ:dev/prod などの環境ごとのデプロイ単位。ステージ変数で設定を切り替える。
- 種類:シンプル/低コストの HTTP API、機能豊富な REST API、双方向の WebSocket API。
API Gateway はバックエンドの「正面玄関」として、認証・流量制御・ルーティングをマネージドで肩代わりします。リクエストごとの認可は、ログイン基盤がある場合は Cognito オーソライザー、独自の判定ロジックが要る場合は Lambda オーソライザーを使います。スロットリングは急増や乱用からバックエンドを守り、キャッシュは同じレスポンスを再利用して遅延とコストを下げます。デプロイは ステージ単位(dev/prod)で行い、ステージ変数で接続先などを切り替えます。API の種類は、要件が単純なら安価な HTTP API、詳細な制御・キャッシュ・リクエスト検証が必要なら REST API、チャット等の双方向通信なら WebSocket API を選びます。
| 要件 | 選択/機能 |
|---|---|
| シンプル・低コストな REST | HTTP API |
| 細かい制御・キャッシュ・検証 | REST API |
| 双方向通信 | WebSocket API |
| ログイン基盤での認可 | Cognito オーソライザー |
| 独自ロジックの認可 | Lambda オーソライザー |
シナリオ:モバイルアプリ用 API。 クライアントは API Gateway を介して Lambda を呼ぶ。ユーザー認証は Cognito オーソライザーでトークン検証、急増アクセスはスロットリングで保護、頻繁な GET はキャッシュで高速化。dev/prod のステージを分け、ステージ変数で接続先 Lambda エイリアスを切替。要件が単純なら HTTP API、詳細制御が要れば REST API。
混同に注意:
①Cognito オーソライザー(ユーザープールのトークン)と Lambda オーソライザー(独自ロジック)を取り違えない。
②ステージ=環境のデプロイ単位(dev/prod)。
③HTTP API(安・単純)と REST API(高機能・キャッシュ/検証)を要件で選ぶ。
④API Gateway 自体が認証・スロットリングを担う(バックエンドに実装しない)。
Q. HTTP API と REST API はどちらを使う? 単純で低コストなら HTTP API、キャッシュ・リクエスト検証・詳細な制御が要れば REST API。Q. Cognito と Lambda オーソライザーの違いは? Cognito はユーザープールのトークン検証、Lambda は独自ロジックでの認可。Q. ステージとは? dev/prod 等の環境ごとのデプロイ単位。ステージ変数で接続先を切り替える。
「API のマネージドな公開・認証・スロットリング=API Gateway」「dev/prod の切り替え=ステージ」「リクエストごとの認可=Cognito/Lambda オーソライザー」「単純=HTTP API/高機能=REST API」 は DVA で頻出です。
1.2.2GraphQL・負荷分散・DNS・Web 保護
API の公開口は REST だけではありません。AWS AppSync は マネージドな GraphQL API で、クライアントが必要なフィールドだけを 1 リクエストで取得でき、サブスクリプションによるリアルタイム更新やモバイルのオフライン同期に向きます(データソースは DynamoDB・Lambda・RDS など)。「複数データソースを束ねた GraphQL/リアルタイム購読」が要件なら AppSync、汎用の REST/HTTP なら API Gateway という住み分けです。EC2 やコンテナを水平スケールして公開する構成では Elastic Load Balancing(ELB)が前段でトラフィックを分散し、ヘルスチェックで異常なターゲットを切り離します(HTTP/HTTPS は ALB、超低遅延の L4 は NLB)。ドメイン名でのアクセスは Amazon Route 53(マネージド DNS)が担い、加重・レイテンシー・フェイルオーバーなどのルーティングポリシーやヘルスチェックを提供します。公開エンドポイントを SQL インジェクションや XSS、過剰なリクエストから守るには AWS WAF を API Gateway・ALB・CloudFront に適用し、マネージドルールやレートベースルールで防御します。
| やりたいこと | サービス |
|---|---|
| GraphQL API・リアルタイム/オフライン同期 | AWS AppSync |
| EC2/コンテナへ負荷分散 | Elastic Load Balancing(ELB) |
| ドメイン名の名前解決・ルーティング | Amazon Route 53 |
| Web の脆弱性攻撃から保護 | AWS WAF |
1.2.3この節のまとめ
- API Gateway=ルーティング・認証・スロットリング・キャッシュ・ステージをマネージド
- 認可はCognito/Lambda オーソライザー、環境はステージ、種類はHTTP/REST/WebSocket API
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. バックエンド(Lambda 等)を安全に公開し、認証やスロットリングをマネージドで担う AWS のサービスはどれですか?
Q2. API Gateway で dev と prod のように環境ごとにデプロイを分ける仕組みはどれですか?
Q3. API Gateway でリクエストごとにユーザーを認可する一般的な仕組みはどれですか?

