

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 로컬 Amazon API Gateway 리소스 실행 및 디버깅
<a name="debug-apigateway"></a>

`invokeTarget.target=api`로 `type=aws-sam`의 VS Code 시작 구성을 실행하면 `template.yaml`에 지정된 AWS SAM API Gateway 로컬 리소스를 실행하거나 디버그할 수 있습니다.

**참고**  
API Gateway는 REST와 HTTP 두 가지 유형의 API를 지원합니다. 그러나 AWS Toolkit for Visual Studio Code를 사용한 API Gateway 기능은 REST API만 지원합니다. HTTP API를 ‘API Gateway V2 API’라고 부르기도 합니다.

**로컬 API Gateway 리소스 실행 및 디버깅하기**

1.  다음 방법 중 하나를 선택하여 AWS SAM API Gateway 리소스의 시작 구성을 생성하세요.
   + **옵션 1:** AWS SAM 프로젝트에 있는 핸들러 소스 코드(.js, .cs, or .py 파일)로 이동하여 Lambda 핸들러 위로 마우스를 가져간 다음 **디버그 구성 추가** CodeLens를 선택합니다. 그런 다음 메뉴에서 **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": {}
     }
     ```

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’, ‘options’, ‘patch’, ‘post’, ‘put’ 중 하나입니다.

**payload**  
요청에 보낼 JSON 페이로드(HTTP 본문)로, [lambda.payload](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/serverless-apps-run-debug-config-ref.html) 필드와 구조 및 규칙이 같습니다.  
`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 연결 정보를 제공하는 방법. 자세한 내용은 [서버리스 애플리케이션 디버깅을 위한 구성 옵션](serverless-apps-run-debug-config-ref.md) 섹션에서 **AWS connection ("aws") properties** 표를 참조하세요.

**sam**  
AWS SAM CLI로 애플리케이션을 빌드하는 방법. 자세한 내용은 [서버리스 애플리케이션 디버깅을 위한 구성 옵션](serverless-apps-run-debug-config-ref.md) 섹션에서 **AWS SAM CLI ("sam") 속성** 표를 참조하세요.