5
5

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 SAM:Lambda × API Gateway で構築する Hello World チュートリアルをやってみた

Last updated at Posted at 2025-06-06

はじめに

サーバーレスアプリケーションの開発を簡単にしてくれる AWS SAM(Serverless Application Model)。

この記事では、Mac 上(Appleシリコン)で AWS SAM CLI をインストールし、Hello World アプリケーションを AWS にデプロイするまでの流れをまとめます。

内容に不備などがございましたら、お手数ですが優しくご指摘いただけますと幸いです。

AWS SAM(Serverless Application Model)とは?

AWS Serverless Application Model (AWS SAM) は、Infrastructure as Code (IaC) を使用してサーバーレスアプリケーションを構築するためのオープンソースフレームワークです。

引用元:https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/what-is-sam.html

CloudFormation をベースにしており、Lambda 関数、API Gateway、DynamoDB、S3 などのリソースを簡単な構文で定義できるのが特徴です!

sam コマンドを使うことで、ローカル開発・シミュレーション・クラウドへのデプロイを一貫して行うことができます(とても便利で感動しました!)。

参考文献

書こうと思ったきっかけ

以前からSAMにめちゃくちゃ興味があり、実際に手を動かして検証してみたいと思っていました。サーバーレス構成やデプロイフローの理解を深めたかったこともあり、簡単な検証の記録として残していきます...!

こんな感じの検証内容です

Screenshot 2025-06-07 at 7.41.42.png

引用元:https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-getting-started-hello-world.html

■ 前提条件

以下のツールがインストール済みであること:

  • AWS CLI(aws configure 設定済み)

AWS CLIの設定がまだの方は、参考にしてみてください!

  • Docker(docker -v)
  • AWS SAM CLI(sam --version)

■ AWS SAM CLI のインストール手順(Apple シリコンの場合)

参考手順

公式から .pkg をダウンロード

  • aws-sam-cli-macos-arm64.pkg

ダウンロードできました!

Screenshot 2025-06-06 at 21.42.14.png

以下のコマンドでインストール

sudo installer -pkg ~/Downloads/aws-sam-cli-macos-arm64.pkg -target /

インストールできました!

Screenshot 2025-06-06 at 21.43.41.png

インストール確認

which sam
# /usr/local/bin/sam と出れば OK

sam --version
# SAM CLI, x.xx.x

こんな感じです...!

Screenshot 2025-06-06 at 21.44.24.png

実際にやってみた

ここからは、以下のチュートリアルを参考にしながら進めていきます!

参考文献

■ ステップ 1:サンプルの Hello World アプリケーションを初期化

sam init

プロンプトへの回答例:

Which template source would you like to use?
    → 1 (AWS Quick Start Templates)

Choose an AWS Quick Start application template
    → 1 (Hello World Example)

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]:
    → ENTER

Would you like to enable monitoring using CloudWatch Application Insights? [y/N]:
    → ENTER

Would you like to set Structured Logging in JSON format on your Lambda functions?  [y/N]:
    → ENTER

Project name [sam-app]:
    → ENTER(もしくは任意の名前)

対話形式で簡単にできました!

Screenshot 2025-06-06 at 21.46.37.png

作成後:

cd sam-app
tree  # ← なければ `brew install tree`

■ ステップ 2:アプリケーションを構築

sam build

AWS SAM ビルドエラー発生

AWS SAM CLI は template.yaml に記述された Runtime: python3.13 に従ってビルドしようとしたが、ローカルに Python 3.13 がインストールされておらず PATH にも存在しなかったため、バイナリ検証が失敗しました。

実際のエラー画面

Build Failed
Error: PythonPipBuilder:Validation - Binary validation failed for python, searched for python in following locations  :
['/usr/local/bin/python', '/Library/Frameworks/Python.framework/Versions/3.12/bin/python3', '/usr/local/bin/python3', '/usr/bin/python3']
which did not satisfy constraints for runtime: python3.13. Do you have python for runtime: python3.13 on your PATH?

私の環境での修正方法

template.yaml のランタイム変更

template.yaml:
Runtime: python3.13  →  ご自身のバージョンに変更

再度、アプリケーションを構築

sam build

問題なくビルドされました!

Screenshot 2025-06-06 at 21.55.23.png

■ ステップ 3:アプリケーションを AWS にデプロイ

sam deploy --guided

プロンプトへの回答例:

Stack Name [sam-app]: ENTER
AWS Region [us-west-2]: ap-northeast-1(または任意)
Confirm changes before deploy [Y/n]: n
Allow SAM CLI IAM role creation [Y/n]: ENTER
Disable rollback [y/N]: ENTER
HelloWorldFunction may not have authorization defined, Is this okay? [y/N]: y
Save arguments to configuration file [Y/n]: ENTER
SAM configuration file [samconfig.toml]: ENTER
SAM configuration environment [default]: ENTER

作成後の画面

Screenshot 2025-06-06 at 22.01.42.png

マネコン上でも問題なく作成されていることが確認できました!

Screenshot 2025-06-06 at 22.11.19.png

■ ステップ 4:デプロイ済みアプリケーションの呼び出し

出力の Outputs セクションにある HelloWorldApi を確認。

例:

curl https://xxx.ap-northeast-1.amazonaws.com/Prod/hello/
# 出力:{"message": "hello world"}

ブラウザからも問題なくアクセスできました!

Screenshot 2025-06-06 at 22.03.32.png

■ ステップ 5(任意):ローカルでテスト

sam local invoke HelloWorldFunction
sam local start-api
# → http://127.0.0.1:3000/hello にアクセス

ローカルでも問題なくアクセスできることが確認できました!

Screenshot 2025-06-06 at 22.06.44.png

■ ステップ 6:アプリケーションを削除

aws cloudformation delete-stack --stack-name sam-app

こちらもいい感じに削除されました!

Screenshot 2025-06-06 at 22.13.11.png

まとめ

ここまで読んでいただき、ありがとうございました!

AWS SAM CLI を使えば、ローカルでの開発・テスト・クラウドへのデプロイまでがスムーズに行えました。

ビルドや sam local start-api による API シミュレーションも便利で、Lambda+API Gateway の構成を簡単に試せる点が非常に魅力的でした...!

今後は API Gateway に認証を追加したり、DynamoDB との連携も試してみたいと思います!!

5
5
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
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?