前書き
lambdaを実装する必要があり、ローカルでプログラムのテストができないか調べてたところ、AWS SAMを用いて検証するようなので設定方法を書いていきます。
###前提条件
Dockerが必要です。
+今回lambdaでgo言語を試すのでgoのインストールも必要です。
###検証環境
OS:Windows 10 Pro 64bit ver 1909
Docker version 19.03.12
言語環境:go version go1.14.1
#SAMで構築する検証環境について
AWS-SAMをインストールすることで下記のような環境をローカルに作成できます。
ローカルに仮想のAPI GaweWayを作りそこからLambda関数を実行する形です。
実行時にjsonを渡すことでevent発火時の動作も検証できます。
lambda関数の実行時にdockerコンテナが起動し関数が実行されます。そのため、dockerのインストールが必要になります。
SAMのインストール
AWS SAM CLI のインストール
上記リンクからAWS-SAM CLIをダウンロードしインストールします。
SAMをAPI GwateWay経由での実行する
チュートリアル
公式のチュートリアルを参考にHello-wouldを実行します。
#####1.テンプレートからアプリケーションの作成
Which template source would you like to use?
1 - AWS Quick Start Templates
2 - Custom Template Location
Choice: 1
What package type would you like to use?
1 - Zip (artifact is a zip uploaded to S3)
2 - Image (artifact is an image uploaded to an ECR image repository)
Package type: 1
Which runtime would you like to use?
4 - go1.x
Runtime: 4
Project name [sam-app]: Hello-Would
AWS quick start application templates:
1 - Hello World Example
2 - Step Functions Sample App (Stock Trader)
Template selection: 1
#####2.アプリケーションのビルド
cd .\Hello-Would\
sam build //アプリケーションのビルド
#####3.アプリケーションの実行
まずローカル上のAPI Gatewayを起動しAPI叩くことでlamdaが実行されます。
sam local start-api //Gatewayの起動
> C:\Windows\System32\curl.exe http://127.0.0.1:3000/hello
Hello, (IPアドレス)
(参考)Windows 10上でcurlの実行
windows10 ver 1803以降は標準のcurlツールがあるのでそちらを使ってテストします。
ディレクトリ
C:\Windows\System32
C:\Windows\System32\curl.exe http://127.0.0.1:3000/hello
上記で実行ができました。
lambdaが呼び出されたときにdocker imageが起動するので初回や環境によって時間がかかります。
GawteWayを起動せず直接実行する際は、プロジェクトフォルダで
sam local invoke
で実行できます。
感想
AWS-CLIもインストールすることで、作成した関数をデプロイできます。
実行時にはまったところとして、ローカルの別のコンテナに接続する際はdocker networkを指定する必要だったり、(コンテナ上のDBにアクセスする場合)
event時の環境変数をjsonで設定できます。
そちらも別記事にしようと思います。
lambda関数を作成するうえでローカルに実行環境があるほうが便利ですが、意外と記事がなかったので作成しました。
誰かの役に立てば幸いです。
ありがとうございました。