はじめに
AWS DVA取得に向けた勉強の一環です。
新たな学びがあったら随時追記していきます。
正確性は保証しませんので参考程度に見てください。
概要
- Webアプリで使われるインターフェースサービス
- APIの作成、保護、公開、モニタリングを簡単に行える
- REST API・HTTP API・WebSocket APIをサポート
APIの種類
- HTTP API
- APIプロキシ機能のみを必要とするAPIの構築に最適
- REST API
- HTTP APIに加えて、管理機能も使用したい時に使用する
- REST API(プライベート)
- VPC内からのみアクセス可能
- WebSocket API
- バックエンドサービスとクライアント間で永続的な接続を維持する
- リアルタイム双方向通信アプリケーションに使用される
エンドポイント
- 環境ごとに作成される(prod, devなど)
- タイプ
- エッジ最適化:エッジロケーションを使用
- リージョン別
- プライベート:特定VPCから使用する場合
リクエスト・レスポンス処理
- 指標
- リクエスト数:単位時間当たりのリクエスト数
- スロットリング:最大秒間リクエスト数、超えるとスロットル(リクエストを制御すること)、デフォルトで1万回/秒
- クォータ:APIキーごとのリクエスト上限
- リクエスト/レスポンスの変換(マッピングテンプレート)
- バックエンドとクライアントがそれぞれ処理できる形に変換する
- 指数バックオフ Exponential backoff
- スロットリングエラーや5xxエラー発生時の再試行ロジック
- エラー後の再試行までの待機時間を指数関数的に増やしていく
- 不必要なリクエストを減らす目的
統合(バックエンドとの接続)
- Lambda統合
- Lambda関数がリクエストを処理
- Lambdaプロキシ統合
- よりシンプルな方法
- API Gatewayの役割が少ない
- リクエストの解析やレスポンスの生成をLambda側で行う
- HTTP統合
- HTTPベースのバックエンドがある場合に使用(EC2など)
- プライベート統合
- VPC内にあるリソースをにリクエストを渡す
- VPCリンクを使用する
- Mock
- バックエンドと統合せずに固定のレスポンスを返す
- 主にテスト用
- AWSサービス統合
- DynamoDB、S3など
その他の機能
- 使用量プラン
- APIキーごとにリクエスト数やスロットリングを制限できる
- 無料プラン・有料プランのユーザーによって使用量を変えられる
- キャッシング
セキュリティ
- クライアント証明書の作成・検証が可能
- 認証
- IAM認証
- Cognitoオーソライザー(ユーザープール認証)
- カスタムオーソライザー(Lambdaオーソライザー)
- CORS(Cross-Origin Resource Sharing)の設定
- WAF(Web Application Firewall)との連携
課金体系
- リクエスト料金とデータ転送料金
- キャッシュ利用時にも課金される