4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【備忘録・まとめ】AWS API Gateway 開発者ガイド

Last updated at Posted at 2019-01-10

出典

Amazon API Gateway 開発者ガイド

まとめ

  • APIを外部に公開するためのマネージド高機能HTTPプロキシサーバ
  • 主な機能
    • APIの管理
      • 公開・バージョン管理
      • エンドポイントURIとリソースの対応
    • API利用者のアクセス管理および制限
      • 認証・認可の確認
      • 呼び出し回数
      • 発信元セグメントなど
    • AWS内部サービスを外部に公開する窓口
      • 内部サービスに対して、外部リクエストをプロキシするイベントソース

要点

実用に際して重要なものだけ抜粋、補足。

Amazon API Gateway の概念

Amazon API Gateway の概念

以下、主要なものだけ

  • デプロイ
    • リソースおよびメソッドのポイントインタイムスナップショット
    • リリースされたAPIのスナップショット
  • API 開発者
    • APIを開発しているAWSユーザー
  • APIエンドポイント
    • エッジに最適化された API エンドポイント
      • CloudFront経由でデプロイされるエンドポイント
      • APIリクエストが最寄のCloudFront接続ポイント(POP)にルーティングされる
    • リージョンの API エンドポイント
      • APIリクエストが、CloudFrontディストリビューションを経由せず、リージョン固有のAPI Gatewayへ直接飛ぶ
    • プライベート API エンドポイント
      • パブリックインターネットからは分離されていて、アクセス権限を付与されているAPI GatewayのVPCエンドポイントを使用してのみアクセスできる
  • APIキー
    • APIを使用者を識別する英数字の文字列
    • APIキーをLambdaオーソライザーまたは使用量プランと一緒に使用して、APIへのアクセスを制御する
  • ステージ
    • 例: 'dev'、'prod'、'beta'、'v2' など
    • ライフサイクル状態への論理的な参照
    • API ステージは API IDとステージ名によって識別される
  • 統合リクエスト
    • API Gatewayへのリクエストから、バックエンドへのリクエスト(イベント)の形式にマッピングするAPI Gatewayのインターフェース
  • 統合レスポンス
    • バックエンド → API Gateway APIに流れるデータ(ステータスコード、ヘッダ、ペイロード等)の対応を定義するインターフェース
  • マッピングテンプレート
    • 「Velocity Template Language (VTL)」で表現されるスクリプト。統合リクエスト、統合レスポンスで使われる。
  • メソッドリクエスト
    • 外部からAPI Gateway APIへのリクエストの形式(パラメータや本文)を定義するインターフェース
  • メソッドレスポンス
    • API Gateway APIから外部へのレスポンス形式を定義するインターフェース
  • モデル
    • リクエストまたはレスポンスペイロードのデータ構造を指定するデータスキーマ
    • ペイロードの検証にも使われる
  • プロキシ統合
    • 簡略化された API Gateway 統合の設定
    • Lambdaプロキシ統合の場合、API Gatewayは、バックエンドのLambda関数への入力としてリクエスト全体を送信
  • 使用量プラン
    • スロットリングとクォータ制限を設定
    • 個々のクライアントAPI キーに適用される

アクセスコントロール

API Gateway で API へのアクセスをコントロールする

以下、主要なものにだけ補足。

  • リソースポリシー
    • 特定のソース IP アドレスまたは VPC エンドポイントから API へのアクセスを許可または拒否するリソースベースのポリシー
  • IAMロールとポリシー
    • IAMロールとポリシー記述言語で設定できる柔軟な権限定義
  • Cross-Origin Resource Sharing (CORS)
    • クロスドメインのリソースリクエストへの API の応答を制御
  • Lambdaオーソライザー
    • APIメソッドへのアクセスを制御するために使用するLambda関数
    • かなり強力で多用途
  • Amazon Cognito ユーザープール
  • クライアント側 SSL 証明書
  • 使用量プラン
    • APIキーによる、キー毎の利用頻度制限

デプロイとステージ

  • APIデプロイを作成し、ステージと関連付けることで、API利用者は各デプロイのAPIの機能を利用できるようになる。
  • デプロイは各API実装のインスタンスのような概念
  • ステージは各デプロイへのエイリアスのような概念

Canaryリリース

  • 1つのステージに対して2つデプロイを割り当て、そのステージへのリクエストを特定割合で2つのデプロイにランダムに振り分けられる

スロットリング

  • API Gatewayの主要機能の1つで、詳細に把握すべき重要項目
  • スロットリングの対象粒度毎に、メソッド辺り、クライアント辺り、アカウント辺りがある
  • 設定された頻度を超える呼び出しがあると、その呼び出しを制限する

実際のAPI呼び出し

  • Javascriptやその他のランタイムからAPI GatewayのAPIをコールする場合、一般的には認証や認可の確認が必要になるが、全部実装すると大変
  • そのため、API Gatewayが各APIに合わせたSDKを自動生成してくれる仕組みにはなっているのだが、コレも結構面倒
  • Node.jsなんかだとこの辺が使いやすそう

APIにカスタムドメイン名を付ける

  • デフォルトでは各リソースのエンドポイントとしてhttps://<api-id>.execute-api.<region>.amazonaws.com/<stage>の規則に従ったURLが発行されるが、このホストのドメイン名を自前のものに差し替える事ができる
  • ただし、SSL証明書をACMないし自前で準備したりする必要がある
4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?