概要
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 認定試験で必要な知識をハンズオンとともに解説していくブログです。これからこのブログを案内する2人を紹介します。

ルクシーちゃん
クラウド資格に挑戦中の好奇心旺盛なナビゲーター。初学者目線で「これってなんだろう?」と素朴な疑問を投げかけ、知識を引き出していく役どころ。難しい内容も、ルクシーちゃんと一緒なら一歩ずつ理解できると思います!
土肥(とひ)
株式会社Luxyの代表であり同社の元エンジニア。これまでオンプレとAWS環境のインフラを担当。AWS認定資格の学習で得た知識をハンズオンとともに解説するのが得意。直近では新人の教育なども行っており、これから技術を学ぼうという方が納得できるように解説できることに喜びを感じているとのこと。

技術解説
API Gatewayとは
Luxyちゃんとひさん、Amazon API Gatewayってどんなサービスなんですか?
ざっくり言うと、APIの「フロントドア」を作ってくれるサービスだよ。クライアントからのHTTPリクエストを受け取って、適切なバックエンドサービスにルーティングしてくれるんだ。



フロントドア…。お店の受付みたいな感じですか?
まさにそのイメージ!お客さん(クライアント)が来たら、受付(API Gateway)が要件を聞いて、担当部署(バックエンド)に取り次いでくれる感じだね。しかもAPI Gatewayが提供するAPIタイプは3種類あるよ。まとめるとこんな感じ。
| APIタイプ | 用途 | 特徴 |
|---|---|---|
| REST API | 汎用的なRESTful API | リクエスト検証、キャッシュ、WAF統合、リソースポリシーなどフル機能 |
| HTTP API | シンプルなHTTP API | REST 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の動作確認をしたいけど、まだバックエンドができてないってときに便利なんだ。今回の実践でもこれを使うよ!


ステージとデプロイ



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



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



なるほど、環境を分けて管理できるんですね。デプロイするとどうなるんですか?
デプロイを実行すると、ステージごとに一意の呼び出しURLが生成されるよ。こんな形式になるんだ。
https://{api-id}.execute-api.{region}.amazonaws.com/{stage-name}



URLにステージ名が入るんですね!devとprodで別々のURLになるから、安全に切り替えられるってことですね!
その通り!よく理解できてるね。じゃあ実際にAPIを作ってみよう!
実践
ここでは、API GatewayでREST APIを作成し、Mockタイプの統合を使って固定レスポンスを返すAPIを構築します。Mockタイプを使用することで、バックエンドの準備なしにAPI Gatewayの基本操作を体験できます。
前提条件
- リージョン:
ap-northeast-1(東京) - AWSマネジメントコンソールにログイン済み
| リソース種別 | リソース名 | 用途 |
|---|---|---|
| REST API | my-first-api | ハンズオン用のREST API |
REST APIの作成
- 上部の検索バーに
API Gatewayと入力し、表示された「API Gateway」を選択します - API Gatewayのコンソールが表示されます。「APIを作成」をクリックします
- APIタイプの選択画面が表示されます。「REST API」の「構築」をクリックします


- 以下を設定します
- API名:
my-first-api - 説明:
ハンズオン用REST API - APIエンドポイントタイプ:
リージョン - 「APIを作成」をクリックします


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


メソッドの作成
/greetingリソースを選択した状態で、「メソッドを作成」をクリックします- 以下を設定します
- メソッドタイプ:
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であることを確認します


APIのデプロイ
テストで動作を確認できたら、APIをデプロイして外部からアクセスできるようにします。
- 「APIをデプロイ」をクリックします
- 以下を設定します
- ステージ:
*新しいステージ* - ステージ名:
dev - 「デプロイ」をクリックします


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


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









