開発チームがPythonで作成したデータ分析アプリケーションをAWS Lambdaでサーバーレス実行したいと考えています。このアプリケーションはPyTorchなどの機械学習ライブラリを使用しており、依存ライブラリを含めた合計サイズは3GBを超えます。Lambda関数としてデプロイするための最も適切なアプローチはどれですか?
Lambdaはコンテナイメージをデプロイメントパッケージとしてサポートしており、Amazon ECRに保存したDockerイメージを使って関数を作成できます。コンテナイメージのサイズ上限は10GBで、PyTorchなどの大型ライブラリを含む3GB超のアプリケーションにも対応可能です。 デプロイ手順: ①Lambda Runtime Interface Client(RIC)を含むDockerfileを作成する ②`docker build`でイメージをビルドする ③Amazon ECRにイメージをプッシュする ④ECRのイメージURIを指定してLambda関数を作成する(パッケージタイプ: Image) コンテナイメージを使う場合もLambdaのイベント駆動・タイムアウト・メモリ設定などの実行モデルは通常の関数と同じです。 選択肢AのZIPデプロイは、S3経由でも展開後のサイズ上限が250MBであり、3GB超の依存ライブラリを含むアプリケーションには対応できません。 選択肢BのLambdaレイヤーは最大5つまでアタッチ可能ですが、関数本体とすべてのレイヤーを合わせた展開後の合計サイズ上限は250MBであり、3GBを超えるケースには対応できません。 選択肢DのFargate連携アーキテクチャは技術的には実現可能ですが、Lambdaでサーバーレス実行するという要件に反し、コンテナイメージ対応Lambdaで解決できる問題に対して不要な複雑さを加えます。