

# VS Code を使用した Lambda 関数のローカル開発
<a name="foundation-iac-local-development"></a>

Lambda 関数を Lambda コンソールから Visual Studio Code に移動できます。Visual Studio Code は完全な開発環境を提供し、AWS SAM や AWS CDK といったその他のローカル開発オプションも使用できます。

## ローカル開発の主要メリット
<a name="lambda-functions-vscode-benefits"></a>

Lambda コンソールは関数をすばやく編集してテストする手段を提供しますが、ローカル開発はさらに高度な機能を提供します。
+ **高度な IDE 機能**: デバッグ、コード補完、リファクタリングツール
+ **オフライン開発**: クラウドデプロイ前に変更の作業とテストをローカルに実行
+ **Infrastructure as Code 統合**: AWS SAM、AWS CDK、Infrastructure Composer とのシームレスな併用
+ **依存関係管理**: 関数の依存関係を完全に制御

## 前提条件
<a name="lambda-functions-vscode-prerequisites"></a>

VS Code で Lambda 関数のローカル開発を行う前に、以下が必要になります。
+ **VS Code**: インストール手順については、「[Download VS Code](https://code.visualstudio.com/download)」を参照してください。
+ **AWS Toolkit for Visual Studio Code**: インストール手順については、「[Setting up the AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-toolkit.html)」を参照してください。概要については、「[AWS Toolkit for Visual Studio Code](https://aws.amazon.com/visualstudiocode/)」を参照してください。
+ **AWS 認証情報**: 認証情報の設定については、「[Setting up your AWS credentials](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-credentials.html)」を参照してください。
+ **AWS SAM CLI**: インストール手順については、「[Installing the AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html)」を参照してください。
+ **インストール済みの Docker (オプションですが、ローカルテストに必要です)**: インストール手順については、「[Get Docker](https://docs.docker.com/get-docker/)」を参照してください。

**注記**  
AWS アカウントとプロファイルのローカルでの設定が既に完了している場合は、設定済みの AWS プロファイルに AdministratorAccess マネージドポリシーが追加されていることを確認してください。

## 認証とアクセスコントロール
<a name="lambda-functions-vscode-authentication-and-access-control"></a>

Lambda 関数をローカルで開発するには、クラウドでの開発と同様に、ユーザーに代わって AWS リソースにセキュアにアクセスして管理するための AWS 認証情報が必要です。AWS Toolkit for VS Code は、次の認証方法をサポートしています。

AWSToolkit for VS Code は、次の認証方法をサポートしています。
+ IAM ユーザーの長期認証情報
+ 引き受けたロールからの一時的な認証情報
+ ID フェデレーション
+ AWS アカウントのルートユーザー認証情報 (非推奨)

このセクションでは、IAM ユーザーの長期的な認証情報を使用してこれらの認証情報を取得し、設定する方法について説明します。

### IAM 認証情報を取得する
<a name="lambda-functions-vscode-iam-credentials"></a>

アクセスキーを持つ IAM ユーザーが既に存在する場合は、次のセクションのためにアクセスキー ID とシークレットアクセスキーの両方を準備しておきます。これらのキーがない場合は、次の手順に従ってキーを作成してください。

**注記**  
リクエストを認証するために、アクセスキー ID とシークレットアクセスキーの両方を使用する必要があります。

IAM ユーザーとアクセスキーを作成する

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで **[ユーザー]** を選択します。

1. **[ユーザーの作成]** を選択します。

1. **[ユーザー名]** に名前を入力し、**[次へ]** を選択します。

1. **[許可を設定]** で **[ポリシーを直接アタッチする]** を選択します。

1. **[AdministratorAccess]** を選択し、**[次へ]** を選択します。

1. **[ユーザーの作成]** を選択します。

1. 成功バナーで、**[ユーザーを表示]** を選択します。

1. **[アクセスキーの作成]** を選択します。

1. **[ユースケース]** に **[ローカルコード]** を選択します。

1. 確認チェックボックスにチェックを入れてから、**[次へ]** を選択します。

1. (オプション) 説明タグ値を入力します。

1. **[アクセスキーを作成]** を選択します。

1. アクセスキーとシークレットアクセスキーは直ちにコピーしてください。**このページを離れると、シークレットアクセスキーに再度アクセスすることはできません。**

**重要**  
シークレットキーを共有したり、ソースコントロールにコミットしたりすることが一切ないようにしてください。これらのキーはセキュアな方法で保存し、不要になったら削除します。

**注記**  
詳細については、「*IAM ユーザーガイド*」の「[AWS アカウントで IAM ユーザーを作成する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)」と「[IAM ユーザーのアクセスキーを管理する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)」を参照してください。

### AWS Toolkit を使用して AWS 認証情報を設定する
<a name="lambda-functions-vscode-configure-credentials-vscode"></a>

以下の表は、次の手順で完了する認証情報のセットアッププロセスを要約したものです。


| 実行内容 | 目的 | 
| --- | --- | 
| サインインパネルを開く | 認証を開始する | 
| コマンドパレットを使用して [AWS 新しい接続を追加] を検索する | サインイン UI にアクセスする | 
| IAM 認証情報を選択する | プログラム的なアクセス用にアクセスキーを使用する | 
| プロファイル名、アクセスキー、シークレットキーを入力する | 接続用の認証情報を入力する | 
| AWS Explorer の更新を表示する | 接続されていることを確認する | 

次の手順を完了して AWS アカウントに対する認証を行います。

1. VS Code でサインインパネルを開きます。

   1. 認証プロセスを開始するには、左側のナビゲーションペインにある AWS アイコンを選択するか、コマンドパレットを開き (Mac の場合は Cmd\$1Shift\$1P、Windows/Linux の場合は Ctrl\$1Shift\$1P)、**[AWS 新しい接続を追加]** を検索して選択します。

1. サインインパネルで **[IAM 認証情報]** を選択し、**[続行]** を選択します。
**注記**  
続行するには、VS Code 向けの AWS IDE 拡張機能がデータにアクセスできるようにする必要があります。

1. プロファイル名、アクセスキー ID、シークレットアクセスキーを入力し、**[続行]** を選択します。

1. AWS のサービスとリソースについて VS Code の AWS Explorer をチェックして、接続を確認します。

長期的な認証情報を使用した認証の設定については、「[Using long-term credentials to authenticate AWS SDKs and tools](https://docs.aws.amazon.com/sdkref/latest/guide/access-iam-users.html)」を参照してください。

認証の設定については、「AWS Toolkit for Visual Studio Code User Guide」の「[AWS IAM credentials](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-credentials.html)」を参照してください。

## コンソールからローカル開発への移行
<a name="moving-from-console-to-local-development"></a>

**注記**  
コンソール内で変更を行った場合は、デプロイされていない変更がないことを確認してからローカル開発に移行するようにしてください。

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

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

1. 関数の名前を選択します。

1. **[コードソース]** タブを選択します。

1. **[Visual Studio Code で開く]** を選択します。
**注記**  
**[Visual Studio Code で開く]** ボタンが表示されるのは、AWS Toolkit のバージョン **3.69.0** 以降のみです。これより前のバージョンの AWS Toolkit がインストールされていると、VS Code に `Cannot open the handler` メッセージが表示される場合があります。この問題を解決するには、AWS Toolkit を最新バージョンに更新します。

1. プロンプトが表示されたら、ブラウザが VS Code を開くのを許可します。

VS Code で関数を開くと、Lambda は、迅速なテストとデプロイのために設計された一時的な場所に、関数コードを伴うローカルプロジェクトを作成します。これには、ローカル開発に使用できる関数コード、依存関係、基本的なプロジェクト構造が含まれています。

VS Code での AWS の使用に関する詳細については、「*[AWS Toolkit for Visual Studio Code User Guide](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/welcome.html)*」を参照してください。

## 関数のローカル使用
<a name="working-with-functions-locally"></a>

VS Code で関数を開いたら、次の手順に従って関数にアクセスし、管理します。

1. サイドバーにある AWS アイコンを選択して、AWS Explorer を開きます。  
![\[VS Code サイドバーにある AWS Toolkit アイコン\]](http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images/console-to-ide-awsIcon.png)

1. AWS Explorer で、Lambda 関数があるリージョンを選択します。  
![\[リージョンの選択肢が表示された AWS Explorer\]](http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images/console-to-ide-lambdaTreeView.png)

1. 選択したリージョンで Lambda セクションを展開して、関数を表示し、管理します。  
![\[デプロイや呼び出しなどのアクションアイコンが表示された Lambda 関数\]](http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images/console-to-ide-lambdaActions.png)

VS Code で関数を開くと、以下を実行できます。
+ 完全な言語サポートとコード補完を使用した関数コードの編集。
+ [VS Code の LocalStack 統合](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/lambda-localstack.html)を使用して、DynamoDB テーブルからの読み取りや Amazon S3 バケットへの書き込みなど、実行中に他の AWS のサービス への API コールを行う Lambda 関数をテストします。LocalStack は、サービス統合をテストするための完全なローカル開発環境を提供するクラウドサービスエミュレーターです。[AWS SAM CLI を使用して、ローカルコンテナで関数をテスト](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-using-invoke.html)することもできます。関数が他の AWS のサービス への API コールを行う場合、それらのコールはエミュレートされたリソースではなく実際の AWS リソースに到達します。
+ ブレークポイントと変数検査を使用した関数のデバッグ。詳細については、*AWS Toolkit for Visual Studio Codeユーザーガイド*の「[コードから直接 Lambda 関数を実行およびデバッグする](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/serverless-apps-run-debug-no-template.html)」を参照してください。
+ クラウドアイコンを使用した、AWS への更新済み関数のデプロイ。
+ 関数の依存関係のインストールと管理。

詳細については、「AWS Toolkit for Visual Studio Code User Guide」の「[Working with AWS Lambda functions](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/building-lambda.html)」を参照してください。

## 関数を AWS SAM テンプレートに変換して IaC ツールを使用する
<a name="integrating-with-infrastructure-as-code"></a>

VS Code では、Lambda 関数を AWS SAM テンプレートに変換できます。これは、Lambda 関数の横にある **[AWS SAM アプリケーションに変換]** アイコンを選択することで行います。AWS SAM プロジェクトの場所を選択するように求めるプロンプトが表示されます。選択すると、Lambda 関数が `template.yaml` ファイルに変換されます。このファイルは、新しい AWS SAM プロジェクトに保存されます。

関数を AWS SAM テンプレートに変換することで、以下を実行できます。
+ インフラストラクチャのバージョニング制御
+ デプロイの自動化
+ 関数のリモートデバッグ
+ アプリケーションへの AWS リソースの追加
+ 開発ライフサイクル全体で一貫した環境の維持
+ AWS SAM テンプレートを視覚的に編集するための Infrastructure Composer の使用

IaC ツールの使用に関する詳細については、以下のガイドを参照してください。
+ [AWS Serverless Application Model Developer Guide](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html)
+ [AWS Cloud Development Kit (AWS CDK) Developer Guide](https://docs.aws.amazon.com/cdk/v2/guide/home.html)
+ [Infrastructure Composer Developer Guide](https://docs.aws.amazon.com/application-composer/latest/dg/what-is-composer.html)
+ [AWS CloudFormation ユーザーガイド](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)

これらのツールは、サーバーレスアプリケーションを定義、テスト、デプロイするための追加機能を提供します。

## 次のステップ
<a name="next-steps"></a>

VS Code での Lambda 関数の使用に関する詳細については、以下のリソースを参照してください。
+ 「AWS Toolkit for VS Code User Guide」の「[Working with AWS Lambda functions](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/building-lambda.html)」
+ 「AWS Toolkit for VS Code User Guide」の「[Working with serverless applications](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/serverless-apps.html)」
+ 「Lambda デベロッパーガイド」の「[Infrastructure as code](https://docs.aws.amazon.com/lambda/latest/dg/foundation-iac.html)」