sam remote test-event を使用したクラウドテストの概要 - AWS Serverless Application Model

sam remote test-event を使用したクラウドテストの概要

AWS Serverless Application Model コマンドラインインターフェイス (AWS SAM CLI) の sam remote test-event コマンドを使用して、AWS Lambda 関数の共有可能なテストイベントにアクセスし、管理します。

共有可能なテストイベントの詳細については、「AWS Lambda デベロッパーガイド」の「共有可能なテストイベント」を参照してください。

sam remote test-event を使用するには、次を実行して AWS SAM CLI をインストールします。

AWS SAM CLI が既にインストールされている場合は、最新バージョンの AWS SAM CLI にアップグレードすることをお勧めします。詳細については、「AWS SAM CLI のアップグレード」を参照してください。

sam remote test-event を使用する前に、次の基本を理解しておくことをお勧めします。

AWS SAM CLI で sam remote test-event を使用するようにセットアップする

次のセットアップステップを実行して、AWS SAM CLI sam remote test-event コマンドを使用できるようにします。

  1. AWS アカウント を使用するように AWS SAM CLI を設定する - Lambda の共有可能なテストイベントに、同じ AWS アカウント内のユーザーがアクセスして管理できます。AWS アカウント を使用するように AWS SAM CLI を設定する方法については、「AWS SAM CLI の設定」を参照してください。

  2. 共有可能なテストイベントのアクセス許可を設定する — 共有可能なテストイベントにアクセスして管理するには、適切なアクセス許可が必要です。詳細については、「AWS Lambda デベロッパーガイド」の「共有可能なテストイベント」を参照してください。

sam remote test-event コマンドの使用

AWS SAM CLI sam remote test-event コマンドには、共有可能なテストイベントへのアクセスと管理に使用できる以下のサブコマンドがあります。

  • delete — Amazon EventBridge スキーマレジストリから、共有可能なテストイベントを削除します。

  • get — EventBridge スキーマレジストリから共有可能なテストイベントを取得します。

  • list — EventBridge スキーマレジストリにある関数用の既存の共有可能なテストイベントを一覧表示します。

  • put — ローカルファイルのイベントを EventBridge スキーマレジストリに保存します。

AWS SAM CLI を使用してこれらのサブコマンドを一覧表示するには、以下を実行します。

$ sam remote test-event --help

共有可能なテストイベントを削除する

delete サブコマンドを以下と併せて使用することで、共有可能なテストイベントを削除できます。

  • 削除する共有可能なテストイベントの名前を指定します。

  • イベントに関連付けられた許容可能な Lambda 関数 ID を指定します。

  • Lambda 関数の論理 ID を指定する場合は、Lambda 関数に関連付けられた AWS CloudFormation スタック名も指定する必要があります。

以下に例を示します。

$ sam remote test-event delete HelloWorldFunction --stack-name sam-app --name demo-event

delete サブコマンドで使用するオプションのリストについては、「sam remote test-event delete」を参照してください。AWS SAM CLI から、以下の操作を実行することもできます。

$ sam remote test-event delete --help

共有可能なテストイベントを取得する

get サブコマンドを以下と併せて使用することで、EventBridge スキーマレジストリから共有可能なテストイベントを取得できます。

  • 取得する共有可能なテストイベントの名前を指定します。

  • イベントに関連付けられた許容可能な Lambda 関数 ID を指定します。

  • Lambda 関数の論理 ID を指定する場合は、Lambda 関数に関連付けられた AWS CloudFormation スタック名も指定する必要があります。

以下は、sam-app スタックの HelloWorldFunction Lambda 関数に関連付けられた demo-event という名前の共有可能なテストイベントを取得する例です。このコマンドでは、イベントをコンソールに出力します。

$ sam remote test-event get HelloWorldFunction --stack-name sam-app --name demo-event

共有可能なテストイベントを取得してローカルマシンに保存するには、--output-file オプションを使用してファイルパスと名前を指定します。以下は、現在の作業ディレクトリに demo-eventdemo-event.json として保存する例です。

$ sam remote test-event get HelloWorldFunction --stack-name sam-app --name demo-event --output-file demo-event.json

get サブコマンドで使用するオプションのリストについては、「sam remote test-event get」を参照してください。AWS SAM CLI から、以下の操作を実行することもできます。

$ sam remote test-event get --help

共有可能なテストイベントを一覧表示する

