AWS SAM Local で関数をローカルからデプロイする

AWS SAM Local で関数をローカルからデプロイする:


AWS SAM Local とは?

AWS Lambda関数をローカルで実行しテストができるツールです。

S3, Kinesis, DynamoDB, Cloudwatch Scheduled Event, Cloudtrail,API Gatewayなどの関数からの呼び出しにも対応しています。


事前準備


Dokcerのインストール

Macの場合こちら:
Install Docker for Mac | Docker Documentation


AWS CLIのインストール

Macの場合こちら:
macOS で AWS Command Line Interface をインストールする - AWS Command Line Interface


SAM Localのインストール

Macの場合こちら:
$ brew install aws-sam-cli


SAM LocalでHello Worldしてデプロイ


用意するもの

実行したいコード

index.js
exports.handler = (event, context, callback) => { 
    callback(null, "Hello " + event.body); 
} 
AWS SAM テンプレートファイル

template.yaml
AWSTemplateFormatVersion: '2010-09-09' 
Transform: AWS::Serverless-2016-10-31 
Description: AWS Lambda sample. 
Resources: 
  HelloWorld: 
    Type: AWS::Serverless::Function 
    Properties: 
      Handler: index.handler 
      Runtime: nodejs8.10 
sam local実行時に入力するイベントファイル

event.json
{"body": "World"} 


構文チェック

$ sam validate

で行える。

/Users/hoge/sam-local-test/template.yaml is a valid SAM Template 
など、~ is a valid SAM Templateが出ればOK.


実行

$ sam local invoke HelloWorld -e event.json

2019-01-04 13:09:41 Invoking index.handler (nodejs8.10) 
 
Fetching lambci/lambda:nodejs8.10 Docker container image...... 
2019-01-04 13:09:45 Mounting /Users/hoge/sam-local-test as /var/task:ro inside runtime container 
START RequestId: d020b83c-acb1-163c-ecdf-f1f05b72f463 Version: $LATEST 
2019-01-04T04:09:46.490Z    d020b83c-acb1-163c-ecdf-f1f05b72f463    Loading function 
END RequestId: d020b83c-acb1-163c-ecdf-f1f05b72f463 
REPORT RequestId: d020b83c-acb1-163c-ecdf-f1f05b72f463  Duration: 8.69 ms   Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 30 MB 
 
"Hello World" 
実際にHello Worldが出力されました。


デプロイ

templateを置くs3のバケットを作成する。 

注意: この際デプロイするLambdaと同一リージョンにs3のバケットを置くこと。また、s3のバケットは一意でなければならない。
$ aws s3 mb s3://[バケット名] --region [リージョン] --profile [プロファイル]

パッケージングする。
$ sam package --template-file template.yaml --s3-bucket [上で作ったバケット名] --output-template-file package.yaml --profile [プロファイル]

$ sam deploy --template-file package.yaml --stack-name sam-test-helloworld --capabilities CAPABILITY_IAM --profile personal --region [リージョン]

Waiting for changeset to be created.. 
Waiting for stack create/update to complete 
Successfully created/updated stack - sam-test-helloworld 
デプロイ成功。


確認

コンソールから確認します。
スクリーンショット 2019-01-04 13.52.29.png

できているようです。

右上の[テスト]からテストイベントを設定します。



スクリーンショット 2019-01-04 13.38.07.png


上のように設定して[保存]し、テストを実行します。

スクリーンショット 2019-01-04 13.57.00.png

上記のように"Hello world"が出力されていれば成功です。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)