

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Lambda 関数
<a name="building-lambda"></a>

AWS Toolkit for Visual Studio Code は AWS Lambda 関数の包括的なサポートを提供するため、VS Code から直接ビルド、テスト、デプロイできます。

Lambda は、200 を超える AWS サービスと software-as-a-service (SaaS) アプリケーションのイベントに応じてコードを自動的に実行する、完全マネージド型のイベント駆動型コンピューティングサービスです。AWS Lambda サービスの詳細については、「[AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) デベロッパーガイド」を参照してください。

以下のトピックでは、AWS Toolkit for Visual Studio Code で AWS Lambda を使用する方法について説明します。

**Topics**
+ [AWS Lambda 関数の使用](remote-lambda.md)
+ [AWS Lambda console IDE へ](lambda-console-ide.md)
+ [AWS Lambda LocalStack をサポートする](lambda-localstack.md)
+ [AWS Lambda リモートデバッグ](lambda-remote-debug.md)

# AWS Lambda 関数の使用
<a name="remote-lambda"></a>

 AWS Toolkit for Visual Studio Code を使用すると、ローカル VS Code 環境で AWS Lambda 関数を操作できます。Toolkit を使用すると AWS 、IDE を離れることなく、Lambda 関数を作成、編集、テスト、デバッグ、デプロイできます。 AWS Lambda サービスの詳細については、 [AWS Lambda](https://docs.aws.amazon.com//lambda/latest/dg/welcome.html)デベロッパーガイドを参照してください。

次のセクションでは、 AWS Toolkit for Visual Studio Codeで Lambda 関数 の使用を開始する方法について説明します。

**注記**  
を使用して Lambda 関数を既に作成している場合は AWS マネジメントコンソール、 Toolkit から呼び出すことができます。さらに、 から Lambda 関数を VS Code に開くことができます。詳細については AWS Lambda console、このユーザーガイドの[AWS Lambda console IDE へ](lambda-console-ide.md)トピックを参照してください。VS Code で新しい Lambda 関数を作成するには、このユーザーガイドの「[新しいサーバーレスアプリケーションの作成 (ローカル)](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/sam-get-started.html#serverless-apps-create)」トピックで説明されているステップに従ってください。

## 前提条件
<a name="remote-lambda-prereq"></a>

 AWS Toolkit で AWS Lambda サービスを使用するには、次の条件を満たす必要があります。
+ の最新バージョン AWS Toolkit for Visual Studio Code がインストールされ、認証情報を使用してセットアップされます AWS 。
+  AWS Identity and Access Management (IAM) 管理のアクセス許可とポリシーは、 AWS Lambda サービスと連携するように設定されています。アクセス許可を設定し、互換性のある AWS 管理ポリシーを作成する方法の詳細については、「 *AWS Lambda デベロッパーガイド*」の[AWS Identity and Access Management 「 for AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/security-iam.html) 」トピックを参照してください。
+ 既存の AWS Lambda 関数がある、または作成方法に精通している。Lambda 関数を作成する方法については、 *AWS Lambda デベロッパーガイド*の[「最初の Lambda 関数を作成する](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html)」トピックを参照してください。

## Lambda 関数の呼び出し
<a name="invoke-lam-func"></a>

 AWS アカウントから VS Code に Lambda 関数を呼び出すには、次の手順を実行します。

1. から AWS Toolkit for Visual Studio Code、 AWS エクスプローラーを展開します。

1.  AWS エクスプローラーから、**Lambda** を展開して Lambda リソースを表示します。

1. 呼び出す Lambda 関数のコンテキストメニューを開き (右クリック）、**[クラウドで呼び出し]** を選択するか、**[クラウドで呼び出し]** アイコンを選択して、VS Code で **[Remote invoke configuration]** メニューを開きます。

1. **[Remote invoke configuration]** メニューから、**ペイロード**設定を指定し、イベントに必要な情報を追加します。
**注記**  
最初の呼び出しプロセスは、 AWS エクスプローラー**のクラウドで呼び出し**を選択するとすぐに実行を開始できます。VS Code ターミナルの **OUTPUT** タブに出力が表示されます。

1. **[Remote Invoke]** ボタンを選択して関数を呼び出します。VS Code ターミナルの **OUTPUT** タブに出力が表示されます。

## Lambda 関数の削除
<a name="delete-lambda"></a>

Lambda 関数を削除するには、次の手順を実行します。

**警告**  
この手順は、[CloudFormation](https://docs.aws.amazon.com/cloudformation/) に関連付けられている Lambda 関数の削除には使用しないでください。これらの関数は、 CloudFormation スタックを通じて削除する必要があります。

1. から AWS Toolkit for Visual Studio Code、 AWS エクスプローラーを展開します。

1.  AWS エクスプローラーから、**Lambda** を展開して Lambda リソースを表示します。

1. 削除する Lambda 関数を右クリックし、**[削除]** を選択します。

1. プロンプトが表示されたら、関数を削除することに同意します。

関数が削除されると、 AWS エクスプローラーに表示されなくなります。

## Lambda 関数のダウンロード
<a name="import-lambda"></a>

リモート Lambda 関数から VS Code ワークスペースにコードをダウンロードして、編集とデバッグを行うことができます。

**注記**  
Lambda 関数をダウンロードするには、アクセス可能なフォルダを持つ VS Code ワークスペースで作業する必要があり、 AWS Toolkit は Node.js および Python ランタイムを使用する Lambda 関数でのみこの機能をサポートします。

1. から AWS Toolkit for Visual Studio Code、 AWS エクスプローラーを展開します。

1.  AWS エクスプローラーから、**Lambda** を展開して Lambda リソースを表示します。

1. ダウンロードする Lambda 関数を右クリックし、**[ダウンロード]** を選択します。

1. Lambda 関数が VS Code エディタで開き、ダウンロードが完了すると AWS エクスプローラーに表示されます。 AWS Toolkit は、VS Code 実行パネルにも*起動設定*を作成し、 を使用して Lambda 関数をローカルで実行およびデバッグできるようにします AWS Serverless Application Model。の使用の詳細については AWS SAM、「」を参照してください[テンプレートからのサーバーレスアプリケーションの実行とデバッグ (ローカル)](sam-get-started.md#serverless-apps-debug)。

## 新しい Lambda 関数の更新のデプロイ
<a name="deploy-lambda"></a>

ローカルマシンの指定されていない一時的な場所から、新しい Lambda 関数に更新をデプロイできます。

**注記**  
Lambda ファイルにデプロイされていない変更がある場合、VS Code エディタと AWS エクスプローラーで変更されたファイルの横に表示される **[M]** アイコンによって通知されます。

**VS Code エディタからのデプロイ**

1. VS Code エディタで Lambda 関数からファイルを開き、ファイルを変更します。

1. VS Code のメインメニューから手動で保存するか、 **option\$1s** (Mac) または **ctrl\$1s** (Windows) を押します。

1. VS Code に、クラウドへの変更のデプロイを求めるプロンプトが表示されます。**Deploy** ボタンを選択してデプロイに同意します。

1. VS Code にデプロイの最新ステータスが表示され、プロセスが完了すると通知します。

**AWS Explorer からのデプロイ**

1. VS Code エディタで Lambda 関数からファイルを開き、ファイルを変更します。

1. Toolkit から AWS 、 AWS エクスプローラーを展開します。

1.  AWS エクスプローラーから、変更をデプロイする Lambda 関数を使用して AWS リージョンを展開します。

1.  AWS リージョンから Lambda を展開し、変更をデプロイする関数に移動します。

1. 関数の横にあるクイックメニューから、**[コードの保存とデプロイ]** アイコンを選択します。

1. VS Code にデプロイの最新ステータスが表示され、プロセスが完了すると通知します。

## 既存の Lambda 関数の更新のアップロード
<a name="upload-lambda"></a>

次の手順では、既存の Lambda 関数に加えられたローカルでの変更をアップロードする方法について説明します。この機能は、Lambda がサポートするすべてのランタイムによるアップロードをサポートします。

**警告**  
Lambda 関数をアップロードする前に、次の点に注意してください。  
この方法でコードを更新しても、デプロイに AWS SAM CLI を使用したり、 CloudFormation スタックを作成したりすることはありません。
Toolkit AWS はコードを検証しません。クラウドに変更をアップロードする前にコードを検証し、関数をテストしてください。

**Zip アーカイブのアップロード**

1. から AWS Toolkit for Visual Studio Code、 AWS エクスプローラーを展開します。

1.  AWS エクスプローラーから、**Lambda** を展開して Lambda リソースを表示します。

1. 変更をアップロードする Lambda 関数を右クリックし、**[Lambda のアップロード...]** を選択して **[アップロードタイプの選択]** メニューを開きます。

1. **[ZIP アーカイブ]** を選択して、ローカルディレクトリ内の `ZIP Archive` を見つけます。

1. プロンプトが表示されたら、アップロードの内容を確認して、選択した `ZIP Archive` のアップロードを開始します。

1. VS Code にアップロードのステータスが表示され、アップロードプロセスが完了すると通知されます。

**ビルドせずにディレクトリをアップロードする**

1. から AWS Toolkit for Visual Studio Code、 AWS エクスプローラーを展開します。

1.  AWS エクスプローラーから、**Lambda** を展開して Lambda リソースを表示します。

1. 変更をアップロードする Lambda 関数を右クリックし、**[Lambda のアップロード...]** を選択して **[アップロードタイプの選択]** メニューを開きます。

1. **[ディレクトリ]** を選択して、**[ディレクトリのビルド]** 画面に進みます。

1. **[ディレクトリのビルド]** 画面で、**[いいえ]** を選択してアップロードするローカルディレクトリを選択します。

1. プロンプトが表示されたら、アップロードの内容を確認して、選択したディレクトリをアップロードします。

1. VS Code にアップロードのステータスが表示され、アップロードプロセスが完了すると通知されます。

**ビルドでディレクトリをアップロードする**
**注記**  
以下の点に注意してください。  
この手順には CLI AWS Serverless Application Model が必要です。
Toolkit は、アップロード前に一致するハンドラーを検出できないこと AWS を通知します。
Lambda 関数にアタッチされているハンドラーを変更するには、 AWS Lambda console または を使用します AWS Command Line Interface。

1. から AWS Toolkit for Visual Studio Code、 AWS エクスプローラーを展開します。

1.  AWS エクスプローラーから、**Lambda** を展開して Lambda リソースを表示します。

1. 変更をアップロードする Lambda 関数を右クリックし、**[Lambda のアップロード...]** を選択して **[アップロードタイプの選択]** メニューを開きます。

1. **[ディレクトリ]** を選択して、**[ディレクトリのビルド]** 画面に進みます。

1. **[ディレクトリのビルド]** 画面で **[はい]** を選択し、アップロードするローカルディレクトリを選択します。

1. プロンプトが表示されたら、アップロードの内容を確認して、選択したディレクトリのビルドとアップロードを開始します。

1. VS Code にアップロードのステータスが表示され、アップロードプロセスが完了すると通知されます。

## Lambda 関数を AWS SAM プロジェクトに変換する
<a name="lambda-sam"></a>

Lambda 関数を AWS SAM スタックに変換するには、次の手順を実行します。

**警告**  
現在、Lambda 関数を AWS SAM プロジェクトに変換する場合にサポートされているのは一部のリソースのみです。変換後に不足しているリソースを見つけるには、Lambda コンソールを確認し、 AWS SAM テンプレートに手動で追加します。サポートされているリソースとサポートされていないリソースの詳細については、「 *AWS CloudFormation デベロッパーガイド*」の「[リソースタイプのサポート](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/resource-import-supported-resources.html)」トピックを参照してください。

1. Toolkit から AWS 、 AWS エクスプローラーを展開します。

1.  AWS エクスプローラーから、 AWS SAM プロジェクトに変換する Lambda 関数を使用して AWS リージョンを展開します。

1.  AWS リージョンから Lambda を展開し、 AWS SAM スタックに変換する関数に移動します。

1. Lambda 関数の横にあるクイックメニューから、**[SAM アプリケーションに変換]** アイコンを選択してローカルファイルシステムを参照し、新しい AWS SAM プロジェクトの場所を指定します。

1.  AWS Toolkit が Lambda 関数の AWS SAM プロジェクトへの変換を開始する場所を指定すると、VS Code はプロセスのステータスに関する更新を提供します。
**注記**  
このプロセスには数分かかることがあります。

1. VS Code からプロンプトが表示されたら、スタック名を入力し、**Enter** キーを押して続行します。

1. VS Code はプロジェクトのステータスを引き続き更新し、プロセスが完了すると に通知し、新しい AWS SAM プロジェクトを VS Code ワークスペースとして開きます。

# AWS Lambda console IDE へ
<a name="lambda-console-ide"></a>

IDE AWS Lambda console への 機能を使用すると、 から VS Code AWS Lambda console に AWS Lambda 関数をダウンロードできます。VS Code で Lambda 関数を使用すると、 AWS Serverless Application Model (AWS SAM) や などの他のローカル開発オプションにアクセスできます AWS Cloud Development Kit (AWS CDK)。

詳細については AWS Lambda、「 [AWS Lambda](https://docs.aws.amazon.com//lambda/latest/dg/welcome.html)デベロッパーガイド」を参照してください。 AWS Toolkit で Lambda 関数の使用を開始するには、このユーザーガイドの[AWS Lambda 「関数の使用](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/remote-lambda.html)」トピックを参照してください。以下のセクションでは、ワークフローを Lambda コンソールから VS Code に移動する方法について説明します。Lambda コンソールの使用を開始する方法を含む、Lambda 関数を Lambda コンソールから VS Code に移動する方法の詳細については、「*AWS Lambda デベロッパーガイド*」の「[VS Code を使用した Lambda 関数のローカル開発](https://docs.aws.amazon.com/lambda/latest/dg/foundation-iac-local-development.html)」トピックを参照してください。

## コンソールからローカル開発への移行
<a name="w2aac17c43c13b7"></a>

VS Code で Lambda 関数を Lambda コンソールから開くには、次の手順を実行します。

1. ブラウザで [Lambda コンソール](https://console.aws.amazon.com/lambda)を開きます。

1. Lambda コンソールから、VS Code で開く関数を選択します。

1. 関数ビューから、**[コードソース]** タブに移動します。

1. **[コードソース]** タブから、**[VS Code で開く]** を選択します。

## VS Code での Lambda 関数の使用
<a name="w2aac17c43c13b9"></a>

Lambda コンソールを介して VS Code で Lambda 関数が開いた場合、以下のことが起こります。
+ VS Code がローカルマシンで自動的に起動します。
+ Lambda 関数が VS Code ワークスペースとして開きます。
+ Lambda `handler file` が VS Code エディタで開きます。
**注記**  
ワークスペースに正しく設定された `handler file` がない場合、VS Code エディタでファイルが開きます。

Lambda コンソールを使用して VS Code で Lambda 関数を開くと、フル言語サポート、ローカルテスト、リモートデバッグ、デプロイサポート、依存関係管理を使用して関数コードを編集する機能など、既存の AWS Toolkit Lambda のすべての機能にアクセスできます。Toolkit でサポートされている Lambda 機能の詳細については AWS 、このユーザーガイド[AWS Lambda](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/building-lambda.html)のサービス目次を参照してください。

# AWS Lambda LocalStack をサポートする
<a name="lambda-localstack"></a>

 AWS Toolkit for Visual Studio Codeでの LocalStack のサポートによって、サーバーレスアプリケーションを構築、テスト、デバッグします。LocalStack は、サーバーレスアプリケーションのローカルテストを可能にする AWS クラウドエミュレータです。

詳細については AWS Lambda、「 [AWS Lambda](https://docs.aws.amazon.com//lambda/latest/dg/welcome.html)*デベロッパーガイド*」を参照してください。LocalStack の詳細については、[LocalStack](https://www.localstack.cloud/) のウェブサイトを参照してください。

## 前提条件
<a name="prereq"></a>

 以下は、VS Code で LocalStack を使用するための前提条件です。

**注記**  
LocalStack CLI はセットアッププロセス中にインストールされますが、別のバージョンの LocalStack CLI を使用する場合、最低でもバージョン *4.8.0* が必要です。
+ 無料および有料の LocalStack 階層で使用できるすべての機能にアクセスするには、LocalStack ウェブアプリケーションアカウントが必要です。LocalStack Community エディションは、 アカウントなしで使用できます。
+ VS Code で LocalStack を使用するには Docker が必要です。Docker の LocalStack 要件の詳細については、LocalStack ドキュメントの「LocalStack [Docker イメージ](https://docs.localstack.cloud/aws/capabilities/config/docker-images/)」トピックを参照してください。
+ **推奨:** AWS Command Line Interface (AWS CLI) は、シミュレートされたクラウド環境でのサービスの使用を支援します。

## LocalStack のインストール
<a name="install"></a>

 LocalStack の無料および有料階層バージョンをインストールするには、次の手順を実行します。

**注記**  
LocalStack Community エディションをセットアアップする方法については、このトピックの「*LocalStack のセットアップ*」セクションの「*LocalStack Community*」コンテンツを参照してください。

1. Toolkit から AWS 、**APPLICATION BUILDER **エクスプローラーを展開します。

1. **[チュートリアルを選択]** ボタンを選択して、VS Code エディタの **[Get started building your application]** のチュートリアルタブタブを開きます。

1. チュートリアルから **[Install LocalStack]** を選択して、VS Code で LocalStack のインストールプロセスを開始します。

## LocalStack のセットアップ
<a name="setup"></a>

VS Code の LocalStack 拡張機能をインストールすると、セットアップが必要な場合に次のいずれかのインジケータが表示されることがあります。
+ デフォルトでは IDE の左下隅にある VS Code ステータスバーで、LocalStack のステータスが赤になります。
+ VS Code に LocalStack を設定するようにプロンプトが表示されます。

LocalStack のセットアップと設定には、使用している LocalStack のバージョンに応じて 2 種類あります。以下のタブ付きセクションでは、各 LocalStack セットアッププロセスについて説明します。

**注記**  
LocalStack の無料および有料階層バージョンには LocalStack 認証トークンが必要です。LocalStack の料金の詳細については、料金ガイドである「[プランの選択](https://www.localstack.cloud/pricing)」を参照してください。

### LocalStack の無料階層と有料階層
<a name="free-paid"></a>

LocalStack をセットアップする方法は 2 つあります。
+ VS Code の **[Setup LocalStack to get started]** プロンプトで、**[Setup]** ボタンを選択します。
+ VS Code ステータスバーから、LocalStack ステータスアイコンを選択して **[Setup LocalStack to get started]** プロンプトを開き、**[Setup]** ボタンを選択します。

セットアップ中、システムは次のステップを実行します。

1. LocalStack CLI をインストールします。

1. LocalStack アカウントがあるかどうかをチェックします。

1. LocalStack アカウントをお持ちの場合、システムはデフォルトのウェブブラウザで認証プロセスをガイドします。同様に、LocalStack アカウントがない場合、システムは認証プロセスの前にアカウントのセットアップをガイドします。

LocalStack のセットアップが完了すると、VS Code ステータスバーの LocalStack ステータスが更新されます。

**注記**  
LocalStack のプロファイルを作成していない場合は、LocalStack のセットアッププロセスの一環として新しい AWS プロファイルが自動的に作成されます。

### LocalStack Community
<a name="community"></a>

LocalStack Community エディションは無料で使用でき、アカウントにサインアップする必要はありません。これは、ライセンスを必要としない Docker イメージから実行されます。LocalStack Community Edition の詳細については、「[LocalStack Community イメージ](https://docs.localstack.cloud/references/docker-images/)」ドキュメントを参照してください。以下のセクションでは、VS Code で LocalStack Community エディションを使用するために必要な前提条件と基本的なセットアップについて説明します。

**新しいインスタンスの起動**

 LocalStack Community の新しいインスタンスを起動するには、次の手順を実行します。

**注記**  
次の例では、ポート 4566 で LocalStack のコンテナインスタンスを起動します。異なるポート値を指定する場合は、「 * AWS CLI と AWS Toolkit の設定*」セクションにある手順で指定されたポート値を更新する必要があります。

1. VS Code から、**ctrl \$1 `(backtick)** を押して VS Code ターミナルを開きます。

1. ターミナルウィンドウで、以下を入力します。

   **Mac:**

   ```
   docker run -d --name localstack_main \
   >> -p 4566:4566 \
   >> -v /var/run/docker.sock:/var/run/docker.sock \
   >> localstack/localstack
   ```

   **Windows:**

   ```
   docker run -d --name localstack_main `
   >> -p 4566:4566 `
   >> -v /var/run/docker.sock:/var/run/docker.sock `
   >> localstack/localstack
   ```

1. プロセスが完了すると、ターミナルで Docker インスタンスのステータスが更新されます。

LocalStack のこのコンテナ化されたインスタンスでは、ダウンロードプロセス中に指定した AWS サービスにアクセスできます。

**LocalStack と Docker 用の CLI の設定。**

 Docker で LocalStack と連携するように AWS CLI と AWS Toolkit を設定するには、次の手順を実行して新しいプロファイルを設定します。

1. VS Code から、**ctrl \$1 `(backtick)** を押して VS Code ターミナルを開きます。

1. ターミナルウィンドウで、以下を入力します。

   ```
   ~/.aws/credentials
   [localstack]
   aws_access_key_id = test
   aws_secret_access_key = test
   ~/.aws/config
   [profile localstack]
   region = us-east-1
   output = json
   endpoint_url = http://localhost:4566 [default localstack endpoint]
   ```

1.  AWS Toolkit は LocalStack プロファイルを検出し、接続ステータスメニューを更新します。

セットアップ後、ステータスバーのプロファイルセクションから LocalStack AWS プロファイルを選択すると、LocalStack リソースが AWS エクスプローラーに表示されます。さらに、VS Code ターミナルの **[Output]** タブで LocalStack ログを表示できます。

## VS Code での LocalStack の開始
<a name="w2aac17c43c17c13"></a>

次のいずれかの方法で LocalStack の使用を開始できます。

**VS Code ステータスバーからの LocalStack の開始**

1. VS Code からステータスバーに移動し、**[Start LocalStack]** ボタンを選択して LocalStack を起動します。

1. LocalStack が正常に起動すると、VS Code ステータスバーが更新されます。

**VS Code **コマンドパレット** からの LocalStack の開始**

1. VS Code で **Cmd \$1 Shift \$1 P** (Mac) または **Control \$1 Shift \$1 P** (Windows) を押して、**コマンドパレット**を開きます。

1. **コマンドパレット**から、検索バーに **Start LocalStack** と入力し、結果に表示されたら選択します。

1. LocalStack が正常に起動すると、VS Code ステータスバーが更新されます。

**VS Code ターミナルからの LocalStack の開始**

1. VS Code から、**ctrl \$1 `(backtick)** を押して VS Code ターミナルを開きます。

1. VS Code ターミナルから、**localstack start** CLI コマンドを入力します。

1. LocalStack が正常に起動すると、VS Code ステータスバーが更新されます。

## サンプルサーバーレスアプリケーションのビルド
<a name="serverless"></a>

 VS Code で LocalStack の使用を開始するには、サンプルサーバーレスアプリケーションが必要です。 AWS アカウントに既存のアプリケーションがある場合は、LocalStack を使用してローカルにデプロイすることも、 AWS Serverless Land を使用して新しいアプリケーションを作成することもできます。

 AWS ツールキットで Serverless Land を使用してアプリケーションを作成する方法の詳細については、本ユーザーガイドの「[AWS Serverless Land の使用](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/serverlessland-overview.html)」トピックを参照してください。Serverless Land の詳細については、[Serverless Land](https://serverlessland.com/) ウェブアプリケーションのメインランディングページを参照してください。

## LocalStack を使用した Lambda 関数のテストとデバッグ
<a name="test-debug"></a>

LocalStack VS Code 拡張機能での Lambda 関数のテストとデバッグは、 AWS クラウドにデプロイされた関数の操作に似ています。主な違いは、LocalStack を使用して関数をデプロイおよびデバッグするために、 AWS ツールキットインスタンスを LocalStack アカウントで認証する必要があることです。

**注記**  
このセクションで説明するテストおよびデバッグ機能は、LocalStack Community エディションでは使用できません。  
VS Code で LocalStack を使用するには、 AWS ツールキットの LocalStack プロファイルに接続します。LocalStack プロファイルがアクティブな場合、VS Code ステータスバーには **AWS: profile:localstack (カスタムエンドポイント)** とチェックマークが表示されます。

 AWS Toolkit での Lambda 関数の使用の詳細については、このユーザーガイドの[AWS Lambda 関数の使用](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/remote-lambda.html)トピックを参照してください。

# AWS Lambda リモートデバッグ
<a name="lambda-remote-debug"></a>

 AWS Toolkit for Visual Studio Code を使用すると、クラウドで実行されている AWS Lambda 関数を VS Code で直接デバッグできます。 AWS Lambda リモートデバッグを使用すると、既存の開発ワークフローを変更することなく、実行中の関数の検査、ブレークポイントの設定、変数の検査、ステップスルーデバッグを行うことができます。

以下のセクションでは、 AWS Toolkit for Visual Studio Codeで Lambda リモートデバッグを使用する方法について説明します。

## Lambda リモートデバッグの仕組み
<a name="w2aac17c43c19b7"></a>

Toolkit は、追加の Lambda デバッグレイヤーを使用して Lambda 関数を一時的に変更し、Lambda 呼び出しタイムアウト制限を 900 秒に延長することで、リモートデバッグ AWS を有効にします。 AWS IoT セキュアトンネリングを使用して、ローカルデバッガーと Lambda ランタイム環境の間に安全な接続が確立されます。この接続により、ローカルコードブレークポイントを使用して、関数がリモートで実行される際にステップ実行できます。デバッグセッションが完了すると、すべての一時的な変更は自動的に元の設定に戻ります。

## 開始方法
<a name="w2aac17c43c19b9"></a>

### ランタイムのサポート
<a name="w2aac17c43c19b9b3"></a>

Lambda リモートデバッグは、次のランタイムをサポートしています。
+ Python (Amazon Linux 2023)
+ Java
+ Typescript/JavaScript/Node.js (Amazon Linux 2023)

**注記**  
Lambda マネージドインスタンスと OCI イメージ関数タイプは、Lambda リモートデバッグではサポートされていません。

### 前提条件
<a name="w2aac17c43c19b9b5"></a>

開始するには、以下の前提条件を満たしておく必要があります。
+ Toolkit で有効な AWS 認証情報を設定する必要があります AWS 。 AWS Toolkit のインストールと認証情報の設定の詳細については、このユーザーガイドの[「開始方法](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/setting-up.html)」トピックを参照してください。
+ Lambda 関数が AWS アカウントにデプロイされました。Lambda 関数のデプロイの詳細については、「*AWS Lambda* デベロッパーガイド」の「[最初の Lambda 関数の作成](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html)」トピックを参照してください。
+ 関数をデバッグするには、適切な AWS Identity and Access Management (IAM) ポリシーとアクセス許可が必要です。Lambda のアクセス許可の詳細については、「*AWS Lambda* デベロッパーガイド」の「[AWS LambdaのAWS 管理ポリシー](https://docs.aws.amazon.com//lambda/latest/dg/security-iam-awsmanpol.html)」トピックを参照してください。以下は、 AWS ツールキットで Lambda リモートデバッグを使用するために必要な最低限のアクセス許可を含むポリシーの例です。
**注記**  
リモートデバッグは、 AWS AWS IoT セキュアトンネリングを通じて有効になります。これにより、ローカルデバッガーは Lambda ランタイム環境への安全な接続を確立できます。

  ```
  {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lambda:ListFunctions",
          "lambda:GetFunction",
          "lambda:GetFunctionConfiguration",
          "lambda:GetLayerVersion",
          "lambda:UpdateFunctionConfiguration",
          "lambda:InvokeFunction",
          "lambda:PublishVersion",
          "lambda:DeleteFunction",
          "iot:OpenTunnel",
          "iot:RotateTunnelAccessToken",
          "iot:ListTunnels"
        ],
        "Resource": "*"
      }
    ]
  }
  ```

## Lambda リモートデバッグへのアクセス
<a name="w2aac17c43c19c11"></a>

 AWS Toolkit で Lambda リモートデバッグにアクセスするには、 AWS エクスプローラーまたは Application Builder エクスプローラーの 2 つの主要なパスがあります。 AWS エクスプローラーから、ノードを介して AWS Lambda Lambda リモートデバッグにアクセスできます。アプリケーションビルダーエクスプローラーから、ローカル AWS SAM プロジェクトを通じて Lambda リモートデバッグにアクセスできます。

**AWS エクスプローラーからの Lambda リモートデバッグへのアクセス**

1. VS Code から Toolkit AWS 拡張機能を開きます。

1. Toolkit から AWS 、 AWS エクスプローラーを展開します。

1. エクスプローラーから、**[Lambda]** ノードを展開します。

1. デバッグする関数に移動し、コンテキストメニューから **[リモート呼び出し]** アイコンを選択して **[リモート呼び出し設定]** 画面を開きます。

**アプリケーションビルダーエクスプローラーからの Lambda リモートデバッグへのアクセス。**

1. VS Code から Toolkit AWS 拡張機能を開きます。

1.  AWS Toolkit から、Application Builder Explorer を展開します。

1. エクスプローラーから、デバッグする Lambda プロジェクトを含む `AWS SAM` プロジェクトを展開します。

1. デバッグする、デプロイされた `Lambda` 関数を展開します。

1. リモート関数に移動し、コンテキストメニューから **[リモート呼び出し]** アイコンを選択して **[リモート呼び出し設定]** 画面を開きます。

## Lambda リモートデバッグの使用
<a name="w2aac17c43c19c13"></a>

以下のセクションでは、 AWS Toolkit for Visual Studio Codeで Lambda リモートデバッグを使用する方法について説明します。

**注記**  
Lambda 関数には、関数コードとアタッチされたすべてのレイヤーに対して、5 つのレイヤーと合計 250 MB の制限があります。Lambda リモートデバッグを実行するには、少なくとも 1 つの空きレイヤーが必要です。

### デバッグセッションの設定
<a name="w2aac17c43c19c13b7"></a>

開始する前に、次の手順を実行してデバッグセッションを設定します。

1. * AWS エクスプローラーからの Lambda リモートデバッグへのアクセス*または前のセクションにある *Application Builder エクスプローラーからの Lambda リモートデバッグへのアクセス*の手順を完了して、**リモート呼び出し設定**メニューを開きます。

1. **[リモート呼び出し設定]** メニューから、**[リモートデバッグ]** チェックボックスを選択してリモートデバッグプロパティを表示します。

1. ローカルハンドラーファイルへの**ローカルルートパス**を指定します。
**注記**  
ローカルルートパスは、デプロイされた Lambda 関数に一致するソースコードの場所です。アプリケーションビルダーエクスプローラーでデプロイされた関数から作業している場合、ローカルルートパスが自動的に検出されます。  
ローカルに保存されたソースコードがない場合は、**[リモートコードのダウンロード]** ボタンを選択して Lambda 関数のソースコードを取得します。これにより、VS Code エディタで `handler file` が開きます。

1. **[Payload]** セクションで、テストイベントデータを取得する場所を指定します。

### ブレークポイントの設定とデバッグ
<a name="w2aac17c43c19c13b9"></a>

ブレークポイントを設定し、次の手順を実行してデバッグを開始します。

1. VS Code エディタの `handler file` から、余白部分をクリックして、デバッグを一時停止する行番号にブレークポイントを設定します。

1. ブレークポイントに問題がなければ、**[リモート呼び出し設定]** メニューに戻り、設定が正しく構成されていることを確認します。次に **[リモート呼び出し]** ボタンを選択してデバッグを開始します。

1.  AWS Toolkit は、Lambda 関数をデバッグ機能で更新し、デバッグセッションのセキュアトンネルを確立し、指定されたペイロードで関数を呼び出し、ブレークポイントに達するとプロセスを一時停止します。

1. ブレークポイントの一時停止時に、**[実行およびデバッグ]** ペインを使用して **[変数]**、**[呼び出しスタック]**、**[ブレークポイント]** を表示します。

### 関数の更新とテスト
<a name="w2aac17c43c19c13c11"></a>

クイックデプロイでコードを変更し、変更をテストするには、次の手順を実行します。

1. デバッグセッションをアクティブにした状態で、VS Code エディタで `handler file` を変更します。

1. 変更内容を保存します (**Command\$1S on macOS**、**Ctrl\$1S on Windows**)。

1. プロンプトが表示されたら、変更をデプロイすることに同意します。Toolkit AWS は、変更されたコードで Lambda 関数を更新します。

1. 新しいブレークポイントを設定し、**[リモート呼び出し]** ボタンを再度選択して、変更のデバッグとテストを続行します。
**注記**  
 または、VS Code デバッグコントロールで **[Attach debugger]** オプションの選択を解除し、**[リモート呼び出し]** ボタンを選択してデバッグなしで関数を実行できます。

### デバッグセッションの終了
<a name="w2aac17c43c19c13c13"></a>

次の各オプションにより、リモートデバッグセッションが終了し、プロジェクトからデバッグレイヤーが削除されます。
+ [**リモート呼び出し設定**] 画面から [**デバッグセットアップを削除**] を選択します。
+ VS Code のデバッグコントロールで **[disconnect]** アイコンを選択します。
+ VS Code エディタで `handler file` を閉じます。

**注記**  
以下の情報を記録します。  
Lambda デバッグレイヤーは、60 秒間非アクティブ状態が続くと自動的に削除されます。最後の呼び出しの完了時からカウントが開始されます。
デバッグプロセス中に infrastructure-as-code (IaC) マネージド (AWS SAM、 AWS CDK、Terraform) 関数にコード変更を加えた場合は、ローカルプロジェクトに保存し、ソースコントロールリポジトリの更新を検討してください。保存されていない変更は、IaC 関数が再デプロイされると上書きされます。
デバッグのみを目的として一時的な変更を加えた場合は、ソースコントロールから関数を再デプロイして、本番コードと一致するようにすることを推奨します。

### ソースマップを使用した TypeScript Lambda 関数のデバッグ
<a name="typescript-source-maps"></a>

以下のセクションでは、ソースマップを使用して TypeScript Lambda 関数をデバッグする方法について説明します。

#### 前提条件
<a name="w2aac17c43c19c13c15b5"></a>

TypeScript Lambda 関数をデバッグするには、次の前提条件を満たす必要があります。
+ TypeScript は、ソースマップオプションを有効にしてコンパイルする必要があります。詳細については、VS Code ドキュメントの「[JavaScript のソースマップのサポート](https://code.visualstudio.com/docs/typescript/typescript-debugging#_javascript-source-map-support)」トピックを参照してください。
+ インラインソースマップはサポートされていません。ソースマップを保存するには、別の `.js.map` ファイルを使用する必要があります。

#### 設定
<a name="w2aac17c43c19c13c15b7"></a>

 AWS Toolkit で TypeScript Lambda 関数の Lambda リモートデバッグを設定するには、次の手順を実行します。

1. Toolkit から AWS 、 AWS エクスプローラーを展開します。

1. エクスプローラーから、**[Lambda]** ノードを展開します。

1. TypeScript を設定する関数に移動し、コンテキストメニューから **[リモート呼び出し]** アイコンを選択して **[リモート呼び出し設定]** 画面を開きます。

1. リモートデバッグを有効にするには、**[リモートデバッグ]** チェックボックスをオンにします。

1. `TypeScript handler file` ディレクトリを指すように、**ローカルルートパス**を設定します。
**注記**  
`TypeScript handler file` は、デバッグブレークポイントを設定する場所です。

1. **[リモートデバッグの追加設定]** を展開します。

1. **[ソースマップ]** チェックボックスをオンにして、ソースマッピングを有効にします。

1. **[Out files]** フィールドを Lambda 関数のコピーのローカルディレクトリに設定します。  
**Example**  

   `app.js` と `app.map` が `.aws-sam/build/HelloWorldFunction` にある場合は、**[Out files]** の場所を `/Users/user/project/aws-sam/build/HelloWorldFunction/*` にします。
**注記**  
**Out file** パスは絶対パスである必要があります。  
 AWS SAM および AWS CDK プロジェクトの場合、 AWS Toolkit はソースマップの自動検出をサポートします。これらのプロジェクトで **Out files** フィールドが空のままの場合、ツールキットは自動的にソースマップの場所を検出しようとします。

1. 設定に問題がなければ、**[リモート呼び出し]** ボタンを選択して TypeScript 関数のデバッグを開始します。

## トラブルシューティングと高度なユースケース
<a name="troubleshooting"></a>

デバッグセッションが失敗した場合は、以下の手順を実行してトラブルシューティングプロセスを開始します。

1.  AWS Toolkit を最新バージョンに更新します。

1. **[リモート呼び出し設定]**ウェブビューを閉じ、再度開くことで、ウェブビューを更新します。

1. VS Code を完全に閉じ、再度開くことで、VS Code を再起動します。

1. VS Code コマンドパレットを開き、コマンド **AWS: Reset Lambda Remote Debugging Snapshot** を入力します。結果に表示されたら選択肢、Lambda リモートデバッグスナップショットをリセットします。

1. 問題をトラブルシューティングできない場合は、[AWS Toolkit for Visual Studio Code GitHub Issues](https://github.com/aws/aws-toolkit-vscode/issues) に問題を送信してください。

### 高度なユースケース: コード署名設定
<a name="troubleshooting-code-signing-configuration"></a>

リモートデバッグでは、Lambda 関数にデバッグレイヤーをアタッチする必要があります。関数でコード署名設定が有効で強制されている場合、 AWS Toolkit はデバッグレイヤーを関数に自動的にアタッチできません。

コード署名設定の問題を解決するには、2 つのオプションがあります。
+ コード署名を一時的に削除する。
+ 署名付きデバッグレイヤーを使用する。

#### コード署名の一時的な削除
<a name="troubleshooting-code-signing-configuration-temp-remove"></a>

`UntrustedArtifactOnDeployment : Warn` を設定してコード署名設定を更新し、デバッグプロセスの完了後に再度有効にして `Enforced` に戻します。

詳細については、「*AWS Lambda API リファレンス*」の [UpdateCodeSigningConfig](https://docs.aws.amazon.com//lambda/latest/api/API_UpdateCodeSigningConfig.html) リファレンスを参照してください。

#### 署名付きデバッグレイヤーの使用
<a name="troubleshooting-code-signing-configuration-signed-debug-layer"></a>

1. Toolkit の Lambda リモートデバッグから AWS 、**リモートデバッグの追加設定**セクションを展開します。

1. **[リモートデバッグの追加設定]** セクションで、**[レイヤーオーバーライド]** フィールドからリージョンレイヤー ARN をコピーします。

1. から AWS CLI、次のコマンドを使用してレイヤーバージョン をダウンロードし`aws lambda get-layer-version-by-arn --arn layer-arn`、 *Layer-arn* をレイヤー ARN に置き換えます。署名付きデバッグレイヤーをダウンロードする詳細な手順については、「*AWS CLI コマンドリファレンス*」の [get-layer-version-by-arn](https://docs.aws.amazon.com/cli/latest/reference/lambda/get-layer-version-by-arn.html) リファレンスを参照してください。

1. コード署名設定でレイヤーに署名し、アカウントに公開します。署名と公開のガイダンスについては、「 *AWS Serverless Application Model デベロッパーガイド*」の[AWS SAM 「アプリケーション用のコード署名の設定](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/authoring-codesigning.html)」トピックを参照してください。

1. レイヤーに署名してアカウントに公開したら、Lambda リモートデバッグの **[リモートデバッグの追加設定]** セクションに戻り、新しいレイヤー ARN を **[レイヤーオーバーライド]** フィールドに入力します。プロセスが完了すると、Lambda リモートデバッグはデフォルトのレイヤーの代わりに署名付きレイヤーを使用します。

### 高度なユースケース: SnapStart またはプロビジョニングされた同時実行による関数のデバッグ
<a name="troubleshooting-snapstart-provisioned-concurrency"></a>

SnapStart またはプロビジョニングされた同時実行で設定された Lambda 関数の場合、新しいバージョンの公開にはかなりの時間がかかります。デバッグワークフローを高速化するには、新しい`$LATEST`バージョンを発行するのではなく、関数のバージョンのみを更新するように Lambda リモートデバッグを設定できます。

1. **リモート呼び出し設定**画面から、**リモートデバッグの追加設定**を展開します。

1. Publish **version** オプションの選択を解除します。

1.  AWS Toolkit は関数`$LATEST`のバージョンのみを更新し、それを使用してデバッグするようになりました。

**注記**  
`$LATEST` バージョンでのデバッグの副作用として、障害のないデバッグ環境を確保するために、`$LATEST`バージョンを呼び出す可能性のある他のトラフィックを回避する必要があります。

### サポート対象のリージョン
<a name="troubleshooting-regions"></a>

次のエラーは、リージョンでリモートデバッグがサポートされていない場合に発生します。

```
Region ${region} doesn't support remote debugging yet
```

以下は、サポートされているリージョンの一覧です。
+ ap-east-1
+ ap-northeast-1
+ ap-northeast-2
+ ap-south-1
+ ap-southeast-1
+ ap-southeast-2
+ ca-central-1
+ eu-central-1
+ eu-north-1
+ eu-west-1
+ eu-west-2
+ eu-west-3
+ me-central-1
+ me-south-1
+ sa-east-1
+ us–east–1
+ us-east-2
+ us-west-1
+ us-west-2

### Lambda RequestEntityTooLargeException
<a name="troubleshooting-storage-limit"></a>

Lambda 関数には、関数コードとアタッチされたすべてのレイヤーに対して、5 つのレイヤーと合計 250 MB の制限があります。リモートデバッグレイヤーは約 40 MB のサイズがあるため、大きな関数パッケージまたは複数のレイヤーがある場合、関数がこの制限を超える可能性があります。詳細については、「*AWS Lambda デベロッパーガイド*」の「[Lambda: InvalidParameterValueException または RequestEntityTooLargeException](https://docs.aws.amazon.com//lambda/latest/dg/troubleshooting-deployment.html#troubleshooting-deployment-InvalidParameterValueException1)」トピックセクションを参照してください。

次のリストでは、このエラーをトラブルシューティングして修正する方法について説明します。
+ **関数のサイズを小さくする**: 関数コードを最適化し、不要な依存関係を削除します。
+ **未使用のレイヤーを削除する**: デバッグ中に、必須ではないレイヤーを一時的に削除します。
+ **外部依存関係を使用する**: 大きな依存関係を Amazon S3 などの外部ストレージに移動し、ランタイムにロードします。

### Java デバッグのトラブルシューティング
<a name="troubleshooting-java-debugging"></a>

Java Lambda 関数をデバッグするには、Lambda 関数のランタイムバージョンと一致する同じ Java バージョンがローカルにインストールされている必要があります。

たとえば、Java 25 関数をデバッグする場合、 AWS Toolkit が実行されているローカル環境に Java 25 がインストールされている必要があります。Java 21 以前のバージョンがローカルにインストールされている Java 25 関数をデバッグしようとすると、リモートデバッグは設定したブレークポイントで停止できません。

デバッグセッションを開始する前に、ローカル Java バージョンが Lambda 関数のランタイムバージョンと一致していることを確認してください。

### IoT セキュアトンネリングのクォータを超過
<a name="troubleshooting-tunnel-quota"></a>

以下は、Lambda リモートデバッグの AWS IoT セキュア*トンネリング接続の日次制限に達したときに発生するトンネルクォータ超過エラー*の例です。

```
Error creating/reusing tunnel: LimitExceededException: Exceeded quota of Lambda debugging tunnels
```

AWS IoT セキュアトンネリング接続には次のクォータがあります。
+ 無料階層の IoT セキュアトンネリングには、1 日あたり 10 個の接続が割り当てられます。
+ 各トンネルは、1 つの VS Code インスタンスを最大 12 時間サポートします。
+ クォータは AWS アカウントごと、1 日あたりに適用されます。

 AWS IoT セキュアトンネリングエラーが発生した場合は、毎日のクォータのリセットを待つか、 サポートに連絡して AWS クォータ制限の引き上げをリクエストしてください。 AWS サポート連絡先情報については、[AWS サポート連絡先ポータル](https://aws.amazon.com/contact-us/)を参照してください。 AWS IoT セキュアトンネリングの詳細については、「 *AWS IoT デベロッパーガイド*」の[AWS IoT 「セキュアトンネリング](https://docs.aws.amazon.com/iot/latest/developerguide/secure-tunneling.html)」トピックを参照してください。