AWS認定資格 WEB問題集&徹底解説
クラウドプラクティショナー
AWSサービスの一つであるAmazon API Gatewayはどんな内容なのでしょうか?また、AWS認定資格のクラウドプラクティショナー(CLF)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います
1. サービス概要
Amazon API Gatewayは、RESTful API・HTTP API・WebSocket APIを作成・公開・管理・モニタリング・保護するためのフルマネージドサービスです。 バックエンドにはAWS Lambda・EC2・ECS/Fargate・DynamoDB・HTTP エンドポイントなどを接続でき、クライアントとバックエンドの仲介(API管理レイヤー)として機能します。
API Gatewayはスケーリング・可用性・セキュリティ(認証・認可・スロットリング)・モニタリングをAWSが管理するため、 開発者はビジネスロジックの実装に専念できます。Lambdaと組み合わせたサーバーレスアーキテクチャの中核サービスです。
主なユースケースは、モバイル/Webアプリ向けREST APIバックエンド、マイクロサービス間の通信ゲートウェイ、リアルタイム双方向通信(WebSocket)、サーバーレスAPIの公開・管理です。
2. 主な特徴と機能
2.1 APIタイプ
- REST API: 最も機能が豊富。カスタムオーソライザー・使用量プラン・リクエスト/レスポンス変換・APIキー管理に対応。
- HTTP API: REST APIより低コスト(約70%割引)・低レイテンシ。基本的なプロキシ統合とJWT認証に特化。シンプルなAPIに最適。
- WebSocket API: 双方向リアルタイム通信を実現。チャット・ライブダッシュボード・ゲームに活用。Lambdaに接続されたルートで各メッセージを処理。
2.2 統合タイプ
- Lambda プロキシ統合(推奨): リクエスト全体をそのままLambdaに渡す。Lambdaがレスポンスをフォーマット。最もシンプルでよく使われる。
- Lambda 非プロキシ統合: マッピングテンプレート(VTL)でリクエスト/レスポンスを変換。柔軟だが設定が複雑。
- HTTP統合: 外部HTTPエンドポイントやALBへのプロキシ転送。
- AWSサービス統合: DynamoDB・SQS・SNS・Kinesis等に直接統合(Lambda不要)。
- Mock統合: バックエンドなしで固定レスポンスを返す(テスト・モック用)。
2.3 ステージとデプロイ
APIの変更はデプロイメントとしてパッケージ化し、ステージ(dev/staging/prod等)に割り当てます。 各ステージは独立したURLを持ち、ステージ変数でバックエンドを切り替え可能(例: Lambda関数名やURLをステージ変数で管理)。
2.4 カナリアリリース
ステージにカナリア設定を追加すると、新しいデプロイメントへのトラフィックを一定割合(例: 10%)だけルーティングして段階的なリリースが可能です。
2.5 認証・認可
- IAM認証(AWS_IAM): SigV4署名でAWSユーザー/ロールを認証。AWS内部サービス間の呼び出しに最適。
- Amazon Cognito Authorizer: CognitoユーザープールのJWTトークンで認証。Webアプリ・モバイルアプリのユーザー認証に適用。
- Lambda Authorizer(カスタムオーソライザー): 独自のLambda関数でトークン/リクエストパラメータを検証してIAMポリシーを返す。独自認証基盤やサードパーティ認証に対応。
- APIキー: クライアント識別・使用量プランとの組み合わせでアクセス制御と流量制限。
2.6 スロットリングとクォータ
アカウントレベルのデフォルト制限はリージョンあたり10,000 RPS(リクエスト/秒)・バースト5,000。 ステージレベル・メソッドレベルで個別のスロットリング制限を設定可能。 使用量プラン(Usage Plan)でAPIキーごとにリクエスト制限・クォータを設定しマネタイズに活用。
2.7 キャッシュ
APIキャッシュ(REST APIのみ)を有効化すると、レスポンスを0.5GB〜237GBのキャッシュに保存し、同一リクエストへの応答速度向上とバックエンド呼び出し削減ができます。 TTL(デフォルト300秒、最大3600秒)を設定。ステージ単位で有効化。
2.8 CORS
ブラウザのクロスオリジンリクエストを許可するためのCORSを設定できます(REST APIではOPTIONSメソッドの設定、HTTP APIは組み込みCORS設定)。
3. アーキテクチャおよび技術要素
- クライアントがAPI GatewayのエンドポイントURLへHTTPSリクエストを送信。
- 認証・認可レイヤー(IAM/Cognito/Lambda Authorizer)でリクエストを検証。
- スロットリングチェックでレート制限を超えていないか確認。
- キャッシュ確認(有効時)でキャッシュヒットならバックエンド呼び出し不要。
- 統合リクエスト処理でバックエンド(Lambda/HTTP/AWSサービス)を呼び出し。
- レスポンス変換(マッピングテンプレート)してクライアントへ返却。
エンドポイントタイプはリージョン(同一リージョン向け)・エッジ最適化(CloudFront経由でグローバル低レイテンシ)・プライベート(VPC内専用、VPCエンドポイント必要)の3種類です。
4. セキュリティと認証・認可
- HTTPS専用: API Gatewayは常にHTTPS(TLS 1.2+)でのみ通信可能。カスタムドメイン名(ACM証明書)の設定も可能。
- リソースポリシー: API GatewayレベルでIPアドレス制限、VPC限定アクセス、クロスアカウント制御が可能。
- WAF統合: AWS WAFをAPI Gatewayに関連付けてSQLインジェクション・XSS等のWeb脅威から保護。
- CloudTrail統合: APIコールのログをCloudTrailに記録。セキュリティ監査に活用。
- アクセスログ: CloudWatch Logsへのアクセスログ・実行ログ(リクエスト/レスポンス全体)を設定。
- X-Ray統合: リクエストのエンドツーエンドトレーシングでパフォーマンスとエラーの分析。
5. 料金形態
- REST API: APIコール数(100万コールあたり)に課金。キャッシュは別途ストレージ容量に課金。
- HTTP API: REST APIより約70%安価。シンプルな使用量ベース課金。
- WebSocket API: 接続分数とメッセージ送受信数に基づき課金。
- データ転送: アウトバウンドデータ転送料金が発生(インバウンドは無料)。
6. よくあるアーキテクチャ・設計パターン
- サーバーレスAPIバックエンド: API Gateway + Lambda + DynamoDB。フルサーバーレスでスケールアウト。Lambdaプロキシ統合が最もシンプル。
- マイクロサービスファサード: 単一のAPI GatewayエンドポイントからパスルーティングでECS/EKS上の複数マイクロサービスに分散。
- 認証フロー(Cognito): モバイル/WebアプリがCognitoでJWT取得→API GatewayでCognito Authorizerにより検証→Lambdaでビジネスロジック実行。
- リアルタイムチャット(WebSocket): WebSocket APIでクライアントの接続管理→DynamoDBに接続ID保存→メッセージ受信時に他クライアントへブロードキャスト。
- カナリアデプロイ: 新バージョンのAPIを10%のトラフィックでテストし問題なければ100%に切り替え。Blue/Greenデプロイの実現。
7. 設定・デプロイ手順(ハンズオン例)
- API Gatewayコンソールで「APIの作成」→ タイプ(REST/HTTP/WebSocket)を選択。
- リソース(パス)とメソッド(GET/POST等)を定義。統合タイプ(Lambda プロキシ統合)とバックエンドを設定。
- 必要に応じてオーソライザー(Cognito/Lambda)・APIキー・使用量プランを設定。
- CORS設定(ブラウザクライアントから呼ぶ場合)を行う。
- 「APIのデプロイ」でステージ(dev/prod等)を選択してデプロイ。エンドポイントURLが生成される。
- CloudWatch Logsのアクセスログ・X-Rayトレースを有効化してモニタリング設定。
8. 試験で問われやすいポイント
8.1 REST API vs HTTP API の違い
- Q: REST APIとHTTP APIの主な違いは?
A: HTTP APIはシンプルで低コスト(約70%安)・低レイテンシだがWAF統合・APIキャッシュ・使用量プラン等の高度機能はREST APIのみ。複雑な要件はREST API、シンプルなProxyはHTTP API。
8.2 統合タイプ
- Q: Lambda プロキシ統合と非プロキシ統合の違いは?
A: プロキシはリクエスト全体をLambdaに渡し、LambdaがHTTPレスポンスを返す。非プロキシはVTLマッピングテンプレートでリクエスト/レスポンスを変換可能。 - Q: Lambdaを経由せずDynamoDBに直接統合するには?
A: AWSサービス統合(Direct Integration)でAPI GatewayからDynamoDBを直接呼び出す。
8.3 認証・認可の選択
- Q: 外部(サードパーティ)認証基盤を使いたい場合は?
A: Lambda Authorizer(カスタムオーソライザー)でトークンを検証し、IAMポリシーを返す。 - Q: AWSサービス間でAPI Gatewayを呼び出す場合の認証は?
A: IAM認証(AWS_IAM)でSigV4署名を使用。 - Q: モバイルアプリのユーザー認証にはどれを使うか?
A: Amazon Cognito Authorizer(CognitoユーザープールのJWT検証)。
8.4 スロットリング
- Q: API Gatewayのデフォルトスロットリング上限は?
A: リージョンあたり10,000 RPS(バースト5,000)。ステージ/メソッドレベルでも個別設定可能。 - Q: スロットリング超過時のHTTPステータスコードは?
A: 429 Too Many Requests。
8.5 キャッシュ
- Q: API Gatewayのキャッシュが使えるのはどのAPIタイプか?
A: REST APIのみ。HTTP APIにはキャッシュ機能なし。 - Q: キャッシュを無効化してバックエンドを直接呼びたい場合は?
A: リクエストヘッダーに Cache-Control: max-age=0 を付加(キャッシュ無効化許可が必要)。
8.6 エンドポイントタイプ
- Q: VPC内からのみアクセス可能なAPIを作るには?
A: プライベートエンドポイントタイプを選択し、VPCエンドポイント(Interface型)からのみアクセス可能にする。 - Q: グローバルなクライアントへの低レイテンシAPIは?
A: エッジ最適化エンドポイント(CloudFrontのエッジPOPを経由)。
8.7 ステージとカナリア
- Q: 新バージョンのAPIを段階的にリリースするには?
A: ステージのカナリアデプロイメントで新バージョンへのトラフィック割合を指定(例: 10%)。問題なければプロモートして100%切り替え。