はじめに
LambdaをDockerイメージでデプロイする方法を、調査する機会があったので自分の備忘用にメモ書きを残します。
今回は、Dockerを起動して動作確認をする所をメモ書きします。
実行環境は、前回からの続きです。
イメージをビルドする
cd
cd DeployProject
docker build -t deployproject:test1 .
-t オプションで、「名前:タグ」を指定しながらビルドします。
前回、Dockerファイルに「COPYコマンド」など正常に動くか確認します。
デバック用の端末用意
デプロイする前の動作確認は、Teratermの端末を3枚用意するとデバック作業が楽でした。
Teratermは、「File」→「Duplicate session」で同じ接続端末を増やせるので3枚に増やして、下記の用な配置でデバックしてました。
Docker起動 ※デバック繰り返し①
【端末①】で、下記のコマンドでDockerを起動する。
docker run -p 9000:8080 --read-only deployproject:test1
Docker上のLambda起動 ※デバック繰り返し②
【端末③】で、下記のコマンドを利用してリクエストを投げると起動できる。
curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"payload":"hello world!"}'
-d オプションで指定するJSONは、Lambdaの起動引数に与えたいJSONに書き換える
【端末①】には、CloudWatch logsに出力されるようなLambda実行ログが出力される。
【端末③】には、Lambdaの応答JSONが出力される。
Docker停止 ※デバック繰り返し③
【端末②】で、下記のコマンドを利用して「CONTAINER ID」を確認し、docker kill で停止する。
docker ps
docker kill 「CONTAINER ID」
まとめ
Ec2のDocker上で動くLambdaの動作確認までを記載しました。
端末を3枚開きにしておくと、ちょっとだけデバックがやりやすい。というメモ書きでした。
ソースを修正して動作確認し直すときは、「※デバック繰り返し①~③」を繰り返す感じになります。
AWSの相談・お困りごとありましたら、、、
AWSの活用方法や、お困りごとの相談、随時、お仕事の受付しております。
AWSのLambda開発関連で、ライトな開発や、ちょっと、こんな事を自動化したい!等も、お気軽に問い合わせください。