AWS Lambda コンテナイメージ の感想
2020年12月に、AWS Lambda のパッケージタイプとして「コンテナイメージ」が追加されました。
遅まきながら、どのようなものか体験しましたので、感想を適当に書きます。
やったこと
sam init で Lambda Image Type を選択して、API Gateway 経由での Hello World をベースにビルド・デプロイをあれこれして、動きを確認しました。
感じたこと
- 簡単、わかりやすい
- Zip type と同じような感覚で開発できる
- Zip type の Lambda ファイル群に、Dockerfile が加わった感じで負担はさほど変わらない
- メモリや vCPU の上限引き上げもあり、さらに魅力的なサービスになった感がある aws.amazon.com
- 検索したところ、コールドスタートでも爆速?とのこと dev.classmethod.jp
イメージについて確認したこと
- ベースイメージは何でもよいわけではない
- Public ECR にある公式イメージをベースにする
- あとは普段と同じように Dockerfile に粛々と書いていけばよい
- イメージリポジトリは ECR を使用
- 確認した限りでは、事前にリポジトリを作成しておく必要があった
- IAM Role に ECR へのアクセス権限は不要
- イメージサイズの上限は 10 GiB (ECRのQuotaに依存)
docs.aws.amazon.com
- (当たり前だが) Dockerfile で pip install や bundle install をして、イメージに依存ライブラリを詰め込める
- きっとモニタリングやロギングのエージェントを入れられるはずで便利そう
- 一方、 Zip type 向けとして Lambda Extensions という Layer 系の機能が発表されている(プレビュー) aws.amazon.com
- Zip type の Deployment package size quota である "250 MB(Unzipped, including layers)" の壁を突破できる
- 機械学習や画像解析など、これまでは難しかった重めのライブラリを載せられる
- そうはいっても、データ分析系は Glue や SageMaker を使ったほうがよいと思う(理由は下)
気になったこと
- Timeout が 15 min なのは従来と変わらず docs.aws.amazon.com
- イメージに固められているので、マネージメントコンソールからだと どんな Function なのかわからない
- Zip type はソースコードを直接確認できるので、エラーが起きたときにさくっと確認できて地味に便利
感想まとめ: Lambdaすごい
Dockerfile を使ってデプロイするので、すでにコンテナワークロードで動かしている軽めの処理があれば、ある程度容易に移植できてよきと思いました。ただ、依然として 15 分という制限時間がありますので、重い処理を任せるのではなく、あくまでマイクロサービスの一部として活用していきたいサービスだなと感じました。