AWSを触ってみる【API Gateway】
はじめに
AWSが提供する学習プラットフォームAWS Skill Builderの学習プランが11/2まで無料で急ぎでやってみたので学んだことをまとめます。
実際にAWSコンソールを開きながら進められるのでおすすめです。
※自分はAWSを業務で若干しか触ったことないレベルなのでほぼ初心者です。
API Gatewayとは
Amazon API Gateway は AWS が提供するマネージド型サービスで、API の作成、デプロイ、メンテナンスを容易にします。
クライアントからのAPIリクエストを受け付け、バックエンドの各サービスに振り分けるための単一の入口となるシステムです。
API Gatewayの特徴
LambdaとAPI Gatewayを組み合わせることでインフラを一切持たず、コードだけで API を公開できます。
- サーバーの管理が不要(インフラ不要、コードだけ)
- 従量課金(使った分だけ支払い)
- スケールが自動(アクセスが急増しても耐える)
API Gatewayの用途
API Gateway は Lambda と組み合わせて使われることが非常に多いです。
- サーバーレス API の構築
例:API Gateway → Lambda → DynamoDB のような構成で API を作れる。 - 既存のバックエンドにアクセスするための API フロント
例:API Gateway を経由して EC2 / ECS / on-premise(VPC 内)にある API を呼び出す。 - 認証付きエンドポイントを作る
例:Cognito / IAM ロールでアクセス制御できる。
サーバーレスなAPIを構築する
API Gateway と Lambda を使って、ランダムな質問と回答を返す FAQ API を作成します。
API の流れは以下のとおりです
- ユーザーが API Gateway に HTTP リクエスト(GET)を送る
- API Gateway がリクエストを Lambda 関数に渡す
- Lambda が質問と回答の JSON を作り、API Gateway に返す
- API Gateway がユーザーにレスポンスを返す
→ サーバーの管理不要で API を公開できる のがポイントです。
Lambda関数を作成する
-
マネジメントコンソール「Lambda」>「関数の作成」

-
「一から作成」>関数名入力
-
ランタイム「Node.js 22.x」
-
デフォルトの実行ロールの変更>既存のロースを使用する>既存のロール「lambda-basic-execution」を選択

-
「関数の作成」
-
「コード」タブ>index.jsを書き換える
index.js
var json = {
"service": "lambda",
"reference": "https://aws.amazon.com/lambda/faqs/",
"questions": [
{
"q": "AWS Lambdaとは?",
"a": "サーバーを用意しなくてもコードを実行できるサービスです。コードが実行された時間だけ料金がかかります。"
},
{
"q": "AWS Lambdaはどんなイベントで動く?",
"a": "S3にファイルがアップロードされたときや、DynamoDBのデータが更新されたときなど、いろいろなイベントをきっかけに自動で動きます。スケジュール実行もできます。"
},
{
"q": "LambdaとEC2はどう使い分ける?",
"a": "Lambdaは「イベントに反応してコードを実行したいとき」に使います。EC2は「常に動き続けるサーバーを使いたいとき」向けです。Lambdaはサーバー管理が不要で、自動でスケールします。"
}
]
}
export const handler = function(event, context) {
var rand = Math.floor(Math.random() * json.questions.length);
console.log("Quote selected: ", rand);
var response = {
body: JSON.stringify(json.questions[rand])
};
console.log(response);
context.succeed(response);
};
- 「Deploy」
API Gatewayエンドポイントを作成する
- 「設定」タブ>「編集」
- 説明入力>「保存」
- 「トリガーの追加」

API Gateway に対して呼び出しが行われるたびに Lambda 関数をトリガーします。 - トリガーの設定「API Gateway」>インテント「新規APIを作成」>APIタイプ「REST API」
Lambda 関数を作成し、設定できました。また、Lambda 関数のトリガーに使用する新しい API Gateway REST エンドポイントを作成しました。
Lambda関数をテストする
エンドポイントにアクセスする方法
- APIエンドポイントにリクエストする
エンドポイントの確認の仕方
「設定」タブ>トリガー>詳細

- URLからアクセスするとレスポンスが返ってくる
テストを実行する方法
-
「テスト」タブ>イベント名追加>イベントJSON追加

-
「テスト」実行
成功

-
「モニタリング」タブ>「CloudWatchログを表示」>ログストリーム
ログが確認できる

まとめ
理解が深まってきたら追記します。
Discussion