AWS での API 設計
AWS でのアプリケーション開発
Ricardo Sueiras
Principal Technologist
API Gateway
- Amazon API Gateway: API 構築のためのマネージドサービス。
- API の設計、デプロイ、管理、セキュリティ保護を行います。
Amazon API Gateway の機能
- さまざまな種類の API を実装できます。
- バックエンドサービスと統合できます。
Amazon API Gateway の機能
- さまざまな種類の API を実装できます。
- バックエンドサービスと統合できます。
- API へのアクセスをセキュリティで保護できます。
Amazon API Gateway の機能
- さまざまな種類の API を実装できます。
- バックエンドサービスと統合できます。
- API へのアクセスをセキュリティで保護できます。
- リクエストをスロットリングしてバックエンドを保護できます。
Amazon API Gateway の機能
- さまざまな種類の API を実装できます。
- バックエンドサービスと統合できます。
- API へのアクセスをセキュリティで保護できます。
- リクエストをスロットリングしてバックエンドを保護できます。
- リクエストとレスポンスのペイロードを変換できます。
Amazon API Gateway の機能
- さまざまな種類の API を実装できます。
- バックエンドサービスと統合できます。
- API へのアクセスをセキュリティで保護できます。
- リクエストをスロットリングしてバックエンドを保護できます。
- リクエストとレスポンスのペイロードを変換できます。
- 利用者向けに API を公開できます。
Amazon API Gateway の機能
- さまざまな種類の API を実装できます。
- バックエンドサービスと統合できます。
- API へのアクセスをセキュリティで保護できます。
- リクエストをスロットリングしてバックエンドを保護できます。
- リクエストとレスポンスのペイロードを変換できます。
- 利用者向けに API を公開できます。
- API ライフサイクルを管理できます(バージョン管理、デプロイ、エイリアス)。
API の種類
- API Gateway は 3 種類の API をサポートしています。
- REST API
- HTTP API
- WebSocket API
API Gateway エンドポイント
- エンドポイントは、クライアントが API にアクセスする方法を制御します。
- エッジ最適化: グローバルな低レイテンシーのために AWS が管理する CloudFront を使用します。
- リージョン: 特定の AWS リージョンにデプロイされます。
- プライベート: AWS PrivateLink 経由でのみアクセス可能です。
- プライベートエンドポイントはパブリックインターネットを経由しません。
REST API
- API Gateway の中で最も機能が豊富なオプションです。
- 同期的なリクエスト/レスポンスモデルに基づいています。
REST API のユースケース
- ライフサイクル全体の管理が必要なエンタープライズ API。
- 高度なセキュリティ制御が必要な API。
- API キーと使用量プランを備えたサードパーティ開発者エコシステム。
- Lambda を使わない AWS サービスへの直接統合。
API Gateway REST API のサポート
- リクエスト検証。
- API キー。
- 使用量プランとスロットリング。
- 設定可能な TTL によるレスポンスキャッシュ。
- VTL テンプレートによるリクエスト/レスポンスの変換。
- IAM 認証(Signature V4)。
- Lambda オーソライザー、Cognito ユーザープール。
API Gateway REST API のサポート
- 3 種類のエンドポイントタイプをサポート:
- AWS WAF による Web エクスプロイト対策。
- カナリアリリースのデプロイ。
- AWS X-Ray と CloudWatch ログによる可観測性。
REST API のトレードオフ
- HTTP API より費用がかかります。
- わずかにレイテンシーが高くなります。
HTTP API
- 機能の幅よりもパフォーマンスとコストを優先して最適化されています:
HTTP API のユースケース
- サーバーレスワークロードおよび Lambda ベースの API。
- マイクロサービスや軽量プロキシ API。
- レイテンシーが重要なアプリケーション。
- OAuth 2.0 / OIDC 認証を使用する API。
API Gateway HTTP API のサポート
- Lambda プロキシ統合とオーソライザー。
- ネイティブ JWT/OIDC 認可(Cognito、Auth0、Okta)。
- API レベルでの CORS 設定(組み込み)。
- VPC Link を使ったプライベート VPC 統合。
- ヘッダー、クエリ文字列、パスの基本的なパラメーターマッピング。
HTTP API のトレードオフ
HTTP API がサポートしない機能:
- API キー
- 使用量プラン
- リクエスト検証
- レスポンスキャッシュ
- AWS X-Ray によるトレース
VTL ペイロード変換
サポートするエンドポイント:
WebSocket API
- クライアントとサーバー間の双方向通信を実現します。
- REST や HTTP API とは異なり、接続を維持し続けます。
- サーバーから接続中のクライアントへデータをプッシュできます。
WebSocket API のユースケース
- チャットアプリケーション。
- リアルタイム通知。
- リアルタイムダッシュボード。
API Gateway WebSocket API のサポート
- ペイロードデータの変換。
- リクエスト検証。
- 特殊な組み込みルート:
$connect: クライアントが接続を確立する
$disconnect: クライアントが切断する
$default: 一致するルートが見つからない場合
API キャッシュ
- レスポンスをキャッシュすることでバックエンドの負荷を軽減できます。
- API のパフォーマンスが向上します。
- 主なユースケース:
- 頻繁にリクエストされるデータ
- 読み取りが多い API
- Lambda の呼び出し回数の削減
API キャッシュ
- キャッシュされたレスポンスは設定可能な TTL が経過すると期限切れになります。
- 古いデータを管理するには:
- キャッシュの有効期限を設定する
- キャッシュをフラッシュする
API 設計のベストプラクティス: 明確なリソース名を使う
- パスはアクションではなく、リソースを表すようにします。
- 動詞ではなく名詞を使いましょう。
- 推奨:
- 避けるべき例:
API 設計のベストプラクティス: API のバージョン管理
- API をバージョン管理することで、安全に進化させられます。
- 既存クライアントへの影響を避けられます。
- 主なアプローチ:
- URI バージョニング:
GET /v1/orders
- クエリパラメーター:
GET /orders?version=1
- HTTP ヘッダー:
Accept-Version: v1
API デベロッパーポータル
- Web ポータルを通じて REST API を公開・共有できます。
- API 利用者にドキュメントを提供します。
- 主な機能:
- API ドキュメント(Swagger ファイル)
- 利用者のオンボーディング
- SDK ダウンロード
- API キーの登録とサブスクリプションフロー
OpenAPI 仕様
- OpenAPI(Swagger): REST API を記述するための標準仕様です。
- API Gateway は OpenAPI 仕様のインポートとエクスポートに対応しています。
練習しましょう!
AWS でのアプリケーション開発
Preparing Video For Download...