AWSサーバレスアーキテクチャーNo3:API Gateway

AWSのホームページの初心者ハンズオンにある「サーバーレスアーキテクチャで翻訳 Web API を構築する 」の内容を自分のAWSアカウントでやってみました。

前回投稿の Lambda、Translate を実装した続きで、3パート目です。
ざっくりと基本構成を図で表してみて、この中の API-Gateway のみの構成です。

Amazon API Gateway の特徴

  • サーバーをプロビジョニング/管理することなく、APIを作成・管理できるマネージドサービス
  • 可用性の担保、スケーリング、API キー管理といった API 開発で必要なことをAPI Gateway に任せることで、開発者はビジネスの差別化に繋がる作業に集中できる
  • REST API と WebSocket に対応
  • リクエストベースの料金体系(REST API の場合)
    実行回数(AWSサインアップから1年間の無料枠あり)( + キャッシュメモリ量 ) + データ転送料金

API Gateway を⽤いた API 開発の主要な流れ

メソッドリクエスト :リクエストの受付に関する設定を⾏う

  • 認証の設定
  • 受け付けるクエリパラメータ
  • 必須とするHTTPヘッダの設定

統合リクエスト:バックエンドの種別を選択する

  • Lambda関数
  • HTTP
  • Mock
  • AWSサービス
  • VPCリンク

統合リクエスト → 統合レスポンス

  • バックエンドへのInput、バックエンドからのOutput変換することができる
  • プロキシ統合を利用することで、変換せずにパススルーすることも可能

メソッドレスポンス

リクエストに対する最終的なAPI Gatewayとしてのレスポンスに関する設定

  • ステータスコード
  • HTTPレスポンスヘッダなど

API Gateway を単体で使う:設定手順

Mock データを返す API を作成する

  • 新規に API を作成する
  • sample リソースを作成し、GETメソッドを作成
  • 統合タイプとして Mock を選択する
    (まだ Lambda 関数との連携は行わず、固定の JSON を返す)
  • dev ステージにデプロイする
  • API を試しに実行してみる

それでは設定していきましょう!

新規にAPIを作成する

検索窓「API」から「API Gateway」をクリック

今回は「REST API」をクリック
「OK」をクリック

「REST」を選択

「新しいAPI」を選択

「translate-api」と名前を付けた

「リージョン」のまま

「APIの作成」をクリック

「アクション」→「リソースの作成」をクリック

API ごとにデプロイ

ステージを作成し、そのステージのみにデプロイ可能

sample リソースを作成し、GETメソッドを作成

「sample」とリソース名を設定

「リソースの作成」をクリック

「アクション」→「メソッドの作成」をクリック

下のイメージでプルダウンから「GET」をクリック

✔ をクリックすると確定されて、右画面が展開される。

今回は「Mock」を選択

「保存」をクリック

統合タイプとして Mock を選択する
(まだ、Lambda 関数との連携は行わず、固定のJSONを返す)

リソース x メソッド ごとに API のフローを定義する

ハンズオンでは、「すべてのヒントを非表示」をクリック

固定のJSONを返す場合は、

「統合レスポンス」をクリック

▶ を展開

マッピングテンプレート を展開し、

「application/json」をクリック

{
    "statusCode": 200,
    "body": {
        {
            "report_id": 5,
            "report_title" : "Hello, world"
        },
        {
            "report_id": 7,
            "report_title" : "Good morning!"
        }
    }
}

JSONコードをコピペして、
「保存」をクリック

「テスト」をクリック
クエリ文字列やヘッダの内容を設定できるが、このままでも動くので、「テスト」をクリック
API Gateway からレスポンスされる内容が表示される。まだ、デプロイしていないので、「メソッドの実行」で戻る。

dev ステージにデプロイする

「アクション」→「APIのデプロイ」

「新しいステージ」を設定し、
ステージ名「dev」を設定

「デプロイ」をクリック

▶ dev を展開して、「GET」をクリック

API を試しに実⾏してみる

「URL呼び出し」のリンクをクリック
結果が表示される。

今回は、 Amazon API Gateway だけの構成でした。

次回は、API Gateway と Lambda を組み合わせて、入力した日本語を英語に翻訳するAPIを作成します。