

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

# サーバーレスアプリケーション入門
<a name="sam-get-started"></a>

以下のセクションでは、 AWS Serverless Application Model (AWS SAM) と CloudFormation スタックを使用して AWS Toolkit for Visual Studio Code、 AWS サーバーレスアプリケーション から の作成を開始する方法について説明します。

## 前提条件
<a name="serverless-apps-assumptions"></a>

を作成または操作する前に AWS サーバーレスアプリケーション、次の前提条件を満たす必要があります。

**注記**  
次の操作では、変更が完了する前に VS Code を終了または再起動する必要がある場合があります。
+  AWS SAM コマンドラインインターフェイス (CLI) をインストールします。 AWS SAM CLI のインストール方法の詳細と手順については、この*AWS Serverless Application Model ユーザーガイド*[の AWS SAM 「CLI のインストール](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html)」トピックを参照してください。
+  AWS 設定ファイルから、デフォルトの AWS リージョンを特定します。構成ファイルの詳細については、「*AWS Command Line Interface ユーザー ガイド*」の「[構成と認証情報ファイルの設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)」トピックを参照してください。
+ 言語 SDK をインストールし、ツールチェーンを設定する からツールチェーンを設定する方法の詳細については、このユーザーガイドの[「ツールチェーンの設定](setup-toolchain.md)」トピック AWS Toolkit for Visual Studio Code を参照してください。
+ VS Code マーケットプレイスから [YAML 言語サポートエクステンション](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml)をインストールします。これは、 AWS SAM テンプレートファイルの CodeLens 機能にアクセスするために必要です。CodeLens に関する追加情報については、VS Code ドキュメントの「[CodeLens](https://code.visualstudio.com/api/language-extensions/programmatic-language-features#codelens-show-actionable-context-information-within-source-code)」セクションを参照してください。

## サーバーレスアプリケーションの IAM アクセス許可
<a name="serverless-apps-permissions"></a>

Toolkit for VS Code には、サーバーレスアプリケーションをデプロイして実行するために必要な AWS Identity and Access Management (IAM) のアクセス許可を含める認証情報プロファイルが必要です。次のサービスへの適切な読み取り/書き込みアクセスが必要です: CloudFormation、IAM、Lambda、Amazon API Gateway、Amazon Simple Storage Service (Amazon S3)、Amazon Elastic Container Registry (Amazon ECR)。

サーバーレスアプリケーションのデプロイと実行に必要な認証の設定に関する追加情報については、「*AWS Serverless Application Model 開発者ガイド*」の「[リソースへのアクセスと権限の管理](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-permissions.html)」を参照してください。認証情報の設定方法の詳細については、本ユーザーガイドの[AWS IAM 認証情報](setup-credentials.md)を参照してください。

## 新しいサーバーレスアプリケーションの作成 (ローカル)
<a name="serverless-apps-create"></a>

この手順では、 を使用して Toolkit for VS Code でサーバーレスアプリケーションを作成する方法を示します AWS SAM。この手順の出力は、サンプルサーバーレスアプリケーションを含む開発ホスト上のローカルディレクトリであり、構築、ローカルテスト、変更、 AWS クラウドへのデプロイを行うことができます。<a name="serverless-apps-create-proc"></a>

1. [**Command Palette (コマンドパレット)**] を開くには、[**表示**]、[**Command Palette (コマンドパレット)**] の順に選択し、[**AWS**] と入力します。

1. **[AWS : Lambda SAM アプリケーションの作成]** を選択します。  
![コマンドパレットダイアログボックス。](http://docs.aws.amazon.com/ja_jp/toolkit-for-vscode/latest/userguide/images/sam-create-app-cmdlet-updated.png)
**注記**  
 AWS SAM CLI がインストールされていない場合は、VS Code エディタの右下隅にエラーが表示されます。この問題が発生した場合は、すべての[仮定条件と前提条件](#serverless-apps-assumptions)を満たしていることを確認します。

1.  AWS SAM アプリケーションのランタイムを選択します。
**注記**  
「(イメージ」でランタイムの 1 つを選択した場合、アプリケーションはパッケージタイプ `Image` です。「(イメージ)」を使わずにランタイムの 1 つを選択した場合、アプリケーションのタイプは `Zip` です。`Image` および `Zip` パッケージタイプの相違点の詳細については、「*AWS Lambda デベロッパーガイド*」の「[Lambda デプロイパッケージ](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html)」を参照してください。

1. 選択したランタイムによっては、SAM アプリケーションの依存関係マネージャとランタイムアーキテクチャを選択するよう求められることがあります。

------
#### [ Dependency Manager ]

   **[Gradle]** または **[Maven]** を選択します。

**注記**  
このビルド自動化ツールの選択は Java ランタイムでのみ使用できます。

------
#### [ Architecture ]

   **[x86\_64]** または **[arm64]** を選択します。

   デフォルトの x86\_64 ベースの環境ではなく、ARM64 ベースのエミュレート環境でサーバーレスアプリケーションを実行するオプションは、次のランタイムで使用できます。
   + nodejs12.x (ZIP とイメージ)
   + nodejs14.x (ZIP とイメージ)
   + python3.8 (ZIP とイメージ)
   + python3.9 (ZIP とイメージ)
   + python3.10 (ZIP とイメージ)
   + python3.11 (ZIP とイメージ)
   + python3.12 (ZIP とイメージ)
   + java8.al2 と Gradle (ZIP とイメージ)
   + java8.al2 と Maven (ZIP のみ)
   + java11 と Gradle (ZIP とイメージ)
   + java11 と Maven (ZIP のみ)

**重要**  
ARM64-based環境でアプリケーションを実行できるようにするには、 AWS CLI バージョン 1.33.0 以降をインストールする必要があります。詳細については、「[前提条件](setup-toolkit.md#setup-prereq)」を参照してください。

------

1. 新しいプロジェクトの場所を選択します。既存のワークスペースフォルダが開いている場合は、既存の**別のフォルダを選択**するか、新しいフォルダを作成して選択します。この例では、[**There are no workspace folders open**] (開いているワークスペースフォルダはありません) を選択して、`MY-SAM-APP` という名前のフォルダを作成します。

1. 新しいプロジェクトの名前を入力します。この例では `my-sam-app-nodejs` を使用します。**入力** を押した後、Toolkit for VS Code でプロジェクトが作成されるまで少し時間がかかります。

プロジェクトが作成されると、アプリケーションは現在のワークスペースに追加されます。[**Explorer**] ウィンドウに表示されます。

## サーバーレスアプリケーションを開く (ローカル)
<a name="serverless-apps-open"></a>

ローカル開発ホストでサーバーレスアプリケーションを開くには、アプリケーションのテンプレートファイルを含むフォルダを開きます。

1. [**ファイル**] メニューで、[**フォルダを開く...**] を選択します。

1. **[Open Folder]** (フォルダを開く) ダイアログボックスで、開きたいサーバーレスアプリケーションフォルダに移動します。

1. **[Select Folder]** (フォルダの選択) ボタンを選択します。

アプリケーションのフォルダを開くと、**[Explorer]** (エクスプローラ) ウィンドウに追加されます。

## テンプレートからのサーバーレスアプリケーションの実行とデバッグ (ローカル)
<a name="serverless-apps-debug"></a>

Toolkit for VS Code を使用して、サーバーレスアプリケーションをデバッグし、開発環境でローカルで実行する方法を設定します。

VS Code [CodeLens](https://code.visualstudio.com/api/language-extensions/programmatic-language-features#codelens-show-actionable-context-information-within-source-code) 機能を使用してデバッグ動作の設定を開始し、適格な Lambda 関数を識別できます。CodeLens を使用すると、コンテンツに応じたソースコードとのやり取りが可能になります。CodeLens 機能にアクセスできることを確認する方法については、このトピックの前半の [前提条件](#serverless-apps-assumptions) セクションをレビューします。

**注記**  
この例では、JavaScript を使用するアプリケーションをデバッグします。しかし、次の言語とランタイムを備えた Toolkit for VS Code では、デバッグの特徴を使用できます。  
C\# — .NET Core 2.1, 3.1; .NET 5.0
JavaScript/TypeScript — Node.js 12.*x*14.*x*
Python – 3.6、3.7、3.8、3.9、3.10、3.11、3.12
Java — 8, 8.al2, 11
Go – 1.x
言語の選択は、CodeLens が適格な Lambda ハンドラーを検出する方法にも影響します。詳細については、「[コードから Lambda 関数を直接実行およびデバッグ](serverless-apps-run-debug-no-template.md)」を参照してください。

この手順では、このトピックの前半の [新しいサーバーレスアプリケーションの作成 (ローカル)](#serverless-apps-create) セクションで作成したアプリケーションのサンプルを使用します。

1. VS Code のファイルエクスプローラでアプリケーションファイルを表示するには、**[View]** (表示)、**[Explorer]** (エクスプローラ) を選択します。

1. アプリケーションフォルダ (例:*my-sample-app*) で `template.yaml` ファイルを開きます。
**注記**  
`template.yaml` と違う名前のテンプレートを使用する場合、CodeLens インジケーターは YAML ファイルでは自動的には使用できません。つまり、デバッグ設定をマニュアルで追加する必要があります。

1. `template.yaml` のエディタでは、サーバーレスリソースを定義するテンプレートの `Resources` セクションに移動します。この場合、これはタイプ `AWS::Serverless::Function` の `HelloWorldFunction` リソースです。

   このリソースの CodeLens インジケータで、[**Add Debug Configuration**] (デバッグ設定の追加) を選択します。  
![template.yaml ファイルの CodeLens インジケーターを使用して、デバッグ設定を追加します。](http://docs.aws.amazon.com/ja_jp/toolkit-for-vscode/latest/userguide/images/yaml_template_debug.png)

1. [**Command Palette**] (コマンドパレット) で、 AWS SAM アプリケーションが実行するランタイムを選択します。

1. `launch.json` ファイルのエディタでは、次の設定プロパティの値を編集または確認します。
   + `"name"` – 読みやすい名前を入力して、[**実行**] ビューの [**設定**] ドロップダウンフィールドに表示します。
   + `"target"` – AWS SAM テンプレートがデバッグセッションのエントリポイント`"template"`になるように、 値が であることを確認します。
   + `"templatePath"` – `template.yaml` ファイルに相対パスまたは絶対パスを入力。
   + `"logicalId"` – 名前が AWS SAM テンプレートの**リソース**セクションで指定された名前と一致することを確認します。この場合はタイプ `AWS::Serverless::Function` の `HelloWorldFunction` です。  
![テンプレートベースのデバッグ用の launch.json ファイルの設定。](http://docs.aws.amazon.com/ja_jp/toolkit-for-vscode/latest/userguide/images/template_based_config_updated.png)

   `launch.json` ファイル内のこれらと他の入力に関する詳細は、「[サーバーレスアプリケーションのデバッグ用設定オプション](serverless-apps-run-debug-config-ref.md)」を参照してください。

1. デバッグ設定に問題がなければ、`launch.json` を保存します。次に、デバッグをスタートするため、**RUN** ビューにある緑色の [再生] ボタンを選択します。

   デバッグセッションが開始すると、**デバッグコンソール**パネルには、デバッグ出力が表示され、Lambda 関数によって返される値が表示されます。( AWS SAM アプリケーションをデバッグする場合、**AWS ツールキット** が **出力** パネル内の **出力** チャンネルとして選択されています。)。

## AWS SAM アプリケーションの同期
<a name="serverless-apps-deploy"></a>

は AWS SAM CLI コマンド AWS Toolkit for Visual Studio Code を実行して`sam sync`、サーバーレスアプリケーションを にデプロイします AWS クラウド。 AWS SAM 同期の詳細については、 *AWS Serverless Application Model デベロッパーガイド*の [AWS SAM CLI コマンドリファレンス](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-command-reference.html)トピックを参照してください。

次の手順では、Toolkit for VS Code `sam sync`から AWS クラウド を使用してサーバーレスアプリケーションを にデプロイする方法について説明します。

1. VS Code のメインメニューから、[**表示**] を展開し、[**コマンドパレット**] を選択して**コマンド パレット**を開きます。

1. **コマンド パレット**で **AWS** を検索し、[**Sync SAM アプリケーションを同期 **] を選択して同期の設定を開始します。  
![サーバーレスアプリケーションを同期するコマンド。](http://docs.aws.amazon.com/ja_jp/toolkit-for-vscode/latest/userguide/images/samsync032023.png)

1. サーバーレスアプリケーションを同期する AWS リージョンを選択します。

1. デプロイに使用する `template.yaml` ファイルを選択します。

1. アプリケーションのデプロイ先となる既存の Amazon S3 バケットを選択するか、新しい Amazon S3 バケット名を入力します。
**重要**  
Amazon S3 バケットは、以下の要件を満たしている必要があります。  
バケットは、同期先のリージョンにある必要があります。
Amazon S3 バケット名は、Amazon S3 内のどの既存バケット名とも重複しないグローバルに一意な名前である必要があります。

1. サーバーレスアプリケーションに、パッケージタイプの `Image` を伴う関数が含まれているのであれば、このデプロイで使用できる Amazon ECR リポジトリの名前を入力します。リポジトリは、デプロイ先のリージョンにある必要があります。

1. 以前のデプロイのリストからデプロイスタックを選択するか、新しいスタック名を入力して新しいデプロイスタックを作成します。次に、同期プロセスを開始します。
**注記**  
以前のデプロイで使用されたスタックは、ワークスペースとリージョンごとにリコールされます。

1. 同期プロセス中、デプロイのステータスが VS Code の [**ターミナル**] タブにキャプチャされます。ターミナルタブで同期が成功したことを確認します。エラーが発生すると、通知が届きます。  
![サーバーレスアプリケーションのデプロイ中のエラーポップアップ。](http://docs.aws.amazon.com/ja_jp/toolkit-for-vscode/latest/userguide/images/sam-deploy-error.png)
**注記**  
同期の詳細については、 **コマンドパレット**から AWS Toolkit for Visual Studio Code ログにアクセスできます。

   コマンドパレットから AWS Toolkit for Visual Studio Code ログにアクセスするには、**表示**を展開し、**コマンドパレット**を選択してから を検索し**AWS: View AWS Toolkits Logs**、リストに入力するときに選択します。

デプロイが完了したら、アプリケーションが [**AWS Explorer**] に表示されます。アプリケーションの一部として作成した Lambda 関数の呼び出し方法の詳細については、このユーザーガイドの[AWS Lambda 関数の使用](remote-lambda.md)トピックを参照してください。

## からのサーバーレスアプリケーションの削除 AWS クラウド
<a name="serverless-apps-delete"></a>

サーバーレスアプリケーションを削除するには、以前に AWS クラウドにデプロイした CloudFormation スタックを削除します。この手順を実行しても、ローカルホストからアプリケーションディレクトリは削除されないことにご注意ください。

1. [AWS Explorer](aws-explorer.md) を開きます。

1. ［**AWS Toolkit Explorer**］ウィンドウで、削除したいデプロイされたアプリケーションを含むリージョンを展開し、**CloudFormation**を拡張します。

1. 削除するサーバーレスアプリケーションに対応する CloudFormation スタックの名前のコンテキスト (右クリック) メニューを開き、** CloudFormation スタックの削除**を選択します。

1. 選択したスタックを削除したいことを確認する場合は、[**はい** ] を選択します。

スタックの削除が成功すれば、Toolkit for VS Code は、**AWS Explorer**内の CloudFormation リストからスタック名を削除します。