IT人材をお探しの方は、まずはお電話ください。担当営業がすぐにご要望にマッチした人材をご提案いたします。
tel:03-6409-6766 お急ぎの方はお電話ください

ブログTOP > IT・技術関連 > AWS SAMとは?SAMのメリットやSAMを使ったLambda関数の起動方法を紹介

AWS SAMとは?SAMのメリットやSAMを使ったLambda関数の起動方法を紹介

IT・技術関連 更新日:2024.09.05
エンジニア採用
AWS SAMとは?SAMのメリットやSAMを使ったLambda関数の起動方法を紹介

AWS SAMとは?


AWS SAM(以下SAM)は「Lambdaの関数を開発するための便利ツール」と考えておけば良いです。

SAMは正式名称をServerless Application Modelと言い(以下SAM)、”サーバーレスアプリケーション構築用のオープンソースフレームワーク”が公式の定義です。

AWSでサーバーレスのマネージドサービスと言えばAWS Lambdaを思い浮かべる方が多いと思いますが、まさにそのLambdaの関数をローカルで開発するために最適なツールです。

SAMのメリットは?

Lambda関数実装時の開発の手間を大幅に削減することができます。

Lambdaの関数を実際にAWS上でデプロイしなくても、ローカルの開発マシンでLambdaの動きを再現することが可能です。Lambdaに与えられるパラメータもjson形式で定義しておくことができるので、開発時にわざわざLambdaをデプロイして、テスト実行する、という手間を省くことができるのです。

どんな時にSAMを使ったらよいのか?

Lambdaを実装する場合には基本的には利用することが推奨されています。

多くの開発者がLambdaの関数を実装する場合はSAMを使って雛形を作ります。

非常に便利なフレームワークなので、どんなに簡易なLambda関数を実装する場合でもSAMを利用することが推奨されています。また、Lambdaが対応している言語はSAMでも対応しています。どの言語で実装する場合もSAMの利用することができます。

SAMを使ったLambda関数の起動方法

ここからはSAMを使ったLambda関数の起動方法を紹介します。
以下4つの手順になります。

・事前準備
・SAMのサンプルアプリケーションの作成
・イベントの作成
・フォルダ構成の説明

SAMを使ったLambda関数の起動方法について興味がある方は是非ご覧ください。

事前準備

1. AWSアカウントの作成
AWSのアカウントを作成して、AWSCloudFormationFullAccess, IAMFullAccess, AWSLambdaFullAccess, AmazonAPIGatewayAdministratorのロールが付与されたユーザーを作成してください。

2. 認証情報をローカルのコンフィグファイルに記載
AWSのIAMのコンソールから取得したAPIキーとシークレットを以下のファイルに転記します。(以下のxxxxxxの部分に取得した値を転記します。)

ーーーーーーーーーーーーーーーー
$ vi ~/.aws/credentials

[default]
aws_access_key_id = xxxxxxxxx
aws_secret_access_key = xxxxxxxxx
ーーーーーーーーーーーーーーーー

SAMを使ってLambdaを実行する場合は上記の認証情報を使います。

3. dockerのインストール
SAMはコンテナ上で動作しますのでdockerのインストールが必要です。
以下のサイトからインストールファイルを取得して、インストールしてください。

https://docs.docker.com/docker-for-mac/install/

4. AWS SAM CLI のインストール
コマンドでSAMを利用できるようにインストールが必要です。
以下のコマンドインストールしてください。

ーーーーーーーーーーーーーーーー
$ brew tap aws/tap
$ brew install aws-sam-cli
ーーーーーーーーーーーーーーーー

以下のコマンドを打ってバージョンが表示されればインストールが完了したことが確認できます。
ーーーーーーーーーーーーーーーー
$ sam –version
ーーーーーーーーーーーーーーーー

5. Go言語のインストール
本サンプルではGoを採用しますので、以下のコマンドでインストールしてください。

ーーーーーーーーーーーーーーーー
$ brew install go
ーーーーーーーーーーーーーーーー

以下のコマンドを実行してバージョンが表示されればインストールが完了したことが確認できます。

ーーーーーーーーーーーーーーーー
$ go version
ーーーーーーーーーーーーーーーー

