AWS SAM Local で関数をローカルからデプロイする
AWS SAM Local で関数をローカルからデプロイする:
AWS Lambda関数をローカルで実行しテストができるツールです。
S3, Kinesis, DynamoDB, Cloudwatch Scheduled Event, Cloudtrail,API Gatewayなどの関数からの呼び出しにも対応しています。
Macの場合こちら:
Install Docker for Mac | Docker Documentation
Macの場合こちら:
macOS で AWS Command Line Interface をインストールする - AWS Command Line Interface
Macの場合こちら:
実行したいコード
AWS SAM テンプレートファイル
sam local実行時に入力するイベントファイル
で行える。
など、
実際にHello Worldが出力されました。
templateを置くs3のバケットを作成する。
注意: この際デプロイするLambdaと同一リージョンにs3のバケットを置くこと。また、s3のバケットは一意でなければならない。
パッケージングする。
デプロイ成功。
コンソールから確認します。
できているようです。
右上の[テスト]からテストイベントを設定します。
上のように設定して[保存]し、テストを実行します。
上記のように"Hello world"が出力されていれば成功です。
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); }
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
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"
デプロイ
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
確認
コンソールから確認します。できているようです。
右上の[テスト]からテストイベントを設定します。
上のように設定して[保存]し、テストを実行します。
上記のように"Hello world"が出力されていれば成功です。
コメント
コメントを投稿