0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【図解】AWS API Gateway+LambdaでサーバレスAPIを作ってみた

0
Last updated at Posted at 2025-11-09

AWS API Gateway + AWS Lambdaで、サーバレスAPIを作ってみます。月並みな話題なのですが、いざ実際に作業すると、AWSの画面は機能改善などでいつのまにか変更されていることも多く、画面操作で戸惑ってしまうことも多いと思います。現時点での画面説明としてそれなりに意義があると思い、自分の備忘録も兼ねて、初心者向けにステップ毎に図解してみます。

AWSのドキュメント

前提

AWSのアカウントは既に持っていて、ログインしてコンソールマネージャを表示したところからを想定します。言語設定は日本語にしている前提です。(画面は2025年10月末時点)

(ステップ1) AWS Lambda

1.1 AWS Lambda サービスへ

まずは、画面の左上に検索ボックスがありますので、
image.png
そこへ、「lambda」とタイプすると、
image.png
サービスにLambdaが表示されますので、それをクリックします。
この検索ボックスにサービス名を入力して、一覧からサービスを選択して遷移するのがAWSでの操作の基本ですね。サービス名は正確に「Lambda」などと入力する必要はなく、適当に小文字で数文字タイプすれば、(うまく!)適切なサービス名が表示されます。
※この英文字を数文字タイプして一覧が表示されて選択というのは、Windows系でも見られるインターフェースです。日本語ユーザにはイマイチ使いにくいんですが、英語圏の方にとっては使いやすいようです。

すると、
image.png
のようなウェルカム画面が表示されると思います。ここで、「Create a function」ボタンをクリックしても良いのですが、お勧めは左上のボタン(ハンバーガーメニューと呼ぶらしい)です。
image.png
これをクリックすると、
image.png
サイドバーメニューが表示されて、ここから操作可能です。結局、このメニューを頻繁に操作することになるので、これに馴染むのが早いと思います。

1.2 関数の作成画面へ

次にサイドバーメニューの「関数」をクリックすると、
image.png
このような画面になります。すでに関数が存在していると、ここに関数一覧が表示されます。
右上の「関数を作成」というオレンジ色のボタンをクリックすると、
image.png
以下のような関数の作成画面となります。
image.png

1.3 関数を作成

一番最初のオプションは「一から作成」を選ぶのが一番簡単です。この時の必須入力は、関数名とランタイムです。関数名は適当な英語名称であれば、良いのですが、一応、リージョン内で一意にする必要があるようです。いろいろ試したところ一意でなくても良さそうな感じでしたが、適当に入力してダメな時は警告してくれるようです。とりあえず、ドキュメントのチュートリアルに従い、「my-funciton」とします。ランタイムは関数の言語に対応するものを選択します。今回はPythonを選択します。
関数名とランタイムを入力して、次に右下の「関数の作成」ボタンをクリックすれば、
image.png
途中でいろいろ聞いてくるかもしれませんが、Acceptなどをクリックしていけば
image.png
のようにコードが自動生成された画面になります。このコードはこのまま修正しなくても動くものです。

1.4 関数をテスト

コードが生成されただけの状態では、まだ実行できません。Deployして実行可能状態にする必要があります。このためには、以下のDeployボタンをクリックしてください。

うまくdeployできると、画面の上部に
image.png
のように表示されます。

次に、上部のタブで「テスト」をクリックして、オレンジ色の「テスト」ボタンをクリックすると、
image.png
関数が実行されて、以下のように成功と表示されるはずです。
image.png

1.5 実行結果のログ

実行結果が見たいなら、「ログ」ボタンをクリックすると、

ブラウザの別のタブで、Cloud Watchサービスが開きます。
image.png
このCloud Watchの下の方に、ログストリームというタブ部分があり、そこに実行結果のログが一覧表示されています。
image.png
この一覧から(実行時間などから判断して)実行ログをクリックすれば、実行結果を見ることができます。コードにprint文などを入れておけば、そのprint出力はここで見ることができます。

(ステップ2) API Gateway

2.1 API Gateway サービスへ

画面の左上の検索ボックスに、「api」とタイプして、一覧中のAPI Gatewayを選択します。
image.png
これにより、以下のようなAPI Gatewayサービス画面となります。
image.png

2.2 APIを作成

右上のオレンジ色の「APIを作成」ボタンをクリックすると、
  
API作成画面になります。
最初はAPIタイプの選択です。以下は適当に画面を抜粋しています。
image.png
ここでは一番シンプルなHTTP APIを選択して、右端のオレンジ色の「構築」ボタンをクリックします。
image.png

APIを設定のステップ1では、API名(ここではmyapi)を入力して、
image.png
次に、右下のオレンジ色の「次へ」ボタンをクリックします。
image.png

後は、「次へ」
image.png
「次へ」
image.png
「作成」
image.png
としていくと、APIが作成されます。

次に、API GatewayサービスのサイドバーメニューのAPIをクリックすると、
image.png
のようにAPI一覧に作成したAPIが表示されていると思います。
この作成したAPIをクリックすると、
image.png
とルート指定画面になります。もしもルート指定画面でなければ、サイドバーメニューからRouteをクリックしてください。

次に、作成ボタンをクリックすれば
  
ルートとメソッド指定画面になりますので、
image.png
GET、ルート名(ここではmyroute)を入力して、オレンジ色の「作成」ボタンをクリックしてください。
image.png

これによりルートが作成されますので、GET項目をクリックすると、ルートの詳細画面になります。
image.png
ここで、「統合をアタッチする」ボタンをクリックします。
image.png

これにより、統合の詳細画面になりますので、「統合をアタッチ」ボタンをクリックします。
image.png
これにより、統合の作成画面となりますので、統合タイプとしてLambda関数、Lambda関数として作成済のmy-funcionを選択して、
image.png
最後に、オレンジ色の「作成」ボタンをクリックします。
image.png
これで、API作成完了です。

(ステップ3) テスト

3.1 AWS内でテスト

左サイドバーメニューで、API:~を選択すると、myapiの情報を表示しますので、
そこのURLを呼び出すリンクをクリックします。
image.png
ブラウザの別タブが開きますが、たぶん、{"message":"Not Found"}というエラーメッセージが表示されると思います。URLの末尾に、ルート名(ここでは/myroute) を追加すると、
(例 https://~.execute-api.ap-northeast-1.amazonaws.com/myroute)
"Hello from Lambda!"と表示されて、APIが正常に動作していることが確認できます。

3.1 AWS外部からテスト

curlコマンドを使って、
curl https://~.execute-api.ap-northeast-1.amazonaws.com/myroute
とすれば、"Hello from Lambda!"と表示されて、AWS外部からでもAPIが動くことが確認できます。

まとめ

Lambdaで関数作成 => AWS GatewayでAPI作成 => Lambdaと統合 => テスト
という流れで、ほぼAWSのドキュメント通りです。
ただし、ドキュメントだと、AWS GatewayのAPI作成のウィザードの中で統合を作成していますが、ドキュメント通りの操作だとルートがうまく作れませんでしたので、そこは変更しています。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?