Lambda 関数のローカルでのステップスルーデバッグ - AWS Serverless Application Model

Lambda 関数のローカルでのステップスルーデバッグ

AWS SAM をさまざまな AWS ツールキットと共に使用して、サーバーレスアプリケーションのローカルでのテストとデバッグを実行できます。

例えば、ブレークポイントを設定し、変数を調べて、関数コードを一度に 1 行ずつ実行することで、Lambda 関数のローカルステップスルーデバッグを実行できます。ローカルステップスルーデバッグは、クラウドで発生する可能性のある問題の検出とトラブルシューティングを可能することによって、フィードバックループを強化します。

AWS Toolkit の使用

AWS Toolkit は統合開発環境 (IDE) プラグインで、ブレークポイントの設定、変数の調査、および関数コードの一度に 1 行ずつの実行といった一般的なデバッグタスクの多くを実行する機能を提供します。AWSToolkit は、AWS SAM を使用して構築されたサーバーレスアプリケーションの開発、デバッグ、およびデプロイを容易にします。これらは、統合開発環境 (IDE) に統合された Lambda 関数の構築、テスト、デバッグ、デプロイ、および呼び出しのエクスペリエンスを提供します。

AWS SAM で使用できる AWS Toolkit の詳細については、以下を参照してください。

IDE とランタイムの異なる組み合わせで動作する AWS Toolkit にはさまざまなものがあります。以下の表は、AWS SAM アプリケーションのステップスルーデバッグをサポートする一般的な IDE/ランタイムの組み合わせのリストです。

IDE ランタイム AWS Toolkit ステップスルーデバッグの手順
Visual Studio Code
  • Node.js

  • Python

  • .NET

  • Java

  • Go

AWS Toolkit for Visual Studio Code AWS Toolkit for Visual Studio Code ユーザーガイドの「Working with AWS サーバーレスアプリケーション
AWS Cloud9
  • Node.js

  • Python

AWS Cloud9 (AWS Toolkit が有効化されたもの)1

AWS Cloud9 ユーザーガイドの「Working with AWS serverless applications using the AWS Toolkit

WebStorm Node.js AWS Toolkit for JetBrains2

AWS Toolkit for JetBrains の「Running (invoking) or debugging a local function

PyCharm Python AWS Toolkit for JetBrains2

AWS Toolkit for JetBrains の「Running (invoking) or debugging a local function

Rider .NET AWS Toolkit for JetBrains2

AWS Toolkit for JetBrains の「Running (invoking) or debugging a local function

IntelliJ Java AWS Toolkit for JetBrains2

AWS Toolkit for JetBrains の「Running (invoking) or debugging a local function

GoLand Go AWS Toolkit for JetBrains2

AWS Toolkit for JetBrains の「Running (invoking) or debugging a local function

注意:

  1. AWS SAM アプリケーションのステップスルーデバッグに AWS Cloud9 を使用するには、AWS Toolkit が有効化されている必要があります。詳細については、AWS Cloud9ユーザーガイドの「Enabling the AWS Toolkit」を参照してください。

  2. AWS SAM アプリケーションのステップスルーデバッグに AWS Toolkit for JetBrains を使用するには、まず AWS Toolkit for JetBrains の「Installing the AWS Toolkit for JetBrains」に記載されている手順に従って、ツールキットをインストールして設定する必要があります。

AWS SAM のデバッグモードでのローカル実行

AWS Toolkit との統合に加えて、ptvsd または delve といったサードパーティーデバッガーにアタッチするために、AWS SAM を「デバッグモード」で実行することもできます。

デバッグモードで AWS SAM を実行するには、--debug-port または -d オプションを使用した sam local invoke コマンドまたは sam local start-api を使用できます。

以下はその例です。

# Invoke a function locally in debug mode on port 5858 sam local invoke -d 5858 <function logical id> # Start local API Gateway in debug mode on port 5858 sam local start-api -d 5858
注記

sam local start-api を使用している場合は、ローカル API Gateway インスタンスがすべての Lambda 関数を公開します。ただし、単一のデバッグポートしか指定できないため、デバッグできるのは一度に 1 つの関数のみです。AWS SAM CLI がポートにバインドする前に、API を呼び出す必要があります。そうすることで、デバッガーによる接続が可能になります。