【新機能】Lambda Extensions(プレビュー版)がリリースされました!

2020.10.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、クラスメソッドの岡です。

本日2020/10/09、Lambdaの新機能 Lambda Extensions (プレビュー版)がリリースされました!

概要

Lambda Extensions APIを使って実装したプログラムをLambda Layerとしてデプロイすることで、外部のツールをLambda実行環境内部に統合することができます。

実行環境に統合するということは、Lambdaのライフサイクルにも作用することができます!

主なユースケース

公式ブログから引用したユースケースは以下の通りです。

  • 関数呼び出しの前、実行中、および後に診断情報をキャプチャする
  • コードを変更せずにコードを自動的にインストルメント化する
  • 関数呼び出しの前に構成設定またはシークレットをフェッチする
  • 機能とは別のプロセスとして実行できる強化されたセキュリティエージェントを介して、機能アクティビティを検出して警告する

現在利用可能な拡張機能

既に以下のパートナー製品の拡張機能がLambda Layerとして公開されていて、利用可能となっています。

  • AppDynamics
    • エンドツーエンドのトランザクショントレース
  • Check Point
    • ライフサイクルセキュリティ
  • Datadog
    • 監視、検出(メトリック、トレース、およびログを取得)
  • Dynatrace
    • エンドツーエンドの可観測性
  • Epsagon
    • 監視、トラブルシューティング、およびコストの削減
  • HashiCorp
    • シークレットや機密データへのアクセスを保護、保存、制御
  • Lumigo
    • 監視、可観測性
  • New Relic
    • 可観測性
  • Thundra
    • デバッグ、可観測性、セキュリティ
  • Splunk SignalFX
    • モニタリング(パフォーマンス&コストの監視、管理、および最適化)
  • AWS AppConfig
    • アプリケーション構成の管理、保存、デプロイ
  • Amazon CloudWatch Lambda Insights
    • 監視、ログ収集、調査、パフォーマンス最適化

Lambdaライフサイクルの変化

Extensionsのリリースにあたり、Lambdaのライフサイクルが変更されたようです。
ちなみにLambdaの実行環境については、先日AWS西谷さんの記事で詳しく説明されていましたので合わせてご覧ください。

(※公式ブログから引用)

上記は以前のLambda実行環境です。 Runtime APIと通信し、実行環境内でHTTP APIエンドポイントを提供してLambdaサービスと通信します。

今までのプロセスはこのようになっていました。

  • Init(初期化フェーズ)
    • プロビジョニングされた同時実行が有効になっている場合は事前に発生
  • Invoke(呼び出しフェーズ)
  • Lambda関数が一定期間呼び出しを受信しない場合、Lambda Serviceがシャットダウンし、実行環境を削除

Extensions APIの追加により、実行環境のライフサイクルに作用できるようになりました。
Extensions APIを使用して、Lambda Serviceが実行環境をフリーズするタイミングに影響を与えることができます。

新しくなったライフサイクルでは初期化フェーズでランタイム、関数に拡張機能の初期化タスクが追加されています。

内部モードと外部モード

Lambda Extensionsは内部モードと外部モード、2つのタイプに分かれます。
ランタイムプロセスの一部として実行する内部モードに対し、外部モードの場合ランタイムとは別のプロセスを実行できます。(どちらも実行環境は同じ)

注意点として、どちらの場合もExtensionは関数と同じ実行環境で実行されるため、CPU、メモリ、ディスクストレージなどのリソースを関数と共有することを意識する必要があります。

価格

拡張機能は、Lambda関数と同じ課金モデルを共有します。拡張機能でLambda関数を使用する場合、処理されたリクエストと、コードとすべての拡張機能の実行に使用された合計計算時間に対して、100ミリ秒単位で支払います。

プレビューを使用できるリージョン

  • us-east-1
  • us-east-2
  • us-west-1
  • us-west-2
  • ca-central-1
  • eu-west-1
  • eu-west -2
  • eu-west-3
  • eu-central-1
  • eu-north-1
  • eu-south-1
  • sa-east-1
  • me-south-1
  • ap-northeast-1
  • ap-northeast-2
  • ap-northeast-3
  • ap-southeast-1
  • ap-southeast-2
  • ap-south-1
  • ap-east-1

参考

Introducing AWS Lambda Extensions – In preview
Building Extensions for AWS Lambda – In preview
aws-samples/aws-lambda-extensions - Github