

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

# ローカル Amazon API Gateway リソースの実行とデバッグ
<a name="debug-apigateway"></a>

`invokeTarget.target=api` と共に VS Codeの `type=aws-sam` 起動設定を実行することによって、`template.yaml` に指定されている AWS SAM API Gateway のローカルリソースを実行またはデバッグすることができます。

**注記**  
API Gateway は、REST と HTTP の 2 種類の API をサポートしています。しかし、AWS Toolkit for Visual Studio Code がある API Gateway の特徴は、REST API のみをサポートします。時に、HTTP API は「API Gateway V2 API」と呼ばれます。

**ローカル API Gateway リソースを実行およびデバッグ**

1.  以下のいずれかのアプローチを選択し、AWS SAM API Gateway リソース用起動 Config を作成: 
   + **オプション 1:**AWS SAM プロジェクトにあるハンドラーのソースコード (.js、.cs、または.py ファイル) にアクセスし、Lambda ハンドラーの上で移動して、**デバッグ設定の追加** CodeLens を選択します。次に、メニューで **API イベント**とマークされた項目を選択します。
   + **オプション 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": {}
     }
     ```

1. VS Code [**Run**] (実行) パネルは、起動設定 (上の例では `myConfig` という名前) を選択します。

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

1.  [**F5**] をタイプするか、または [**Run**] (実行) パネルの [**Play**] (再生) を選択します。

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

## 設定
<a name="apigateway-configuration"></a>

`invokeTarget.target` プロパティ値 `api` を使用すると、ツールキットは起動設定の検証と動作を変更して、`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"`)。  
`invokeTarget.templatePath` によって指定される `template.yaml` から解決された有効な API パスでなければなりません。

**httpMethod**  
「delete」(削除)、「get」(取得)、「head」(率いる、ヘッド)、「option」(オプションを与える)、「patch」(パッチ)、「post」(転記、投稿)、「put」(プット、つける) のいずれかの動詞とすることができます。

**payload**  
リクエストで送信する [lambda.payload](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/serverless-apps-run-debug-config-ref.html) フィールドと同じ構造とルールを持つ JSON ペイロード (HTTP 本文)。  
`payload.path`は JSON ペイロードを含むファイルを指します。  
`payload.json`は JSON ペイロードをインラインで指定します。

**headers**  
名前と値のペアのオプションのマップ。以下の例のようにリクエストに含める 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 接続情報を提供する方法。詳細については、[サーバーレスアプリケーションのデバッグ用設定オプション](serverless-apps-run-debug-config-ref.md) セクションの [**AWS 接続（aws）プロパティ**]テーブルを参照してください。

**SAM**  
AWS SAM CLIがアプリケーションを構築する方法 詳細については、[サーバーレスアプリケーションのデバッグ用設定オプション](serverless-apps-run-debug-config-ref.md) セクションの [**AWS SAM CLI（sam）プロパティ**] テーブルを参照してください。