【AWS】AWS SAM CLIでLambda×API GatewayのサーバーレスAPIを作る方法

いずみこんな悩みを解決できる記事を書きました!
僕は現役フリーランスエンジニア(歴10年)で、資格は13個保有しています。
「AWS SAM CLIを使ってLambdaとAPI GatewayのサーバーレスAPIを作る方法を知りたい」とお考えではありませんか?
AWSコンソールをポチポチ操作してLambdaやAPI Gatewayを作るのは、正直かなり手間がかかります。
AWS SAM CLIを使えば、テンプレート1つでLambda・API Gatewayをまとめて構築し、ローカルでの動作確認からデプロイまで一気に行うことが可能です。



SAMを使うとCloudFormationのテンプレートを毎回一から書かなくていいので、サーバーレス構築がグッと楽になります。
ということで、本記事ではAWS SAM CLIでLambdaとAPI GatewayのサーバーレスAPIを作る方法を解説します。



すぐ読み終わるので、ぜひ最後まで読んでくださいませ。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
【AWS】AWS SAM CLIでLambda×API GatewayのサーバーレスAPIを作る方法
早速ですが、AWS SAM CLIを使ってLambdaとAPI Gatewayのサーバーレス構成を作っていきます。
今回はPython 3.13ランタイムを使います。
事前準備(AWS CLI・SAM CLIのインストール)
まずは、AWS CLIとSAM CLIをインストールし、認証情報を設定します。
IAMユーザーのアクセスキーを発行し、aws configure で認証情報を設定します。
aws configurepipまたはHomebrewでインストールできます。
pip install aws-sam-cli
sam --versionsam initでプロジェクトを作成する
sam init を実行すると、対話形式でテンプレートを選ぶだけでプロジェクトの雛形を作成できます。
sam init
Which template source would you like to use?
1 - AWS Quick Start Templates
Choice: 1
Choose an AWS Quick Start application template
1 - Hello World Example
Template: 1
Use the most popular runtime and package type? (Python and zip) [y/N]: y
Would you like to enable X-Ray tracing on the function(s) in your application? [y/N]: n
Project name [sam-app]: sam-lambda-api作成されるディレクトリ構成は以下のようになります。
sam-lambda-api/
├── hello_world/
│ ├── app.py
│ └── requirements.txt
├── events/
│ └── event.json
└── template.yaml


対話形式で聞かれる項目は基本Enterでも進められますが、ランタイムだけはPythonを選ぶよう注意してください。
template.yamlでAPIエンドポイントを定義する
template.yaml の Events に Api を書くだけで、Lambda関数とAPI Gatewayのエンドポイントが同時に定義できます。
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: sam-lambda-api
Globals:
Function:
Timeout: 10
Runtime: python3.13
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: hello_world/
Handler: app.lambda_handler
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello
Method: get
Outputs:
HelloWorldApi:
Description: API Gateway endpoint URL
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/hello/"Lambda関数本体(app.py)はこのように書きます。
import json
def lambda_handler(event, context):
return {
"statusCode": 200,
"body": json.dumps({"message": "Hello from Lambda!"})
}


Events配下にApiを書くだけでAPI Gatewayまで自動生成してくれるのが地味に便利なポイントです。
ローカルでAPIをテストする
デプロイ前に、Dockerを使ってローカルでAPIの動作確認をします。
sam build
sam local start-apicurl http://127.0.0.1:3000/hello


ローカルでcurlが通ったら、あとは本番環境にデプロイするだけです。
AWSへデプロイする
動作確認ができたら、sam deploy --guided で本番環境にデプロイします。
sam deploy --guidedスタック名やリージョンなどを対話形式で入力していくと、CloudFormation経由でLambdaとAPI Gatewayが自動構築されます。
デプロイ完了後に表示されるAPI GatewayのURLにアクセスすれば、作成したAPIを呼び出せます。



初回のsam deploy --guidedは設定をsamconfig.tomlに保存してくれるので、2回目以降はsam deployだけでOKです。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
【厳選】フリーランスエンジニアにおすすめなエージェント3選


フリーランスエンジニアになるにはエージェントから案件をもらう必要があります。
僕が実際に利用しているおすすめエージェントを紹介しますね。



エージェントは必ず複数登録してください。
担当者によっては「全然案件紹介してくれない…」みたいなこともあるので…
僕は実際に5つのエージェントを使い回していますよ。
フリーランスを始めるなら「レバテックフリーランス


」
- 業界最大級の案件数。
- 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
- 案件参画中のフォローの充実。
※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。
レバテックフリーランス
![]()
![]()
とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!



僕もはじめてフリーランスの案件を貰ったのはレバテックフリーランス
![]()
![]()
保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。
手厚い保障を重視したいなら「Midworks


」
- 手厚い保障で正社員並みの安心感。
- 還元率60%超え&単価公開でクリアな契約。
- 給与保障制度(審査あり)。
Midworks
![]()
![]()
フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。



僕も何度か案件を紹介してもらいました。
自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。
週2〜3日の案件探しなら「ITプロパートナーズ


」
- IT案件に特化したフリーランスエージェント。
- 週2〜3日の案件が豊富。
- リモート案件が多く、直エンドなので単価も高い。
※詳細は「【週2・3案件】ITプロパートナーズとは?メリットや利用手順を解説!」を参照。
ITプロパートナーズ
![]()
![]()
週2〜3日から参画できる案件が豊富なので、起業したい人にもおすすめです。



週2〜3日の案件はある程度スキルがないと紹介してもらえない印象です。
とはいえ、週5の案件ももちろんありますし、僕が利用した時は迅速・丁寧に対応していただきました!
よくある質問
sam local start-apiがエラーになる場合はどうすればいいですか?
まずDockerが起動しているか確認してください。
SAM CLIはローカル実行にDockerコンテナを使うため、Dockerが動いていないと起動できません。
それでも解決しない場合は、sam buildを再実行してから起動する、またはポートが競合していないか--portオプションで変更してみてください。
AWSへのデプロイでどれくらい料金がかかりますか?
LambdaとAPI Gatewayにはどちらも無料利用枠があり、個人の学習用途で少し動かす程度であれば、月数十円〜数百円程度に収まることがほとんどです。
ただし、CloudWatch Logsへのログ保存など細かい部分でも課金対象になるため、検証が終わったらスタックごと削除しておくと安心です。
Python以外のランタイムでも同じ手順で使えますか?
はい。
Node.jsやJava、Goなど他のランタイムでも、基本的な流れ(sam init → template.yaml編集 → sam local start-api → sam deploy)は同じです。
変わるのはRuntimeの指定とハンドラーの書き方くらいなので、この記事の手順をそのまま応用できます。
まとめ
今回は、AWS SAM CLIでLambdaとAPI GatewayのサーバーレスAPIを作る方法について解説しました。
以下が本記事のまとめになります。



最後までお読みいただき、ありがとうございました!
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
- クソおすすめ本



海外のエンジニアがどういった思考で働いているかが理解できます。
海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。







