API Gatewayとは?
LambdaやEC2等のバックエンドへのAPIを提供するサービスです。アプリからAPIリクエストを受け付けるエンドポイント(Webhook URL)として構築する。
基本的な機能
バックエンドを呼び出す。
呼び出すバックエンドとしては下記のように様々なサービスを呼び出すことが可能です。
- Lambda関数
- EC2
- その他AWSサービス
- 外部リソース
REST API
Web Sockets
APIの設定、デプロイ
認証、認可、アクセス制御
流量制御と保護(スロットリング)
流量制御の他、バックエンドを保護するためのスロットリング等もあります。
キャッシング
キャッシングしてバックエンドの負荷を低減することも可能です。
エンドポイントタイプ
「REST API」の場合のみエンドポイントを3種類から選択することが可能です。
エッジ最適化
- REST APIのみ
- Publicに公開される。
- 一旦エッジロケーション(CloudFront)にルーティングされる。
リージョン
- REST API、HTTP API、WebSocketで利用できる。
- Publicに公開される。
- リージョンに直接ルーティングされる。(リクエスト元が同一ならレイテンシを削減できる。)
プライベート
- REST APIで利用できる。
- Publicからのアクセスはできず保護できる。
- VPCエンドポイント経由でのみアクセスが可能
サービスプロキシ機能
APIをプロキシとして受ける機能です。これを使えば例えばLambdaファンクションを非同期に呼び出すといったことも可能になります。バックエンドはLambdaを元、SQS、Kinesis等の幅広いAWSサービスを送付先とすることが可能です。
API処理別設計思想
取得系(GET系)の場合
API GatewayでキャッシュするようにしてなるべくバックエンドのLambdaを呼び出すことなくレスポンスを返せるのでそのようにするのが良いです。
更新系(PUT系)の処理
AWS Lambdaで直接記述するのではなく、API Gatewayはサービスプロキシとして構成することも可能なのでAmazon SQS、Amazon Kinesis(一旦バッファリングするようなサービスたち)に流すようににしてイベント処理として非同期でLambdaで処理していくようにすると良いです。
この記事へのコメントはありません。