の使用AWSサーバーレスアプリケーションを使用するAWSToolkit - AWS Cloud9

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

の使用AWSサーバーレスアプリケーションを使用するAWSToolkit

-AWSToolkit では、次のサポートが提供されていますサーバーレスアプリケーション。の使用AWSToolkit を使用すると、AWS Lambda関数をデプロイし、アプリケーションをAWS CloudFormationスタック。

サーバーレスアプリケーションを作成する

この例では、[] を使用する方法を示しています。AWSサーバーレスアプリケーションを作成するには Toolkit です。サーバーレスアプリケーションの実行とデバッグの詳細については、サーバーレスアプリケーションの実行とデバッグ

サーバーレスアプリケーションを作成するために必要な前提条件には、AWS SAMCLIAWSCLIに含まれているAWS Cloud9。

でサーバーレスアプリケーションを作成するにはAWSToolkit

この例は、でサーバーレスアプリケーションを作成する方法を示しますAWSツールキットを使用してAWS Serverless Application Model(AWS SAM)

  1. メニューアイコンをクリックし、AWS: Explorerの見出しを選択し、SAM アプリケーションの作成

  2. SAM アプリケーションのランタイムを選択します。この例では、[] を選択します。nodejs12.x

    注記

    「(Image)」でランタイムの 1 つを選択した場合、アプリケーションはパッケージタイプImage。「(Image)」を指定せずにランタイムの 1 つを選択すると、アプリケーションのタイプがZip。の違いの詳細についてはImageおよびZipパッケージタイプの詳細については、Lambda デプロイパッケージ()AWS Lambda開発者ガイド

  3. サーバーレスアプリ用に、以下のテンプレートを選択します。

    • AWS SAMHello World: 古典的な「Hello World」メッセージを返すLambda 関数を持つ基本的なテンプレート。

    • AWSStep Functions サンプルアプリケーション: 株式取引ワークフローを実行するサンプルアプリケーション。ステップ関数は、関係する Lambda 関数の相互作用を調整します。

  4. 新しいプロジェクトの場所を選択します。既存のワークスペースフォルダがある場合は選択するか、別のフォルダを参照できます。を選択すると別のフォルダを選択するをクリックすると、フォルダの場所を選択するためのダイアログボックスが表示されます。

  5. 新しいアプリケーションの名前を入力します。この例では my-sam-app-nodejs を使用します。[] を押した後Enterとすると、AWSToolkit でプロジェクトが作成するまで少し時間がかかります。

プロジェクトが作成されると、「環境」ウィンドウでアプリケーションのファイルを表示できます。[Explorer] ウィンドウに表示されます。


                    SAM アプリケーションで使用可能なランタイムを示すスクリーンショット。

サーバーレスアプリケーションの実行とデバッグ

「」と「」を使用できます。AWSToolkit を使用して、サーバーレスアプリケーションをデバッグし、開発環境でローカルで実行する方法を設定します。サーバーレスアプリケーションをデバッグできます。サーバーレスアプリケーションは、AWS Serverless Application Model(AWS SAM) テンプレート。このテンプレートは、サーバーレスアプリケーションを構成する関数、API、データベース、イベントソースマッピングなどのリソースを記述するために、単純な YAML 構文を使用します。

詳しく見るとAWS SAMテンプレートについては、AWS SAMテンプレートの分析()AWS Serverless Application Model開発者ガイド の最初のリリースです。

また、SAM テンプレートにコミットされていないサーバーレスアプリケーションを迅速にデバッグすることもできます。

デバッグ動作の構成を開始するには、インラインアクションを使用して、適格なAWS Lambdafunction. SAM テンプレートによって定義されたインフラストラクチャを使用するには、関連する YAML 形式のファイルでインラインアクションを使用します。テンプレートなしで関数を直接テストするには、アプリケーションファイルの Lambda ハンドラーのコンテキストアウェアリンクを使用します。

注記