SAMのサンプルアプリケーションの作成

上記の事前準備が完了したら、SAMのサンプルアプリケーションを作成します。

以下のコマンドを実行してください。

以下の”sam-sample-application”は作成するアプリケーション名ですので、自由に変更していただいて構いません。本記事では”sam-sample-application”という名称で作成されたものとして解説を進めます。

ーーーーーーーーーーーーーーーー
$ sam init –runtime go1.x –name sam-sample-application
ーーーーーーーーーーーーーーーー

その後、テンプレートに関する質問が表示されますが、1と入力してください。

ーーーーーーーーーーーーーーーー
Which template source would you like to use?
1 – AWS Quick Start Templates
2 – Custom Template Location
Choice: 1
ーーーーーーーーーーーーーーーー

その後、また質問が表示されますが、1を選択します。

ーーーーーーーーーーーーーーーー
AWS quick start application templates:
1 – Hello World Example
2 – Step Functions Sample App (Stock Trader)
Template selection: 1
ーーーーーーーーーーーーーーーー

作業していたディレクトリに”sam-sample-application”というフォルダが作成されていることが確認できるはずです。

雛形の作成は完了です。

イベントの作成

Lambdaはなんらかのイベント(Cloud Watch Events, S3 Event等)をトリガーにして起動します。その際に与えられるパラメータを定義できます。これは開発中の動作確認の際に使用されるものです。

以下のコマンドを実行してください。

ーーーーーーーーーーーーーーーー
$ cd sam-sample-application
$ sam local generate-event cloudwatch logs > event.json
ーーーーーーーーーーーーーーーー

今回はCloud Watch Eventsによって発生するパラメータをevent.jsonというファイルにまとめました。

もちろんCloud Watch Events以外をトリガーすることもできます。以下のコマンドでどのようなイベントがシミュレーションできるかが確認できます。

ーーーーーーーーーーーーーーーー
$ sam local generate-event –help
ーーーーーーーーーーーーーーーー

フォルダ構成の説明

作成された雛形アプリは以下のような構成になっているかと思います。

sam-sample-application
├── event.json
├── hello-world
│ ├── go.mod
│ ├── main.go
│ └── main_test.go
├── Makefile
├── README.md
└── template.yaml

event.json・・・Lambda起動時に与えられるパラメータが格納されています。
main.go・・・実際のイベントを処理するハンドラーです。
Makefile・・・ビルド用のファイルです。

SAMを使ってローカルでLambdaを起動する


以下のコマンドを実行して、ビルドを行ってください。
このビルドはあくまでローカルで実行するためのファイルを作成するためのビルドです。

ーーーーーーーーーーーーーーーー
$ make build
ーーーーーーーーーーーーーーーー

その後、以下のコマンドを実行するとLambdaが起動します。

ーーーーーーーーーーーーーーーー
$ sam local invoke HelloWorldFunction –event event.json
ーーーーーーーーーーーーーーーー

以下のような文言が表示されるかと思います。
statusCodeが200となっていれば正しく実行できています。

{“statusCode”:200,”headers”:null,”multiValueHeaders”:null,”body”:”Hello, 100.100.10.10\n”}

これでサンプルアプリケーションの実行は完了です。

まとめ

今回は、Lambda関数の開発を効率化するSAMの紹介を行いました。
また、実際にSAMを使ってローカルでLambdaを起動するところまでを解説を行いました。

作成されたサンプルアプリケーションでは、簡潔な内容を表示するだけのシンプルなアプリですので、是非ハンドラーであるman.goを修正して、ご自身のオリジナルのLambda関数を実装してみてください。

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニアAWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。

・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
ITエンジニアの派遣を利用したい企業様へ
ITエンジニアを派遣で採用したい企業様へ
  • 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
  • すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!

当社のITエンジニア派遣サービスは

  • 派遣スピードが速い!(最短即日)
  • 4,500名のエンジニアから貴社にマッチした人材を派遣
  • 正社員雇用も可能

こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。

無料相談のお申し込みはこちら
IT・技術関連の記事一覧へ

カテゴリから記事を探す

すべての記事一覧へ