public note

AWS Lambda コンテナイメージ の感想

2020年12月に、AWS Lambda のパッケージタイプとして「コンテナイメージ」が追加されました。

aws.amazon.com

遅まきながら、どのようなものか体験しましたので、感想を適当に書きます。

やったこと

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 分という制限時間がありますので、重い処理を任せるのではなく、あくまでマイクロサービスの一部として活用していきたいサービスだなと感じました。