Lambda のコンテナイメージを sam cli で作成&ビルドして実行してみよう

はじめに

Lambda のパッケージとしてコンテナイメージがサポートされました。AWSドキュメントを参照すると、プロジェクトのディレクトリ作成からDockerファイル作成などと設定がたくさんあります。大変そうな印象ですよね。

なんとsam cliでも既にコンテナイメージがサポート済みで、簡単にコンテナイメージのプロジェクト作成からビルド、テスト実行までできるようになっています。

今回は、sam cli でコンテナイメージの Lambda を作成し、動作確認してみましょう。Lambda関数は、Python3.8で作ります。

実施環境

・mac OS(10.14.5)

・sam cli(1.24)

・aws cli(2.0.59)

事前準備

sam cliのインストール手順は前回の記事 に記載していますので、こちらを参照ください。

sam cli 「v1.13.1」 以上からコンテナイメージサポートしているので、バージョンが古ければ最新にアップデートしましょう。

コンテナイメージのプロジェクト作成

sam initでプロジェクト作成します。

パッケージタイプに「image」が追加されていますね!

順番に「2: image」、「4: amazon/python3.8-base」、今回動作確認用なので「1: Hello World Lambda Image Example」を選択します。

Scikit-learnやTensorflowなど機械学習のテンプレートが既にあるんですね!

sam init を実行すると、カレントディレクトリにプロジェクトが作成されます。

hello_world配下にDockerfileができています。

Dockerfileも自動生成してくれるのはありがたいですね。

中身は下記のようになっています。

FROM :python 3.8イメージ(ECRになっていますね)
COPY:Lambda関数ファイル app.py、requirements.txtをイメージへコピー
CMD:Lambdaハンドラー

Lambda関数作成

前回の記事 で作成したLambda関数を流用しました。

  • template.yaml

中身を見ると PacakeType が「image」、Metadataの箇所も「Dockerfile」になっていますね。

template.yaml に HelloWorldFunction>Properties>Environment に環境変数を追加します。設定内容は前回の記事と同様です。

  • requirements.txt
  • テスト用データ

前回の記事と同様です。

ビルド

sam buildを実行すると、docker buildも実行されます。

実行ログ見ると、コンテナイメージのビルドされていますね。

Lambda実行

sam cliで作成しているため local invoke で実行できます。

いかがでしたでしょうか。sam cliを利用することで簡単にコンテナイメージのLambdaの作成からローカル実行までできました。

参考

SAMビルドドキュメント


--------------------------
システム開発のご要望・ご相談はこちらから

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です