AWS Lambda用のレイヤーをWindows上のDockerで作成

AWS Lambda用のレイヤーをWindows上のDockerで作成

Lambdaレイヤーを作成する目的と問題

  • 目的

AWS Lambda関数で標準でないPythonライブラリ(今回の場合はopenai、linebot-sdkなど)を使用するには、それらのライブラリを事前に用意する必要がある。

以下2つの方法があり、

  • Lambda関数にソースコードとともにアップロード
  • Lambdaレイヤーを作成してLambda関数に適応させる

Lambdaレイヤーを作成する方法だと、

  • 複数のLambda関数で共有することができる
  • ソースコードとライブラリを別に管理できる

というメリットがある。
したがってLambdaレイヤーを作成する。

  • 問題

AWS Lambdaは、Amazon Linux上で実行されるため、使用するライブラリや依存関係はAmazon Linux環境に合わせる必要がある。
具体的に言うとWindows上でpythonライブラリを用意してアップロードしても謎のエラーが発生することがあるので避けた方が良い。

Dockerを使用して仮想環境上にAmazon Linuxを再現することでこの問題を解決する。

具体例をもとにその方法を記す。

ffmpeg 動画から画像を抜き出す

ffmpeg 動画から画像を抜き出す

Docker + ffmpeg 動画から画像を抜き出す

ffmpegは動画の加工・変換などいろいろできるすごいやつ。
これにより動画から画像を抜き出したい。
しかし、インストールして環境が汚れるのは恐怖。
なのでDockerを使い、コンテナ上でffmpegを扱う。

Dockerは前回(DockerをWindows10で使う)インストールした。

DockerをWindows10で使う

DockerをWindows10で使う

Windowxs 10 + Docker Desktop for Windows

Dockerを使うとコンテナ(アプリケーションと実行環境がセットになった感じのやつ)が扱える。
コンテナ上でアプリケーションを動かす手法は、従来の本体にインストールする手法に比べてメリットが大きい。

コンテナ従来の方法
新アプリ導入時すぐ動くいろいろエラーが出て終わり
環境汚れない汚れて終わり
別環境に移転容易に移せるめんどくさくて終わり

なのでWindowsにDockerを導入する。
「Docker Desktop for Windows」を用いて導入。
その後 Hello World! 動作確認する。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×