スキーマレジストリから、特定の Lambda 関数のすべての共有可能なテストイベントを一覧表示できます。list サブコマンドを以下と併せて使用します。

  • イベントに関連付けられた Lambda 関数の許容可能な ID を指定します。

  • Lambda 関数の論理 ID を指定する場合は、Lambda 関数に関連付けられた AWS CloudFormation スタック名も指定する必要があります。

以下は、sam-app スタックの HelloWorldFunction Lambda 関数に関連付けられたすべての共有可能なテストイベントのリストを取得する例です。

$ sam remote test-event list HelloWorldFunction --stack-name sam-app

list サブコマンドで使用するオプションのリストについては、「sam remote test-event list」を参照してください。AWS SAM CLI から、以下の操作を実行することもできます。

$ sam remote test-event list --help

共有可能なテストイベントを保存する

共有可能なテストイベントを EventBridge スキーマレジストリに保存できます。put サブコマンドを以下と併せて使用します。

  • 共有可能なテストイベントに関連付けられた Lambda 関数の許容可能な ID を指定します。

  • 共有可能なテストイベントの名前を指定します。

  • アップロードするローカルイベントのファイルパスと名前を指定します。

以下は、ローカルの demo-event.json イベントを demo-event として保存し、sam-app スタックの HelloWorldFunction Lambda 関数に関連付ける例です。

$ sam remote test-event put HelloWorldFunction --stack-name sam-app --name demo-event --file demo-event.json

EventBridge スキーマレジストリに同じ名前の共有可能なテストイベントが存在する場合、AWS SAM CLI はそれを上書きしません。上書きするには、コマンドに --force オプションを追加します。

put サブコマンドで使用するオプションのリストについては、「sam remote test-event put」を参照してください。AWS SAM CLI から、以下の操作を実行することもできます。

$ sam remote test-event put --help

共有可能なテストイベントを使用する

共有可能なテストイベントを使用して、AWS クラウド で sam remote invoke コマンドを実行して Lambda 関数をテストします。詳細については、「共有可能なテストイベントをクラウド内の Lambda 関数に渡す」を参照してください。

共有可能なテストイベントを管理する

このトピックには、共有可能なテストイベントを管理および使用する方法の例が含まれています。

共有可能なテストイベントを取得、変更、使用する

EventBridge スキーマレジストリから共有可能なテストイベントを取得してローカルで変更し、そのローカルテストイベントを AWS クラウド の Lambda 関数で使用できます。以下に例を示します。

  1. 共有可能なテストイベントを取得するsam remote test-event get サブコマンドを使用して、特定の Lambda 関数の共有可能なテストイベントを取得し、ローカルに保存します。

    $ sam remote test-event get HelloWorldFunction --stack-name sam-app --name demo-event --output-file demo-event.json
  2. 共有可能なテストイベントを変更する — 任意のテキストエディタを使用して、共有可能なテストイベントを変更します。

  3. 共有可能なテストイベントを使用するsam remote invoke コマンドを使用して、--event-file でイベントのファイルパスと名前を指定します。

    $ sam remote invoke HelloWorldFunction --stack-name sam-app --event-file demo-event.json

共有可能なテストイベントを取得し、変更、アップロード、使用する

EventBridge スキーマレジストリから共有可能なテストイベントを取得し、ローカルで変更してアップロードできます。その後、共有可能なテストイベントを AWS クラウド の Lambda 関数に直接渡すことができます。以下に例を示します。

  1. 共有可能なテストイベントを取得するsam remote test-event get サブコマンドを使用して、特定の Lambda 関数の共有可能なテストイベントを取得し、ローカルに保存します。

    $ sam remote test-event get HelloWorldFunction --stack-name sam-app --name demo-event --output-file demo-event.json
  2. 共有可能なテストイベントを変更する — 任意のテキストエディタを使用して、共有可能なテストイベントを変更します。

  3. 共有可能なテストイベントをアップロードするsam remote test-event put サブコマンドを使用して、共有可能なテストイベントを EventBridge スキーマレジストリにアップロードして保存します。この例では、共有可能なテストの古いバージョンを上書きする --force オプションを使用しています。

    $ sam remote test-event put HelloWorldFunction --stack-name sam-app --name demo-event --file demo-event.json --force
  4. 共有可能なテストイベントを Lambda 関数に渡すsam remote invoke コマンドを使用して、共有可能なテストイベントを AWS クラウド の Lambda 関数に直接渡します。

    $ sam remote invoke HelloWorldFunction --stack-name sam-app --test-event-name demo-event