AWS LambdaとAPI Gatewayの連携方法!初心者でもできるREST APIの構築手順
生徒
「AWS Lambdaを使ってサーバーレスでAPIを作れるって聞いたんですが、どうやるんですか?」
先生
「AWS LambdaとAPI Gatewayを連携することで、コードを書くだけでREST APIを構築できますよ。」
生徒
「えっ?サーバー構築とかは一切不要なんですか?」
先生
「その通りです。それでは、AWS LambdaとAPI Gatewayを使ったREST APIの構築方法を順に解説していきましょう。」
1. AWS LambdaとAPI Gatewayとは?
AWS Lambda(ラムダ)とは、サーバーを立てずにコードだけでプログラムを動かせるサーバーレスコンピューティングサービスです。一方、API Gateway(エーピーアイ ゲートウェイ)は、外部からのリクエストを受け付けてLambdaに渡すための入り口(エンドポイント)を作るサービスです。
この2つを連携すれば、インフラ構築不要でREST APIを作成できます。まさにAPI開発の初心者にぴったりの組み合わせといえるでしょう。
2. REST APIとは?LambdaとAPI Gatewayで何ができる?
REST API(レスト エーピーアイ)は、HTTPメソッド(GET, POST, PUT, DELETEなど)を使って、データのやり取りをする仕組みです。AWS LambdaとAPI Gatewayを使えば、サーバー管理不要で、APIエンドポイントを公開できます。
例えば、/userにPOSTすればユーザーを登録、GETでユーザー情報を取得といった処理を、Lambda内のコードだけで実現できます。
3. Lambda関数の作成手順
AWS Lambda関数は、以下の手順で作成します。
- AWSマネジメントコンソールにログイン
- サービス一覧から「Lambda」を選択
- 「関数の作成」→「一から作成」を選ぶ
- 関数名を入力(例:
UserHandler) - ランタイム(Java, Python, Node.jsなど)を選択
- 「関数を作成」ボタンを押す
作成後、LambdaのコードエディタでAPIの処理内容を書きます。
4. Lambda関数のコード例(Java)
Javaで書いたLambda関数の基本構文は次の通りです。
package example;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class HelloWorldHandler implements RequestHandler<String, String> {
@Override
public String handleRequest(String input, Context context) {
return "Hello from Lambda! You sent: " + input;
}
}
5. API Gatewayの設定とLambdaとの統合
次に、API Gatewayでエンドポイントを作成し、Lambda関数と統合します。
- サービス一覧から「API Gateway」を選択
- 「APIを作成」→「REST API(構築済み)」を選択
- API名を入力(例:
UserAPI) - リソース(パス)を作成(例:
/user) - HTTPメソッド(例:POST)を追加
- 統合タイプで「Lambda関数」を選択
- 対象のLambda関数名を入力して保存
最後に「APIのデプロイ」を行うと、URLが発行され、APIが利用可能になります。
6. 実際にREST APIを呼び出す方法
デプロイが完了すると、発行されたURLに対してHTTPリクエストを送信できます。例えば、curlコマンドでPOSTする場合は以下のようになります。
curl -X POST https://xxxxx.execute-api.ap-northeast-1.amazonaws.com/prod/user -d "test"
このリクエストがAPI Gatewayを通じてLambdaに届き、先ほどのJavaコードが実行され、レスポンスとして文字列が返されます。
7. CORS設定も忘れずに
フロントエンドと連携する場合、CORS(クロスオリジンリソース共有)を有効にしておく必要があります。
API Gatewayの「メソッドレスポンス」や「統合レスポンス」で、Access-Control-Allow-Originヘッダーを追加設定しましょう。
8. LambdaとAPI Gateway連携のよくあるエラーと解決法
初心者がつまずきやすいポイントも押さえておきましょう。
- Lambda関数名のタイプミス:関数名が正しくないと統合エラーになります。
- APIのデプロイ忘れ:URLが発行されない原因になります。
- 権限エラー:Lambda実行ロールに
lambda:InvokeFunction権限があるか確認しましょう。
9. REST APIの拡張(パラメータ・パス変数)
API Gatewayではクエリパラメータやパスパラメータも扱えます。例えば/user/{id}のようなURLで、ユーザーIDを取得してLambdaに渡すことも可能です。
Lambda関数側でIDをパースして処理を分岐させれば、より実用的なAPIになります。
10. サーバーレスアーキテクチャとしてのメリット
LambdaとAPI Gatewayを組み合わせたサーバーレス構成には、以下のような利点があります。
- インフラ構築が不要
- 使った分だけの課金(コスト削減)
- 自動スケーリング対応
- セキュリティや認証(IAMやAPIキー)との統合も容易
これらの特徴から、特にスタートアップや個人開発者に人気の高い技術スタックです。
まとめ
AWS LambdaとAPI Gatewayを組み合わせることで、初心者でもシンプルな構成でREST APIを安全かつ効率的に構築できるしくみを体系的に理解できました。サーバーを用意せずにコードだけで処理を実行できるLambdaは、開発負荷を大きく減らし、運用コストも抑えられる点が大きな魅力です。一方で、API Gatewayは外部からのリクエストを受け取り、適切なメソッドやパスに応じてLambdaへ処理を渡す役割を担います。この2つが連携することで、エンドポイントの作成からHTTPメソッドごとの処理、レスポンス生成までを柔軟に扱えるようになります。とくに初心者が理解しておきたいのは、API Gatewayでリソース(パス)やメソッド(GETやPOSTなど)を作成し、そのメソッドとLambda関数を統合するという流れです。この構造を理解することで、REST APIの全体像がつかめるようになります。 また、Lambdaではランタイム(Java, Python, Node.jsなど)を自由に選択でき、自分の得意な言語で処理を書ける点も学習の助けになります。Javaでの基本構文例にあるように、入力を受け取って文字列を返すだけのシンプルな関数でも、API Gatewayと連携すれば立派なREST APIとしてインターネット上で公開できます。さらに、APIのデプロイを行うことで実際のURLが発行され、curlやブラウザ、フロントエンドアプリケーションから呼び出すことも可能になります。この流れを繰り返し確認することで、API構築の基礎が自然と身につきます。 初心者がつまずきやすいポイントとして、デプロイを忘れて変更が反映されない問題、Lambda関数名の指定ミス、IAMロールの権限不足による実行エラーなどがあります。これらはAWSを扱う上で頻繁に起こるため、原因と対処法をセットで覚えておくことが大切です。また、フロントエンドと連携する際にはCORS設定が欠かせず、API Gateway側で適切なレスポンスヘッダーを追加する必要があります。この設定が誤っているとブラウザ側でブロックされてしまうため、学習段階でしっかり理解しておくべき項目です。 さらに、REST APIの拡張として、API Gatewayではパスパラメータやクエリパラメータの受け渡しも可能であり、実用的なWebアプリケーションを構築するうえで欠かせない機能です。Lambdaでは渡されたパラメータをもとに処理内容を分岐できるため、ユーザー情報の取得や更新、削除といった高度な操作へスムーズに発展できます。サーバーレスアーキテクチャは、スケーリングの自動化やコストの最適化というメリットもあり、小規模サービスから本格的な業務システムまで幅広く利用できることが理解できたのではないでしょうか。 以下に、記事内容を整理するための簡単なサンプルコードを示します。
サンプルプログラム(API呼び出しの基本例)
curl -X GET https://example.execute-api.ap-northeast-1.amazonaws.com/prod/user/123
このように、発行されたURLに対して適切なHTTPメソッドでリクエストを送るだけで、APIを通じてLambdaの処理を呼び出すことができます。サーバー構築の手間もなく、自動スケーリングや高い可用性を備えた環境を短時間で構築できる点は、サーバーレスならではの大きな利点といえます。今回学んだ手順や考え方は、実際の開発でもそのまま活かすことができ、API設計やAWSサービスの理解にも深くつながります。LambdaとAPI Gatewayの組み合わせは、現代のWeb開発において非常に重要な技術スタックであり、基礎を確実に身につけることで応用範囲が一気に広がります。
生徒:「Lambdaで書いたコードがAPI経由で簡単に実行できるのはすごく便利ですね。サーバーを立てなくてもいいというのが想像以上でした。」
先生:「その便利さがサーバーレスの魅力です。インフラの管理に時間を使わず、必要な処理に集中できますから開発効率が大きく向上しますよ。」
生徒:「API Gatewayのメソッドやリソースの設定も理解できました。デプロイをしないと反映されないという点も覚えておかないといけませんね。」
先生:「その通りです。デプロイはAPI構築の基本なので、何度も確認しながら慣れていくと良いでしょう。エラーが出たときも、関数名やIAM権限をチェックする癖をつけるとスムーズに解決できます。」
生徒:「パスパラメータでIDを受け取る仕組みも面白かったです。実際のアプリ開発にそのまま応用できそうですね。」
先生:「まさにその通りです。今回の内容を基礎に、より実践的なREST API構築に挑戦してみるといいでしょう。LambdaとAPI Gatewayは可能性が大きいので、学べば学ぶほど便利さを実感できますよ。」