Skip to content
Latchkey

AWS Lambdaとは?サーバーレス関数を解説

AWS Lambdaはサーバーレスのcomputeサービスです: 関数をアップロードすると、AWSがイベントに応じてオンデマンドで実行し、実行したミリ秒に対してのみ支払います。

Lambdaは、サーバーをプロビジョニングも管理もせずにコードを実行できるようにします。関数をパッケージ化し、何がトリガーするかを定義すると、AWSがスケーリング、パッチ適用、可用性を処理します。これは "サーバーレス" computeの典型例です: サーバーは依然として存在しますが、あなたはそれを見ることも管理することもありません。

Lambda関数の実行のしかた

サポートされているruntime (Node.js、Python、Java、Go、その他) でhandler関数をデプロイするか、コンテナイメージとしてデプロイします。トリガーが発火すると、Lambdaはexecution environmentを起動し、handlerを実行し、その後それをフリーズまたは破棄します。イベントが到着するにつれ、並行性が自動的にスケールします。

何が関数をトリガーするか

  • API Gatewayまたはfunction URL経由のHTTPリクエスト。
  • S3、DynamoDB streams、またはSQSやSNSからのイベント。
  • cronのようなタイマーでのスケジュールされた呼び出し。
  • 他のサービスやAWS SDKからの直接呼び出し。

cold startと制限

アイドル状態の関数への最初の呼び出しは、environmentが初期化される間、cold startを支払います。関数には設定可能なメモリサイズ、最大timeout、そしてdeployment packageサイズの制限があります。packageを小さくdependenciesを軽く保つことで、cold-startのレイテンシが減ります。

料金モデル

requestごとに加え、gigabyte-ミリ秒で測定されるcompute時間を支払うので、めったに実行されない関数はほとんどコストがかかりません。これにより、常時稼働のサーバーが無駄になるようなスパイクの多い、あるいはイベント駆動のworkloadにLambdaが魅力的になります。

CI/CDでの役割

deploy jobが関数コードをzip化 (またはコンテナイメージをbuild) し、それからAWS CLI、SAM、Serverless Framework、またはTerraformで関数を更新します。pipelineはIAM roleで認証し、新しいバージョンを発行し、より安全なrolloutのためにaliasを使ってトラフィックを段階的に移動できます。testsとlintingは、deployステップが発火するより前にCIの早い段階で実行されます。

重要なポイント

  • Lambdaは、管理するサーバーなしにイベントに応じてオンデマンドでコードを実行します。
  • requestごと、実行のミリ秒ごとに支払うので、スパイクの多いworkloadに理想的です。
  • pipelineは、IAM認証されたツールでコードやイメージを更新して関数をデプロイします。

関連ガイド