s平面の左側

左側なので安定してます(制御工学の話は出てきません)

Go 言語で AWS Lambda Function を開発するための Docker 環境を作った

リポジトリはこちら。

github.com

git clone, make up してから make invoke で Lambda Function が実行される。

とりあえず公式の example が動くようになっている。

% make invoke
2018/10/05 10:59:02 Successfully parsed template.yml
2018/10/05 10:59:02 Connected to Docker 1.38
2018/10/05 10:59:02 Fetching lambci/lambda:go1.x image for go1.x runtime...
go1.x: Pulling from lambci/lambda
Digest: sha256:f0c2f594555ac1363df7eb3c119ad4a1cd805232ed33c1bd2e8421f0a5a71415
Status: Image is up to date for lambci/lambda:go1.x
2018/10/05 10:59:03 Invoking bin/main.handle (go1.x)
2018/10/05 10:59:03 Mounting xxxx as /var/task:ro inside runtime container
START RequestId: 7fa90259-78fe-1da5-41b4-cf39cc48f575 Version: $LATEST
{"Answer:":"Jim is 33 years old!"}
END RequestId: 7fa90259-78fe-1da5-41b4-cf39cc48f575
REPORT RequestId: 7fa90259-78fe-1da5-41b4-cf39cc48f575  Duration: 0.83 ms       Billed Duration: 100 ms Memory Size: 128 MB     Max Memory Used: 6 MB

詰まったことなど

Docker 環境上で SAM CLI を実行する

SAM CLI 自体がランタイムに Docker を使っているので、 Docker in Docker の形になる。

既に公開されているイメージがあったので、それをベースに Dockerfile を作成。

ちなみに SAM CLI のバージョンが 0.2.2 の場合は Go 言語をサポートしていないので注意。

Path Error が発生する

原因は 2 つあり、1 つめは以下の Qiita 記事をそのまま参考にした。

qiita.com

このビルドオプションはよく把握できていないので、後で調べる。

もう 1 つは SAM CLIlocal invoke 実行時に --docker-volume-basedir オプションを指定する必要があったこと。