😽
aws sam で lambda をローカルで実行 メモ
はじめに
aws sam で lambda をローカルで実行するメモ
前提
・vscodeインストール済み
・Dockerインストール済み
aws sam cliのセットアップ
Visual Studio Codeの拡張機能で、AWS上でのアプリケーションの作成、デバッグ、デプロイを支援してくれるAWS Toolkit for Visual Studio Codeがあります。
aws cliのインストール
こちらに記載されているコマンドでインストール
$ aws --version
aws-cli/2.4.20 Python/3.8.8 Darwin/20.2.0 exe/x86_64 prompt/off
aws sam cliのインストール
こちらに記載されているコマンドでインストール
$ sam --version
SAM CLI, version 1.53.0
雛形作製
下記で雛形が作製される
$ sam init --runtime go1.x --name aws-golang
ビルドを試してみる
$ sam build
Build Succeeded
Built Artifacts : .aws-sam/build
Built Template : .aws-sam/build/template.yaml
Commands you can use next
=========================
[*] Validate SAM template: sam validate
[*] Invoke Function: sam local invoke
[*] Test Function in the Cloud: sam sync --stack-name {stack-name} --watch
[*] Deploy: sam deploy --guided
ローカルでlambda関数を呼び出す
$ sam local invoke
Error: Running AWS SAM projects locally requires Docker. Have you got it installed and running?
実行にはdockerを起動する必要があるようです。
dockerを起動後再度実行すると
Mounting /Users/VAIO/Desktop/aws-golang/.aws-sam/build/HelloWorldFunction as /var/task:ro,delegated inside runtime container
START RequestId: 001f6820-61d6-4ce7-b796-85b76bba1b6d Version: $LATEST
END RequestId: 001f6820-61d6-4ce7-b796-85b76bba1b6d
REPORT RequestId: 001f6820-61d6-4ce7-b796-85b76bba1b6d Init Duration: 0.55 ms Duration: 1060.60 ms Billed Duration: 1061 ms Memory Size: 128 MB Max Memory Used: 128 MB
{"statusCode":200,"headers":null,"multiValueHeaders":null,"body":"Hello, 14.10.129.128\n"}%
レスポンスが返るようになりました。
ローカル起動時に環境変数を読み込むには
env.jsonを作製
{
"Parameters": {
"DB_USERNAME": "ユーザー名",
"DB_PASSWORD": "パスワード",
}
}
template.yamlを編集
Globals:
Function:
Timeout: 5
Environment:
Variables:
DB_USERNAME:
DB_PASSWORD:
HOSTNAME:
PORT:
DB_NAME:
ローカルapi起動時に optionを指定
> sam local start-api --env-vars env.json
ローカルでapiサーバーを立てる
sam local start-api
直接ローカルのlambdaを実行する
sam local invoke "関数名" -e event/event.json
デプロイ
$ sam deploy --guided
Discussion