【AWSサービス 基礎】Amazon API Gateway で REST API を作成しリクエストを処理する

Amazon API Gateway で REST API を作成しリクエストを処理する
目次

概要

Amazon API Gatewayは、APIの作成・公開・管理を行うフルマネージドサービスです。バックエンドのサービス(Lambda関数、EC2、外部HTTPエンドポイントなど)へのリクエストを受け付ける「フロントドア」として機能します。

Webアプリケーションやモバイルアプリケーションを構築する際、クライアントとバックエンドの間にAPI Gatewayを配置することで、認証・認可、リクエストのスロットリング、レスポンスのキャッシュなどを一元管理できます。この記事では、API Gatewayの基本を理解するために、REST APIを作成してリクエストを処理する手順を体験します。

この記事のメリット

  • Amazon API Gatewayの役割と基本的な仕組みを理解できる
  • REST API、リソース、メソッド、統合といったAPI Gatewayの主要概念を把握できる
  • AWSマネジメントコンソールからREST APIを作成し、テストリクエストを実行する手順を習得できる
  • API Gatewayのステージとデプロイの仕組みを理解できる

執筆者とキャラクター紹介

執筆者:土肥(とひ)

株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

土肥

クラウドおさる

クラウドおさる

はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。

クラウドおさる

基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。

クラウドおさる

猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。

技術解説

API Gatewayとは

クラウドおさる

とひさん、Amazon API Gatewayってどんなサービスなんですか?

土肥

ざっくり言うと、APIの「フロントドア」を作ってくれるサービスだよ。クライアントからのHTTPリクエストを受け取って、適切なバックエンドサービスにルーティングしてくれるんだ。

クラウドおさる

フロントドア…。お店の受付みたいな感じですか?

土肥

まさにそのイメージ!お客さん(クライアント)が来たら、受付(API Gateway)が要件を聞いて、担当部署(バックエンド)に取り次いでくれる感じだね。しかもAPI Gatewayが提供するAPIタイプは3種類あるよ。まとめるとこんな感じ。

APIタイプ用途特徴
REST API汎用的なRESTful APIリクエスト検証、キャッシュ、WAF統合、リソースポリシーなどフル機能
HTTP APIシンプルなHTTP APIREST APIより低レイテンシ・低コスト。機能は限定的
WebSocket API双方向通信チャットアプリやリアルタイム通知などに使用
クラウドおさる

3種類もあるんですね!どれを使えばいいんですか?

土肥

一番よく使われるのは「REST API」だよ。機能がフルに揃っていて汎用的なんだ。この記事でもREST APIを使って進めていくよ。

クラウドおさる

なるほど、まずはREST APIを押さえておけばいいんですね!

REST APIの主要コンポーネント

クラウドおさる

REST APIはどういう仕組みで動いているんですか?

土肥

REST APIは大きく3つのコンポーネントで構成されているよ。「リソース」「メソッド」「統合」の3つだね。順番に説明するね。

クラウドおさる

お願いします!

土肥

まず「リソース」は、APIのURLパスに対応する要素だよ。例えば /users とか /users/{userId} のように、APIのエンドポイントを階層構造で定義するんだ。

クラウドおさる

Webサイトのページ構造みたいなものですか?

土肥

そうそう、イメージとしてはそれに近いね。次に「メソッド」は、リソースに対して定義するHTTPメソッド(GET、POST、PUT、DELETEなど)のことだよ。同じ /users というリソースでも、GETなら一覧取得、POSTなら新規作成、みたいに処理を分けられるんだ。

クラウドおさる

リソースが「どこに」で、メソッドが「何をするか」ってことですね!

土肥

その通り!そして3つ目の「統合(Integration)」は、メソッドがリクエストを受けたときに、どのバックエンドにルーティングするかを定義するものだよ。統合タイプにはいくつか種類があるんだ。

統合タイプ説明
Lambda関数AWS Lambda関数を呼び出す
HTTP外部のHTTPエンドポイントにプロキシする
Mockバックエンドを呼び出さず、固定レスポンスを返す
AWSサービスS3やDynamoDBなどのAWSサービスを直接呼び出す
VPCリンクVPC内のプライベートリソースにアクセスする
クラウドおさる

Mockっていうのは何ですか?バックエンドを呼び出さないって不思議です。

土肥

Mockは、バックエンドなしで固定のレスポンスを返してくれる統合タイプだよ。APIの動作確認をしたいけど、まだバックエンドができてないってときに便利なんだ。今回の実践でもこれを使うよ!

REST APIのリクエストフロー(クライアント → API Gateway → メソッド → 統合 → バックエンド)

ステージとデプロイ

クラウドおさる

APIを作ったら、すぐに外部からアクセスできるんですか?

土肥

いい質問だね。実は、APIの定義を変更しただけでは外部からアクセスできないんだ。変更を反映するには「デプロイ」を実行して、特定の「ステージ」に紐付ける必要があるよ。

クラウドおさる

ステージ…ってなんですか?

土肥

ステージは、APIのバージョンやライフサイクルを管理するための仕組みだよ。例えば dev、staging、prod のように環境ごとにステージを分けて運用できるんだ。開発中はdevステージで確認して、本番公開するときはprodステージにデプロイする、みたいな使い方だね。

クラウドおさる

なるほど、環境を分けて管理できるんですね。デプロイするとどうなるんですか?

土肥

デプロイを実行すると、ステージごとに一意の呼び出しURLが生成されるよ。こんな形式になるんだ。

https://{api-id}.execute-api.{region}.amazonaws.com/{stage-name}
クラウドおさる

