サーバーレスアプリケーション入門 - AWS Toolkit for VS Code

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

サーバーレスアプリケーション入門

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

前提条件

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

注記

次の操作では、変更が完了する前に VS Code を終了または再起動する必要がある場合があります。

  • AWS SAM コマンドラインインターフェイス(CLI)のインストール AWS SAM CLI のインストール方法に関する追加情報と手順については、この AWS Serverless Application Model ユーザー ガイドの「AWS SAM CLI のインストール」トピックを参照してください。

  • AWS 設定ファイルから、デフォルトの AWS リージョンを特定します。構成ファイルの詳細については、「AWS Command Line Interface ユーザー ガイド」の「構成と認証情報ファイルの設定」トピックを参照してください。

  • 言語 SDK をインストールし、ツールチェーンを設定する AWS Toolkit for Visual Studio Code からツールチェーンを構成する方法の詳細については、このユーザー ガイドの「ツールチェーンの構成」トピックを参照してください。

  • VS Code マーケットプレイスから YAML 言語サポートエクステンションをインストールします。これは、AWS SAMテンプレートファイルの CodeLens 機能にアクセスできるようにするために必要です。CodeLens に関する追加情報については、VS Code ドキュメントの「CodeLens」セクションを参照してください。

サーバーレスアプリケーションの IAM アクセス許可

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

サーバーレスアプリケーションのデプロイと実行に必要な認証の設定に関する追加情報については、「AWS Serverless Application Model開発者ガイド」の「リソースへのアクセスと権限の管理」を参照してください。認証情報の設定方法の詳細については、本ユーザーガイドのAWS IAM 認証情報を参照してください。

新しいサーバーレスアプリケーションの作成 (ローカル)

これは、AWS SAM を使用して、Toolkit for VS Code でサーバーレスアプリケーションを作成する方法を示します。この手順の出力は、サンプルサーバーレスアプリケーションを含む開発ホスト上のローカルディレクトリです。サーバーレスアプリケーションをビルド、ローカルでテスト、変更、および AWS クラウドにデプロイできます。

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

  2. [AWS: Lambda SAM アプリケーションの作成] を選択します。

    コマンドパレットダイアログボックス。
    注記

    AWS SAM CLI がインストールされていない場合は、 VS Codeエディタの右下隅にエラーが表示されます。この問題が発生した場合は、すべての仮定条件と前提条件を満たしていることを確認します。

  3. AWS SAM アプリケーションのランタイムを選択します。

    注記

    「(イメージ」でランタイムの 1 つを選択した場合、アプリケーションはパッケージタイプ Image です。「(イメージ)」を使わずにランタイムの 1 つを選択した場合、アプリケーションのタイプは Zip です。との違いの詳細については、Image および Zip パッケージタイプのちがいについては、「AWS Lambdaデベロッパーガイド」の「Lambda デプロイパッケージ」を参照してください。

  4. 選択したランタイムによっては、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 とイメージ)

    • java8.al2 と Gradle (ZIP とイメージ)

    • java8.al2 と Maven (ZIP のみ)

    • java11 と Gradle (ZIP とイメージ)

    • java11 と Maven (ZIP のみ)

    重要

    ARM64 ベースの環境でアプリケーションを実行するために、AWS CLI バージョン 1.33.0 以降をインストールする必要があります。詳細については、「前提条件」を参照してください。

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

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

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

サーバーレスアプリケーションを開く (ローカル)

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

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

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

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

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

テンプレートからのサーバーレスアプリケーションの実行とデバッグ (ローカル)

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

VS Code CodeLens 機能を使用してデバッグ動作の設定を開始し、適格な Lambda 関数を識別できます。CodeLens を使用すると、コンテンツに応じたソースコードとのやり取りが可能になります。CodeLens 機能にアクセスできることを確認する方法については、このトピックの前半の 前提条件 セクションをレビューします。

注記

この例では、JavaScript を使用するアプリケーションをデバッグします。しかし、次の言語とランタイムを備えた Toolkit for VS Code では、デバッグの特徴を使用できます。

  • C# — .NET Core 2.1, 3.1; .NET 5.0

  • JavaScript/TypeScript — Node.js 12.x14.x

  • Python – 3.6, 3.7, 3.8, 3.9, 3.10, 3.11

  • Java — 8, 8.al2, 11

  • Go – 1.x

言語の選択は、CodeLens が適格な Lambda ハンドラーを検出する方法にも影響します。詳細については、「コードから Lambda 関数を直接実行およびデバッグ」を参照してください。

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

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

  2. アプリケーションフォルダ (例:my-sample-app) で template.yaml ファイルを開きます。

    注記

    template.yaml と違う名前のテンプレートを使用する場合、CodeLens インジケーターは YAML ファイルでは自動的には使用できません。つまり、デバッグ設定をマニュアルで追加する必要があります。

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

    このリソースの CodeLens インジケータで、[Add Debug Configuration] (デバッグ設定の追加) を選択します。

    template.yaml ファイルの CodeLens インジケーターを使用して、デバッグ設定を追加します。
  4. [Command Palette] (コマンドパレット) で、AWS SAM アプリケーションが実行するランタイムを選択します。

  5. launch.json ファイルのエディタでは、次の設定プロパティの値を編集または確認します。

    • "name" – 読みやすい名前を入力して、[実行] ビューの [設定] ドロップダウンフィールドに表示します。

    • "target" – 値が "template" であるため、AWS SAM テンプレートがデバッグセッションのエントリポイントになるように確認します。

    • "templatePath"template.yaml ファイルに相対パスまたは絶対パスを入力。

    • "logicalId" – 名前が AWS SAM テンプレートの リソース セクションで指定されたものに一致するように確認します。この場合はタイプ AWS::Serverless::FunctionHelloWorldFunction です。

    テンプレートベースのデバッグ用の launch.json ファイルの設定。

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

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

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

AWS SAMアプリケーションの同期

AWS Toolkit for Visual Studio Code は AWS SAM CLI コマンド sam sync を実行して、サーバーレス アプリケーションを AWS クラウド にデプロイします。AWS SAM 同期の詳細については、AWS Serverless Application Model デベロッパーガイドAWS SAM CLI コマンド リファレンス トピックを参照してください。

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

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

  2. コマンド パレットAWS を検索し、[Sync SAM アプリケーションを同期 ] を選択して同期の設定を開始します。

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

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

  5. アプリケーションのデプロイ先となる既存の Amazon S3 バケットを選択するか、新しい Amazon S3 バケット名を入力します。

    重要

    Amazon S3 バケットは、以下の要件を満たしている必要があります。

    • バケットは、同期先のリージョンにある必要があります。

    • Amazon S3 バケット名は、Amazon S3 内のどの既存バケット名とも重複しないグローバルに一意な名前である必要があります。

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

  7. 以前のデプロイのリストからデプロイスタックを選択するか、新しいスタック名を入力して新しいデプロイスタックを作成します。次に、同期プロセスを開始します。

    注記

    以前のデプロイで使用されたスタックは、ワークスペースとリージョンごとにリコールされます。

  8. 同期プロセス中、デプロイのステータスが VS Code の [ターミナル] タブにキャプチャされます。ターミナルタブで同期が成功したことを確認します。エラーが発生すると、通知が届きます。

    サーバーレスアプリケーションのデプロイ中のエラーポップアップ。
    注記

    同期に関するその他の詳細については、AWS Toolkit for Visual Studio Codeコマンドパレットからログにアクセスできます。

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

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

AWS クラウド からのサーバーレスアプリケーションの削除

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

  1. AWS Explorer を開きます。

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

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

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

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