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エンジニア派遣サービス事業を行っています。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月時点)
最新の投稿
- 2024-07-01営業インタビュー最短で当日にご提案可能。 OPE営業の対応が早い3つの理由
- 2024-07-01営業インタビュー研修見学ツアーが高評価!「お客様のOPEに対する期待を高め、継続に貢献できればと思います。」
- 2024-07-01営業インタビュー信頼関係を構築し、エンジニアの長期就業へ
- 2024-06-30キャリアインフラエンジニアはやめとけって本当?きつい理由を口コミを交えて解説
- 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
- すぐに採用したいが、応募がぜんぜん集まらない
オープンアップITエンジニアをご検討ください!
当社のITエンジニア派遣サービスは
- 派遣スピードが速い!(最短即日)
- 4,500名のエンジニアから貴社にマッチした人材を派遣
- 正社員雇用も可能
こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。