URLにステージ名が入るんですね!devとprodで別々のURLになるから、安全に切り替えられるってことですね!

土肥

その通り!よく理解できてるね。じゃあ実際にAPIを作ってみよう!

新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方を募集しています。プログラミング未経験から入社して活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

実践

ここでは、API GatewayでREST APIを作成し、Mockタイプの統合を使って固定レスポンスを返すAPIを構築します。Mockタイプを使用することで、バックエンドの準備なしにAPI Gatewayの基本操作を体験できます。

前提条件

  • リージョン: ap-northeast-1(東京)
  • AWSマネジメントコンソールにログイン済み
リソース種別リソース名用途
REST APImy-first-apiハンズオン用のREST API

REST APIの作成

  • 上部の検索バーに API Gateway と入力し、表示された「API Gateway」を選択します
  • API Gatewayのコンソールが表示されます。「APIを作成」をクリックします
  • APIタイプの選択画面が表示されます。「REST API」の「構築」をクリックします
APIタイプの選択画面(REST APIの「構築」ボタン)
  • 以下を設定します
  • API名: my-first-api
  • 説明: ハンズオン用REST API
  • APIエンドポイントタイプ: リージョン
  • 「APIを作成」をクリックします
REST APIの作成画面(API名とエンドポイントタイプの入力)

リソースの作成

  • 左側ナビゲーションの「リソース」を選択します(デフォルトで選択されています)
  • / (ルートリソース)が表示されている状態で、「リソースを作成」をクリックします
  • 以下を設定します
  • リソースパス: /(デフォルト)
  • リソース名: greeting
  • 「リソースを作成」をクリックします

リソースツリーに /greeting が追加されます。

greetingが作成された状態

メソッドの作成

  • /greeting リソースを選択した状態で、「メソッドを作成」をクリックします
  • 以下を設定します
  • メソッドタイプ: GET
  • 統合タイプ: Mock
  • 「メソッドを作成」をクリックします
GETメソッドの作成画面(統合タイプでMockを選択した状態)

統合レスポンスの設定

Mockタイプの統合では、API Gatewayが直接レスポンスを返します。レスポンスの内容を設定します。

  • 作成した GET メソッドの画面で、「統合レスポンス」タブを選択します
  • デフォルトのレスポンス(ステータスコード200)が表示されます。「編集」をクリックします
  • 「マッピングテンプレート」セクションを展開し、以下を設定します
  • Content-Type: application/json(デフォルトで設定済み)
  • テンプレート本文に以下を入力します
{
  "message": "Hello from API Gateway!",
  "timestamp": "$context.requestTimeEpoch"
}
  • 「保存」をクリックします
統合レスポンスのマッピングテンプレート編集画面

APIのテスト

デプロイ前に、API Gatewayのコンソール上でテストを実行できます。

  • GET メソッドの画面で、「テスト」タブを選択します
  • クエリ文字列やヘッダーは空のままで、「テスト」をクリックします
  • レスポンス本文に以下のようなJSONが返却されることを確認します
{
  "message": "Hello from API Gateway!",
  "timestamp": "1234567890"
}
  • ステータスコードが 200 であることを確認します
テスト実行結果(ステータス200とレスポンスボディが表示された状態)

APIのデプロイ

テストで動作を確認できたら、APIをデプロイして外部からアクセスできるようにします。

  • 「APIをデプロイ」をクリックします
  • 以下を設定します
  • ステージ: *新しいステージ*
  • ステージ名: dev
  • 「デプロイ」をクリックします
APIのデプロイ画面(ステージ名の入力)

デプロイが完了すると、ステージの画面に遷移し、画面上部に「呼び出しURL」が表示されます。このURLの末尾に /greeting を追加したURLが、作成したAPIのエンドポイントです。

ステージ画面に表示された呼び出しURL

ブラウザで {呼び出しURL}/greeting にアクセスすると、設定したJSONレスポンスが返却されることを確認できます。

まとめ

  • Amazon API Gatewayは、APIの作成・公開・管理を行うフルマネージドサービスであり、バックエンドへのリクエストを仲介する「フロントドア」として機能する
  • REST APIは「リソース」「メソッド」「統合」の3つのコンポーネントで構成される
  • 統合タイプとしてLambda関数、HTTP、Mock、AWSサービス、VPCリンクが選択でき、Mock統合を使えばバックエンドなしで動作確認が可能
  • APIの変更を外部に公開するには「デプロイ」が必要であり、ステージ(dev、prodなど)ごとに一意のURLが発行される
  • コンソール上の「テスト」機能を使えば、デプロイ前にAPIの動作を検証できる

参照先

キャリア相談
クラウドおさる

独学の先に、AWS の仕事がある ── ジュニアおさるのキャリア相談

CLF には受かったけれど、次に何をすればいいのか分からない。独学で AWS を学ぶジュニアおさるの相談に、株式会社ジェニュイン代表の土肥が答えています。

  • ✓資格はゴールか、CLF の次に何から手を付けるか
  • ✓EC2 の次に作ってみる構成と、IaC・コスト管理
  • ✓実務経験ゼロでも、面接で話せる「これまで」の作り方
新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方を募集しています。プログラミング未経験から入社して活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます
Amazon API Gateway で REST API を作成しリクエストを処理する

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社ジェニュイン(https://genuine-pt.jp)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した株式会社Luxyを引き継ぎ、代表に就任。
その後アガルートグループ内の株式会社ジェニュインと合併。
合併後同社代表に就任。

目次