・最大数十万個のAPI同時呼び出し・受付が可能
・EC2/Lambda/任意のウェブアプリケーションのワークロード処理を実行する
・Swagger/Open API(共にRESTfulAPIを記述するためのインターフェース記述言語)のインポートによってAPIを定義
・WebSocketを利用したリアルタイムかつ双方向通信の APIも処理可能
●料金
・HTTP API
使用した API コールの分だけ料金が発生
・Restful API
受信した API コールと、転送データ量に対してのみ料金が 発生
・WebSocket API
受送信したメッセージ数および分単位の接続合計時間から料金が発生
●APIのタイプ
・HTTP API
REST API よりも低いレイテンシーとコストで RESTful API を作成する。
LambdaプロキシまたはHTTPプロキシのいずれか。
・Restful API
HTTP エンドポイント、Lambda 関数、その他の AWS のサー ビスを使用する。
その他AWSサービスを利用したい場合はRestful APIを選択
CORSにも対策可能
・WebSocket API
チャットアプリ、コラボレーションプラットフォーム、マルチプレイヤーゲー ム、
金融取引プラットフォームなどのリアルタイムアプリに使用。
●統合タイプ
APIメソッドがバックエンドエンドポイントと統合するタイプが4つ存在する。
・Lambda統合
Lambda プロキシ統合または Lambda カスタム統合を使用できます。
Lambda カスタム統合は、AWS 統合の特殊なケース。
・HTTP統合
HTTP プロキシ統合または HTTP カスタム統合を使用できます。
・プライベート統合
VPC 内にある HTTP/HTTPS リソースを VPC 外のクライアントがアクセスできるように簡単に公開できます。
API Gateway がサポートする認証方法よりAPIへのアクセスを制御できる。
・Mock統合
※モック=試作品
バックエンドを統合することなく、API Gateway から直接 API レスポンスを 生成できる統合方式。
API のテストに便利
バックエンドの使用料金が発生することなく、統合設定のテストに使用したり、API の共同開発に使用したりできるため
参考:
全体
プライベート統合
https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/set-up-private-integration.html
●APIエンドポイントのタイプ
APIが実行される場所
○エッジ最適化 API エンドポイント
CloudFrontと連携してグローバルにクライアントが分散している場合に 最適にルーティングする。
API リクエストは最寄りの CloudFront POP (Point Of Presence) にルーティングされる。
REST API のデフォルトのエンドポイントタイプ
CloudFront は、リクエストをオリジンに転送する前に、Cookie 名の自然な順序で HTTP Cookie を並べ替える。
○リージョナル API エンドポイント
EC2 インスタンスまたは API と同じリージョン内のサービスから送られる場合使用する。
同じリージョンのクライアントに最適なルーティングをする。
接続のレイテンシーが少なくなる。
○プライベート API エンドポイント
インターフェイス VPC エンドポイント にはVPC 内に作成するエンドポイントネットワークインターフェイス (ENI) を利用する。 リソースポリシーを利用してアクセスを制御できる。
参考:
●キャッシュ機能の利用
ステージに対して有効。
APIキャッシュのデフォルトのTTL値は300秒、最大TTL値は3600秒
エンドポイントへの呼び出しの数 を減らし、API へのリクエストのレイテンシーを短くできる。
●スロットリングの利用
リクエスト数が多すぎる場合、制限をかけることで、トラ フィックの急増に対してバックエンドサービスを守る。
○サーバー側のスロット リング制限
全てのクライアントに対するリクエストを制限する。
全体 のリクエストが多すぎるために バックエンドサービスが処 理しきれなくなることを防ぐことができる。
○クライアントあたりの スロットリング制限
クライアントごとに「使用量プラン」に応じて制限を行う。
各ステージごとにブースト機能などを設定できる。
特定のユーザーからのリクエストが多い場合に有効
・リソースポリシー (REST APIのみ)
特定のソース IP アドレスまたは VPC エンドポイントから、
API およびメソッドへのアクセスを許可、または拒否するリソースベースのポリシーを作成
・IAM認証
APIメソッドでIAM認証を有効化する
・Lambda オーソライザー
Lambda関数を認証方法を記載する。
・Cognito オーソライザー
Cognitoユーザープールを用いて、 APIへのアクセス制御をメソッド単位で実施
AppSync
GraphQLのエンドポイントを提供するサービス
リアルタイム処理に向いている。
AppSyncの料金は従量課金
☆REST API 形式だとAPI Gatewayで複数エンドポイントを提供するが、AppSyncは1つのエンドポイントを提供する。
AppSyncは直接DynamoDBの値を取得・更新・削除することができる。
従来のAPI Gatewayだと、AWS Lambda が間に必要でしたが、
AppSyncは Lambda レス でDynamoDBへのアクセスが可能
AppSync内のリゾルバーという領域にロジックを記述。
・GraphQL
REST API は、1URLに対し1つのAPIや情報を提供できるのに対し、
GraphQL は欲しいデータをクエリとして発行すると、欲しいデータを欲しいObject形式で得ることができる
●用語
・リソース=APIのパス
usersリソースを追加し、https://api.example.com/usersで使用できるようにする。
・メソッド=リソースに対してのアクション(GET, POST等)
・ステージ=ステージにデプロイする。
エンドポイントとデプロイバージョンを紐付けるエイリアス
ステージを分けることでエンドポイントを分けることが可能(本番と開発環境を分けることが可能)
参考:
https://dev.classmethod.jp/articles/getting-start-api-gateway/