LoginSignup
6
3

More than 3 years have passed since last update.

Amazon API Gatewayのオンラインセミナー受けてみた

Last updated at Posted at 2019-05-29

AWS Black Belt Online Seminar Amazon API Gateway」の自分向けメモ
API Gateway語感はなんとなく分かるけど......レベルの人向け

まずAPIとは

  • プログラムやソフトウェア同士がやり取りをするための取り決め(IF仕様も含む)
  • APIにもいくつか種類があるがそのうちのWeb APIがAPI Gatewayの対象領域
  • Web APIの特徴は他システムとの緩やかな連携、エコシステムとの親和性
  • 課題
    • インフラ管理が必要(サーバー管理は本質ではない)
    • APIのバージョンや設定値の管理が必要
    • 認証認可の考慮が必要
    • 流量制御と保護(スロットリングへの対策)

概要

API Gatewayとは

  • クライアントからのリクエストを受け付ける窓口となるAWSサービス
  • リージョンサービス
  • フルマネージドサービス(オートスケール、サーバー管理不要)
  • CloudFrontとの併用も可能(レイテンシ削減可能)

ユースケース

  • パブリックなWeb API基盤の提供
  • プライベートなWeb API基盤の提供
  • AWSサービスのAPI化
  • サーバーレス構築

API新規作成の流れ

  1. APIの設計
  2. プロトコル種別とエンドポイントタイプ選択
  3. APIの設定
  4. デプロイとステージ設定

※既存のRESTなAPIからのクローンで作成することも可能

プロトコル種別

  • RESTとWebSocketの2種類可能
    • REST:ステートレス(単一HTTPメッセージで完結する通信、セッション管理なし)なAPIの実装
    • WebSocket:ステートフル(双方向のリアルタイム通信)なAPIの実装

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

  • エッジ最適化
    • まずはエッジロケーション(CloudFront)にルーティング
  • リージョン
    • リージョンに直接ルーティング
    • 同一リージョン内のレイテンシ削減
  • プライベート
    • パブリックアクセスされない
    • VPCエンドポイント経由でのみアクセス可能

REST APIの場合

リソースとメソッド

  • ツリー構造にてリソースを定義し、各ブランチにHTTPメソッドを指定
  • デプロイ単位はリソース単位

メソッド設定

  • 4つの設定がある
  • リソースとメソッドを指定して、一意のパラメータをバックエンドに渡せる
  • リクエストとレスポンス、それぞれでパラメータの加工が可能

WebSocket APIの場合

ルート

  • 2つのURLを提供
  • イベントをRouteとして定義する

ルート選択式

  • URLパスは1つ、受信データ(JDON)の中身にどのルートを選択するか記述する

ルート設定

  • 3つの設定がある

ステージ設定

  • 作成したAPIを指定したステージにデプロイする
    • ステージ:環境設定
  • 複数のエンドポイントをステージで容易に準備できる

認証認可

  • Rest:メソッド単位で設計可能
  • API単位で設定
  • 認証方法は以下
    • IAM権限
    • Lambdaオーソライザー
    • Cognitoオーソライザー

統合タイプ

  • Lambda:リクエスト内容を処理する
  • HTTP:外部サービス等パブリックなところにアクセス
  • Mock:固定値を返す
  • AWSサービス:AWSサービスをラップして公開
  • VPCリンク:VPCリソースにアクセス

※Lambda、HTTP、VPCリンクはプロキシ統合を設定可能(リクエストをパススルー)

リクエストレスポンス変換

  • バックエンドに処理を渡す前にデータ形式の変換が可能
  • バックエンドから渡されたデータをクライアントに返す前にデータ形式の変換が可能

ログ

  • 実行ログ、アクセスログをlogsに出力可能
    • アクセスログは任意に設計可能
  • メトリクス設定可能

RestAPI キャッシュ

  • ステージ毎にキャッシュ
  • バックエンドのトラフィック削減

リソースポリシー

  • APIから見て、どこからのアクセスを許可するかを指定できる
    • 特定のAWSユーザーアカウントからしか呼び出せないなどの設定ができる

カナリアリリース

  • 部分公開機能
  • 特別なステージ「Canary」を作成し、リクエストを指定の比率でCanaryに流せる

AWS WAFとの連携

  • SQLインジェクション等を防げる

X-Ray連携

  • 呼び出しトレースの記録が可能
  • Lambadaも併せて、End2Endでトレース可能

クライアント証明書

  • 外部サービスの利用時にステージに設定した証明書を利用可能

利用料金

以下に依存する

  • APIコール数
  • メッセージ要求数
6
3
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
6
3