この例では、JavaScript を使用するアプリケーションをデバッグしています。しかし、利用可能なデバッグ機能を使用することができますAWSToolkit には、次の言語とランタイムがあります。

  • JavaScript — Node.js 10.x、12.x、14.x

  • Python — 3.7、3.8 (Python 2.7 および 3.6 サーバーレスアプリケーションを実行できますが、AWSToolkit.

言語の選択は、コンテキストアウェアリンクが適格な Lambda ハンドラーを示す方法にも影響します。詳細については、「コードからサーバーレス関数を直接実行およびデバッグする」を参照してください。

SAM テンプレートを使用したサーバーレスアプリケーションの実行とデバッグ

SAM テンプレートを使用して実行およびデバッグされるアプリケーションの場合、YAML 形式のファイルによって、アプリケーションの動作と使用するリソースが記述されます。サーバーレスアプリケーションを作成するにはAWSToolkit、という名前のファイルtemplate.yamlプロジェクト用に自動的に生成されます。

この手順では、[] で作成したサンプルアプリケーションを使用します。サーバーレスアプリケーションを作成する

SAM テンプレートを使用してサーバーレスアプリケーションを実行およびデバッグするには、次の操作を行います。

  1. サーバーレスアプリケーションを構成するアプリケーションファイルを表示するには、環境ウィンドウ。

  2. アプリケーションフォルダ (マイサンプルアプリを参照)、template.yamlファイルを開きます。

  3. のエディターの上template.yamlで [] を選択します起動設定の編集[] ドロップダウンメニューから [] を選択します。

    新しいエディタにlaunch.jsonファイルを作成し、デフォルトの属性を持つデバッグ設定を提供します。

  4. 次の構成プロパティの値を編集または確認します。

    • "name"— 読みやすい名前を入力して、設定[] ドロップダウンフィールドRunビュー。

    • "target"— 値が"template"SAM テンプレートがデバッグセッションのエントリポイントになるようにします。

    • "templatePath"— 相対パスまたは絶対パスを入力するtemplate.yamlファイルを開きます。

    • "logicalId"— 名前がリソースSAM テンプレートのセクション。この場合はHelloWorldFunctionのタイプAWS::Serverless::Function

    これらのエントリや他のエントリの詳細についてはlaunch.jsonファイルについては、サーバーレスアプリケーションをデバッグするための設定オプション

  5. デバッグ設定に問題がなければ、launch.json。次に、横の緑色の「再生」ボタンを選択しますRUNデバッグを開始します。

    注記

    SAM アプリケーションの実行に失敗した場合は、出力ウィンドウを使用して、Dockerイメージがビルドされていないためにエラーが発生しているかどうかを確認します。環境内のディスク容量を解放する必要がある場合があります。

    詳細については、「SAM アプリケーションをローカルで実行中のエラーAWSツールキットは、AWS Cloud9環境には十分なディスク領域がありません」を参照してください。

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

    注記

    Windows ユーザーの場合、このプロセス中に Docker マウントエラーが発生した場合は、共有ドライブの認証情報を更新する必要があります (Docker の設定). Docker マウントエラーは次のようになります。

    Fetching lambci/lambda:nodejs10.x Docker container image...... 2019-07-12 13:36:58 Mounting C:\Users\<username>\AppData\Local\Temp\ ... as /var/task:ro,delegated inside runtime container Traceback (most recent call last): ...requests.exceptions.HTTPError: 500 Server Error: Internal Server Error ...

コードからサーバーレス関数を直接実行およびデバッグする

テストするときAWS SAMアプリケーションを使用する場合、Lambda 関数だけを実行およびデバッグし、SAM テンプレートで定義されている他のリソースを除外することができます。このアプローチでは、インラインアクションを使用して、直接呼び出すことができるソースコード内の Lambda 関数ハンドラを識別します。

コンテキストアウェアリンクによって検出される Lambda ハンドラーは、アプリケーションで使用している言語とランタイムによって異なります。

言語/ランタイム Lambda 関数がコンテキストアウェアリンクによって識別される基準

JavaScript(Node.js 10.x、12.x、14.x)

この機能には以下の機能があります。
  • これは、最大3つのパラメータを持つエクスポートされた関数です。

  • これはpackage.jsonファイルをワークスペースフォルダー内の親フォルダーに保存します。

Python (3.7 と 3.8)

この機能には以下の機能があります。
  • 最上位レベルの関数です。

  • これはrequirements.txtファイルをワークスペースフォルダー内の親フォルダーに保存します。

サーバーレスアプリケーションをアプリケーションコードから直接実行およびデバッグするには

  1. サーバーレスアプリケーションファイルを表示するには、エディタの横にあるフォルダアイコンを選択して、アプリケーションフォルダに移動します。

  2. アプリケーションフォルダ (マイサンプルアプリなど)、関数フォルダー (hello-world、この場合は) を開き、app.jsファイルを開きます。

  3. 適格な Lambda ハンドラー関数を識別するインラインアクションで、Add Debug Configuration

    
                            Lambda 関数ハンドラーのインラインアクションで「デバッグ設定の追加」オプションにアクセスします。
  4. SAM アプリケーションを実行するランタイムを選択します。

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

    • "name"— 読みやすい名前を入力します。

    • "target"— 値がであることを確認する"code"を呼び出し、Lambda 関数ハンドラが直接呼び出されるようにします。

    • "lambdaHandler"— Lambda が関数を呼び出すために Lambda が呼び出すコード内のメソッドの名前を入力します。たとえば、JavaScript のアプリケーションでは、デフォルトはapp.lambdaHandler

    • "projectRoot"— Lambda 関数を含むアプリケーションファイルへのパスを入力します。

    • "runtime"— Lambda 実行環境の有効なランタイムを入力または確認します。たとえば、"nodejs.12x"

    • "payload"— 以下のいずれかのオプションを選択して、Lambda 関数に渡される input イベントペイロードを定義します。

      • "json": イベントペイロードを定義する JSON 形式のキーと値のペア。

      • "path": イベントペイロードとして使用されるファイルへのパス。

  6. デバッグ設定に問題がなければ、[] の横にある緑色の再生矢印を選択します。RUNデバッグを開始します。

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

    注記

    エラーメッセージにDockerが記載されている場合は、この注意

ローカル Amazon API Gateway リソースの実行とデバッグ

実行またはデバッグすることができますAWS SAMAPI Gateway のローカルリソース。template.yamlを実行することによって、AWS Cloud9起動設定type=aws-saminvokeTarget.target=api

注記

API Gateway は、REST と HTTP の 2 種類の API をサポートしています。ただし、API Gateway 機能でAWSToolkit では REST API のみがサポートされます。HTTP API は「API Gateway V2 API」と呼ばれることもあります。

ローカル API Gateway リソースを実行およびデバッグするには

  1. 以下のいずれかのアプローチを選択して、AWS SAMAPI Gateway リソース:

    • オプション 1: ハンドラーのソースコード (.js、.cs、または.py ファイル) をAWS SAMプロジェクトを開き、Lambda ハンドラーにカーソルを合わせ、デバッグ設定の追加。次に、メニューで [API Event] とマークされた項目を選択します。

    • オプション 2編集launch.json次の構文を使用して新しい起動設定を作成します。

      { "type": "aws-sam", "request": "direct-invoke", "name": "myConfig", "invokeTarget": { "target": "api", "templatePath": "n12/template.yaml", "logicalId": "HelloWorldFunction" }, "api": { "path": "/hello", "httpMethod": "post", "payload": { "json": {} } }, "sam": {}, "aws": {} }
  2. 横のドロップダウンメニューでRunボタンで、起動設定 (myConfig上記の例では)。

  3. (オプション)Lambda プロジェクトコードにブレークポイントを追加します。

  4. [Runボタンの横にある「再生」ボタン

  5. 出力ペインで、結果を表示します。

Configuration

使用するとinvokeTarget.targetプロパティ値apiの場合、Toolkit は起動設定の検証と動作を変更し、apiフィールド。

{ "type": "aws-sam", "request": "direct-invoke", "name": "myConfig", "invokeTarget": { "target": "api", "templatePath": "n12/template.yaml", "logicalId": "HelloWorldFunction" }, "api": { "path": "/hello", "httpMethod": "post", "payload": { "json": {} }, "querystring": "abc=def&qrs=tuv", "headers": { "cookie": "name=value; name2=value2; name3=value3" } }, "sam": {}, "aws": {} }

例の値を、次のように置き換えます。

Invoketarget.LogicalID

API リソース。

パス

起動設定が要求する API パス (例:"path": "/hello"

から解決された有効な API パスでなければなりませんtemplate.yamlによって指定されていますinvokeTarget.templatePath

httpMethod

「削除」、「取得」、「頭」、「オプション」、「パッチ」、「投稿」、「置く」のいずれかの動詞です。

payload

リクエストで送信する JSON ペイロード (HTTP 本文)。lambda.payloadフィールド。

payload.pathは JSON ペイロードを含むファイルを指します。

payload.jsonは JSON ペイロードをインラインで指定します。

ヘッダー

以下の例のようにリクエストに含める HTTP ヘッダーを指定するために使用する、名前と値のペアのオプションのマップ。

"headers": { "accept-encoding": "deflate, gzip;q=1.0, *;q=0.5", "accept-language": "fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5", "cookie": "name=value; name2=value2; name3=value3", "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36", }
querystring

設定するオプションの文字列querystringなど、リクエストの"querystring": "abc=def&ghi=jkl"

aws

方法AWS接続情報が提供されます。詳細については、「」を参照してください。AWS接続 (awsプロパティテーブルサーバーレスアプリケーションをデバッグするための設定オプション

sam

その方法はAWS SAMCLI では、アプリケーションがビルドされます。詳細については、「」を参照してください。AWS SAMCLI (」sam「) プロパティサーバーレスアプリケーションをデバッグするための設定オプション

サーバーレスアプリケーションをデプロイする

この例では、 AWS Toolkit for Visual Studio Code を使用して、前のトピック(サーバーレスアプリケーションを作成する) で作成したサーバーレスアプリケーションを AWS にデプロイする方法を示します。

Prerequisites

  • 必ずグローバルに一意な Amazon S3 バケット名を選択してください。

  • 「」で設定した認証情報に、以下のサービスに対する適切な読み取り/書き込みアクセス許可が含まれていることを確認します。Amazon S3,AWS CloudFormation,AWS Lambda、Amazon API Gateway の「Amazon API

  • 展開の種類を持つアプリケーションの場合Imageでは、グローバルに一意な Amazon S3 バケット名と、デプロイに使用する Amazon ECR リポジトリ URI の両方があることを確認します。

サーバーレスアプリケーションをデプロイする

  1. AWSExplorerウィンドウで、コンテキストメニュー (右クリック) を開きます。Lambdaノードを選択し、SAM アプリケーションをデプロイする

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

  3. 今すぐ選択してくださいAWSデプロイ先リージョン。

  4. このデプロイで使用できる Amazon S3 バケットの名前を入力します。バケットはAWSデプロイ先のリージョン。

    警告

    Amazon S3 バケット名は、Amazon S3 内の既存バケット名の中で一意になるようにします。したがって、次の例に示す名前に一意の識別子を追加する必要があります (または、別の名前を選択してください)。

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

  6. デプロイされたスタックの名前 (新しいスタック名または既存のスタック名) を入力します。

  7. 展開の成功をAWSToolkitタブコンソール

    エラーが発生すると、右下にメッセージが表示されます。

    このような場合には、[] でテキストを確認します。AWSToolkitタブを参照してください。以下に示しているのは、エラーの詳細の例です。

    Error with child process: Unable to upload artifact HelloWorldFunction referenced by CodeUri parameter of HelloWorldFunction resource. S3 Bucket does not exist. Execute the command to create a new bucket aws s3 mb s3://pbart-my-sam-app-bucket An error occurred while deploying a SAM Application. Check the logs for more information by running the "View AWS Toolkit Logs" command from the Command Palette.

    この例では、Amazon S3 バケットが存在しないためエラーが発生しました。

デプロイが完了したら、アプリケーションが [AWSExplorer] に表示されます。アプリケーションの一部として作成された Lambda 関数の呼び出し方法については、リモート Lambda 関数の呼び出し

サーバーレスアプリケーションをAWSCloud

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

  1. を開くAWSExplorer

  2. AWSExplorerウィンドウで、削除するデプロイ済みアプリケーションを含むリージョンを展開し、AWS CloudFormation

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

  4. 選択したスタックを削除することを確定するには、[]削除

スタックの削除が成功すると、AWSToolkit は、スタック名をAWS CloudFormationのリストAWSExplorer