2
1

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 3 years have passed since last update.

Amazon API Gateway概要

Posted at

Amazon API Gateway 概要

Amazon API Gatewayの概要をまとめる。

API Gateway

APIとは

  • Application Programming Interfaceの略称。
  • プログラムやソフトウェア同士がやり取りするための取り決め・仕様、機能の提供方法。

API 提供時の共通課題

  1. インフラ管理:可用性とスケーラビリティの保証

  2. API管理:設定やデプロイの制御

  3. 認証・認可:アクセス制御

    ...

API Gatewayとは

  • API Gatewayは、上記のWeb API提供時の共通課題を解決するためのフルマネージド型AWSサービス。

    • オートスケール
    • 仮想サーバー管理不要
    • 使用料に応じた課金

    API_Gateway.png

API Gatewayが扱うAPI

以下の2種類のAPIを扱うことができる。

  • REST
    • REST= Representational state transfer
    • 1HTTPメッセージで1操作情報を扱う(基本)
    • 扱う情報をURIで表現する「リソース」として定義。それらをHTTPメソッド(POST,PUT,GET,...)表現で操作
  • Websocket
    • HTTP上での、クライアント-サーバー間双方向通信仕様
    • 1コネクションで継続的なデータ送受信を行う(ステートフル)

REST APIエンドポイントタイプ

REST APIの場合、クライアントから見たアクセス先のエンドポイントの性質を以下の3種類のタイプから選択。

  • エッジ最適化
    • 一旦エッジロケーション(CloudFrontディストリビューション)にルーティングする。
  • リージョン
    • リージョンに直接ルーティング
  • プライベート
    • VPC内からのみアクセス可能

API作成の流れ

  1. API設計
    • 要求および仕様を確認
  2. プロトコル種別とエンドポイントタイプを選択
    • REST をプロトコルとして選択
    • リージョン、エッジ最適化、プライベートからエンドポイントを選択(RESTの場合)
  3. リソース&メソッド設定
    • リソースとメソッド
      • 「/」を最上位としたツリー構造にて「リソース」を定義。各リソースに受け付けるHTTPメソッドを指定 (パスパラメータの利⽤も可能)。
        • エンドポイント
          https://<api-id>.execute-api.<region-id>.amazonaws.com/<stage-name>/…
          
        • API(REST) 例:PetStore
          • リソース:/
            • リソース:/pets
              • GET
              • リソース:/{petId}
                • GET,PUT,DELETE,...
    • 認証の設定や、受け付けるクエリパラメータ、必須とするHTTPヘッダなど「リクエ ストの受付」に関する設定。
    • ルーティング先バックエンドの指定、リクエストの変換。
    • レスポンス内容の変換やステータスコードのマッピング。
    • リクエストに対する最終的なAPIGatewayとしてのレスポンス。
  4. デプロイとステージの設定
    • ステージ=デプロイ先環境。prod,staging,dev
    • ステージ名は、エンドポイントURLの一部として利用。
      https://<api-id>.execute-api.<region-id>.amazonaws.com/prod/…
      
      https://<api-id>.execute-api.<region-id>.amazonaws.com/staging/…
      

その他

  • 既存APIのクローンやSwagger設定(Yaml)をインポートによる作成が可能。

API Gatewayのユースケース

  1. インターネットからアクセス可能なパブリックなWeb APIの提供。
  2. 企業グループ内でのプライベートなWeb APIの提供。
  3. Dynamo DBなどAWSサービスを独⾃のWeb API化する⼿段として利⽤。
  4. サーバーレスアーキテクチャの実現する⼿段として利⽤。

よく見る構成

  1. REST API
    API_Gateway_RESTAPI.png

  2. SPA
    API_Gateway_SPA.png

認証・認可

アクセス制御パターン

Open

  • APIを保護する必要がない場合。 誰もがAPIへのアクセスを許可されている状態。

IAMアクセス権限

  • AM UserやRoleで発行されるアクセスキーを利用してアクセスを検証。
  • 該当API Gatewayの呼び出し権限をIAM UserやRoleにアタッチされている場合かつ, アクセスキーが正当なものである場合は呼び出し可。

Cognito Authorizer

  • Cognito User Poolと接続し, 発行されたOAuthトークンの検証をAPI Gatewayで実施し、API呼び出しを制御。

Lambda Authorizer

  • Lambda関数にトークンなどの認証情報を渡してAPI呼び出しを制御。

参考情報

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?