AWSは先日、AWS Serverless Application Model (SAM) Command Line Interface (CLI) for AWS Lambdaのリモート呼び出し機能を発表した。これにより、開発者は AWS クラウドにデプロイされた AWS Lambda 関数を迅速に呼び出すことができる。
AWS SAM CLI はサーバーレスアプリケーションの 構築、テスト、パッケージング、デプロイを容易にする開発者ツールだ。追加されたリモート呼び出し機能により、開発者はSAM CLIを使用して、シンプルなコマンドsam remote invokeでLambda関数をテストできる。このコマンドはイベントペイロードとLambda論理IDを入力としてLambda関数を呼び出し、応答を出力する。レスポンスストリーミング、非同期呼び出し、ドライラン、リクエストレスポンスなど、複数の呼び出しモードをサポートしている。この機能により開発者はsam syncコマンドとともに、ビルド-デプロイ-テストの繰り返しループを高速化できる。
ドキュメントによると開発者がsam remote invokeでLambda関数を呼び出すとAWS SAM CLIは以下のような応答を返す。
-
リクエストメタデータ - リクエストに関連付けられたメタデータである。これにはリクエストIDとリクエスト開始時刻が含まれる。
-
Lambdaレスポンス - クラウドで呼び出された後のLambda関数からのレスポンスである。
さらに--output オプションを使用するとAWS SAM CLI の出力レスポンスを json またはテキストで設定できる。
sam remote invoke arn:aws:lambda:us-west-2:012345678910:function:sam-app-HelloWorldFunction-ohRFEn2RuAvp
Invoking Lambda Function
arn:aws:lambda:us-west-2:012345678910:function:sam-app-HelloWorldFunction-ohRFEn2RuAvp
START RequestId: 9be48562-f991-4547-9f11-97f2f339b9f4 Version: $LATEST
END RequestId: 9be48562-f991-4547-9f11-97f2f339b9f4
REPORT RequestId: 9be48562-f991-4547-9f11-97f2f339b9f4 Duration: 5.45 ms Billed Duration: 6 ms Memory Size: 128 MB Max Memory Used: 67 MB Init Duration: 160.95 ms
{"statusCode":200,"body":"{\"message\":\"hello world\"}"}%
AWSのPrincipal Developer AdvocateであるEric Johnson氏は、AWS Computeのブログの投稿で、潜在的なsam remote invokeコマンドをテストする方法を説明している。
リモート呼び出し機能をテストするために小さなAWS SAMアプリケーションは2つのAWS Lambda関数で構成されている。 TranslateFunctionはテキスト文字列を受け取り、AI/MLサービスAmazon Translateを使ってターゲット言語に翻訳する。ストリーム機能はストリーミング形式でデータを生成する。
これらのアプローチのいずれかを使用するとAWS SAMはAmazon API Gatewayのようなサービスを介して呼び出されたかのように、Lambda関数からの応答を表示する。しかし、AWS SAMはPythonのソフトウェア開発キット(SDK)であるboto3から直接生のレスポンスを取得するオプションも提供している。このフォーマットには呼び出されたバージョン、リトライの試行回数、その他の関連情報のような追加の詳細が含まれている。この出力を取得するには、追加パラメータ "--output" を指定して起動し、その値を "json" に設定する。 ソース:https://aws.amazon.com/blogs/compute/testing-aws-lambda-functions-with-aws-sam-remote-invoke/
AWS SDKはLambdaサービスを通じてLambda関数を呼び出すための様々な選択肢を提供しており、AWS SAMはリモート呼び出しにboto3を利用している。AWS SAMでは"--parameter "フラグを導入することで、SDKのオプションをLambda関数呼び出しに活用し、複数回利用できる。
さらに、AWS SAMのsam logs機能はAmazon CloudWatchとAWS X-Rayからの集約されたログとトレースの表示を支援するが、新しいリモート呼び出し機能は、個々の関数呼び出しに特化したコンテキストログを提供することに重点を置き、テスト中の開発者のニーズに応える。
最後に、リモート呼び出し機能は SAM CLI バージョン 1.88.0 以降で使用できる。詳細についてドキュメントを参照。