

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

# AWS Lambda 함수
<a name="building-lambda"></a>

AWS Toolkit for Visual Studio Code는 AWS Lambda 함수에 대한 포괄적인 지원을 제공하므로 VS Code에서 직접 빌드, 테스트 및 배포할 수 있습니다.

Lambda는 200개 이상의 AWS 서비스 및 서비스형 소프트웨어(SaaS) 애플리케이션의 이벤트에 대한 응답으로 코드를 자동으로 실행하는 완전 관리형 이벤트 기반 컴퓨팅 서비스입니다. AWS Lambda 서비스에 대한 자세한 내용은 [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 개발자 안내서를 참조하세요.

다음 주제에서는 AWS Toolkit for Visual Studio Code에서 AWS Lambda을 사용하는 방법을 설명합니다.

**Topics**
+ [AWS Lambda 함수 작업](remote-lambda.md)
+ [AWS Lambda console IDE로](lambda-console-ide.md)
+ [AWS Lambda LocalStack 지원](lambda-localstack.md)
+ [AWS Lambda 원격 디버깅](lambda-remote-debug.md)

# AWS Lambda 함수 작업
<a name="remote-lambda"></a>

를 AWS Toolkit for Visual Studio Code 사용하면 로컬 VS Code 환경에서 AWS Lambda 함수를 사용할 수 있습니다. AWS 도구 키트를 사용하면 IDE에서 나가지 않고도 Lambda 함수를 생성, 편집, 테스트, 디버깅 및 배포할 수 있습니다. AWS Lambda 서비스에 대한 자세한 내용은 [AWS Lambda](https://docs.aws.amazon.com//lambda/latest/dg/welcome.html) 개발자 안내서를 참조하세요.

다음 섹션에서는 AWS Toolkit for Visual Studio Code에서 Lambda 함수 작업을 시작하는 방법을 설명합니다.

**참고**  
를 사용하여 Lambda 함수를 이미 생성한 경우 도구 키트에서 함수를 호출할 AWS Management Console수 있습니다. 또한에서 Lambda 함수를 VS Code로 열 수 있습니다. AWS Lambda console자세한 내용은이 사용 설명서의 [AWS Lambda console IDE로](lambda-console-ide.md) 주제를 참조하세요. VS Code에서 새 Lambda 함수를 생성하려면, 이 사용 설명서의 [새 서버리스 애플리케이션(로컬) 생성](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/sam-get-started.html#serverless-apps-create) 주제에서 설명하는 단계를 따르세요.

## 사전 조건
<a name="remote-lambda-prereq"></a>

 AWS 도구 키트에서 AWS Lambda 서비스를 사용하려면 다음 조건을 충족해야 합니다.
+ 의 최신 버전이 AWS Toolkit for Visual Studio Code 설치되고 자격 AWS 증명으로 설정됩니다.
+  AWS Identity and Access Management (IAM) 관리형 권한 및 정책은 AWS Lambda 서비스와 함께 작동하도록 구성됩니다. 권한을 구성하고 호환되는 AWS 관리형 정책을 생성하는 방법에 [AWS Identity and Access Management 대한 AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/security-iam.html) 자세한 내용은 *AWS Lambda 개발자 안내서*의 주제는 섹션을 참조하세요.
+ 기존 AWS Lambda 함수가 있거나 함수를 생성하는 방법을 잘 알고 있습니다. Lambda 함수를 생성하는 방법에 대한 지침은 *AWS Lambda 개발자 안내서*의 [첫 번째 Lambda 함수 생성](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) 주제를 참조하세요.

## Lambda 함수 간접 호출
<a name="invoke-lam-func"></a>

 AWS 계정에서 VS Code로 Lambda 함수를 호출하려면 다음 단계를 완료합니다.

1. 에서 AWS 탐색기를 AWS Toolkit for Visual Studio Code확장합니다.

1.  AWS 탐색기에서 **Lambda**를 확장하여 Lambda 리소스를 확인합니다.

1. 간접 호출하려는 Lambda 함수의 컨텍스트 메뉴를 우클릭하여 열고, **클라우드에서 간접 호출**을 선택하거나 **클라우드에서 간접 호출** 아이콘을 선택하여 VS Code에서 **원격 간접 호출 구성** 메뉴를 엽니다.

1. **원격 간접 호출 구성** 메뉴에서 **페이로드** 설정을 지정하고 이벤트에 필요한 추가 정보를 추가합니다.
**참고**  
 AWS 탐색기의 **클라우드에서 간접 호출을 선택하는 즉시 첫 번째 간접 호출** 프로세스가 실행되기 시작할 수 있습니다. 출력은 VS Code 터미널의 **OUTPUT** 탭에 표시됩니다.

1. **원격 간접 호출** 버튼을 선택하여 함수를 호출합니다. 출력은 VS Code 터미널의 **OUTPUT** 탭에 표시됩니다.

## Lambda 함수 삭제
<a name="delete-lambda"></a>

Lambda 함수를 삭제하기 위해서 다음의 절차를 완료합니다.

**주의**  
이 절차를 사용하여 [CloudFormation](https://docs.aws.amazon.com/cloudformation/)과 연결된 Lambda 함수를 삭제해선 안 됩니다. 이러한 함수는 CloudFormation 스택을 통해 삭제해야 합니다.

1. 에서 AWS 탐색기를 AWS Toolkit for Visual Studio Code확장합니다.

1.  AWS 탐색기에서 **Lambda**를 확장하여 Lambda 리소스를 확인합니다.

1. 삭제하려는 Lambda 함수를 마우스 우클릭한 다음 **삭제**를 선택합니다.

1. 프롬프트가 나타나면 함수를 삭제할 것인지 확인합니다.

함수가 삭제되면 더 이상 AWS 탐색기에 나열되지 않습니다.

## Lambda 함수 다운로드
<a name="import-lambda"></a>

원격 Lambda 함수 코드를 VS Code 작업 공간으로 다운로드해 수정 및 디버깅할 수 있습니다.

**참고**  
Lambda 함수를 다운로드하려면 액세스 가능한 폴더가 있는 VS Code 워크스페이스에서 작업해야 하며 AWS 도구 키트는 Node.js 및 Python 런타임을 사용하는 Lambda 함수에서만이 기능을 지원합니다.

1. 에서 AWS 탐색기를 AWS Toolkit for Visual Studio Code확장합니다.

1.  AWS 탐색기에서 **Lambda**를 확장하여 Lambda 리소스를 확인합니다.

1. 다운로드하려는 Lambda 함수를 마우스 우클릭한 다음 **다운로드**를 선택합니다.

1. Lambda 함수는 VS Code 편집기에서 열리고 다운로드가 완료되면 AWS 탐색기에 표시됩니다. 또한 도구 AWS 키트는 Lambda 함수를 로컬에서 실행하고 디버깅할 수 있도록 VS Code 실행 패널에 *시작 구성을* 생성합니다 AWS Serverless Application Model. 사용에 대한 자세한 내용은 단원을 AWS SAM참조하십시오[템플릿(로컬)에서 서버리스 애플리케이션 실행 및 디버깅](sam-get-started.md#serverless-apps-debug).

## 새 Lambda 함수 업데이트 배포
<a name="deploy-lambda"></a>

로컬 시스템의 지정되지 않은 임시 위치에서 새 Lambda 함수에 업데이트를 배포할 수 있습니다.

**참고**  
Lambda 파일에 배포되지 않은 변경 사항이 있는 경우 VS Code 편집기 및 AWS Explorer에서 수정된 파일 옆에 있는 **M** 아이콘으로 알림을 받습니다.

**VS Code 편집기에서 배포**

1. VS Code 편집기의 Lambda 함수에서 파일을 연 다음 파일을 변경합니다.

1. VS Code 메인 메뉴에서 수동으로 저장하거나 **option\$1s** (Mac) **ctrl\$1s**(Windows)를 누릅니다.

1. VS Code는 변경 사항을 클라우드에 배포하라는 프롬프트 자동으로 표시하고 **배포** 버튼을 선택하여 배포를 확인합니다.

1. VS Code는 배포 상태를 업데이트하고 프로세스가 완료되면 알려줍니다.

**AWS 탐색기에서 배포**

1. VS Code 편집기의 Lambda 함수에서 파일을 연 다음 파일을 변경합니다.

1.  AWS 도구 키트에서 AWS 탐색기를 확장합니다.

1.  AWS 탐색기에서 변경 사항을 배포하려는 Lambda 함수로 AWS 리전을 확장합니다.

1.  AWS 리전에서 Lambda를 확장하고 변경 사항을 배포하려는 함수를 탐색합니다.

1. 함수 옆의 빠른 메뉴에서 **코드 저장 및 배포** 아이콘을 선택합니다.

1. VS Code는 배포 상태를 업데이트하고 프로세스가 완료되면 알려줍니다.

## 기존 Lambda 함수에 대한 업데이트 업로드
<a name="upload-lambda"></a>

다음 절차에서는 기존 Lambda 함수에 대한 로컬 변경 사항을 업로드하는 방법을 설명합니다. 이 기능은 Lambda 지원 런타임으로 업로드를 지원합니다.

**주의**  
Lambda 함수를 업로드하기 전에 다음 사항에 유의하세요.  
이러한 방식으로 코드를 업데이트하면 배포에 AWS SAM CLI를 사용하거나 스택을 CloudFormation 생성하지 않습니다.
 AWS 도구 키트는 코드를 검증하지 않습니다. 변경 사항을 클라우드에 업로드하기 전에 코드를 검증하고 함수를 테스트합니다.

**.Zip 아카이브 업로드**

1. 에서 AWS 탐색기를 AWS Toolkit for Visual Studio Code확장합니다.

1.  AWS 탐색기에서 **Lambda**를 확장하여 Lambda 리소스를 확인합니다.

1. 변경 사항을 업로드하려는 Lambda 함수를 우클릭한 다음 **Lambda 업로드…**를 선택하여 **업로드 유형 선택** 메뉴를 엽니다.

1. **ZIP 아카이브**를 선택하여 로컬 디렉터리에서 `ZIP Archive`를 찾습니다.

1. 프롬프트가 표시되면 업로드를 확인하여 선택한 `ZIP Archive`의 업로드를 시작합니다.

1. 업로드 상태는 VS Code에 표시되며, 업로드 프로세스가 완료되면 알림을 받게 됩니다.

**빌드하지 않고 디렉터리 업로드**

1. 에서 AWS 탐색기를 AWS Toolkit for Visual Studio Code확장합니다.

1.  AWS 탐색기에서 **Lambda**를 확장하여 Lambda 리소스를 확인합니다.

1. 변경 사항을 업로드하려는 Lambda 함수를 우클릭한 다음 **Lambda 업로드…**를 선택하여 **업로드 유형 선택** 메뉴를 엽니다.

1. **디렉터리**를 선택하여 **디렉터리 빌드** 화면으로 이동합니다.

1. **디렉터리 빌드** 화면에서 **아니요**를 선택하여 업로드할 로컬 디렉터리를 선택합니다.

1. 프롬프트가 표시되면 업로드를 확인하여 선택한 디렉터리를 업로드합니다.

1. 업로드 상태는 VS Code에 표시되며, 업로드 프로세스가 완료되면 알림을 받게 됩니다.

**빌드를 사용하여 디렉터리 업로드**
**참고**  
다음에 유의하세요.  
이 절차에는 AWS Serverless Application Model CLI가 필요합니다.
 AWS 도구 키트는 업로드 전에 일치하는 핸들러를 감지할 수 없음을 알립니다.
Lambda 함수에 연결된 핸들러를 변경하려면 AWS Lambda console 또는를 사용합니다 AWS Command Line Interface.

1. 에서 AWS 탐색기를 AWS Toolkit for Visual Studio Code확장합니다.

1.  AWS 탐색기에서 **Lambda**를 확장하여 Lambda 리소스를 확인합니다.

1. 변경 사항을 업로드하려는 Lambda 함수를 우클릭한 다음 **Lambda 업로드…**를 선택하여 **업로드 유형 선택** 메뉴를 엽니다.

1. **디렉터리**를 선택하여 **디렉터리 빌드** 화면으로 이동합니다.

1. **디렉터리 빌드** 화면에서 **예**를 선택한 다음 업로드할 로컬 디렉터리를 선택합니다.

1. 프롬프트가 표시되면 업로드를 확인하여 선택한 디렉터리 빌드와 업로드를 시작합니다.

1. 업로드 상태는 VS Code에 표시되며, 업로드 프로세스가 완료되면 알림을 받게 됩니다.

## Lambda 함수를 AWS SAM 프로젝트로 변환
<a name="lambda-sam"></a>

Lambda 함수를 AWS SAM 스택으로 변환하려면 다음 단계를 완료합니다.

**주의**  
현재 Lambda 함수를 AWS SAM 프로젝트로 변환할 때 리소스의 하위 집합만 지원됩니다. 변환 후 누락된 리소스를 찾으려면 Lambda 콘솔을 확인하고 AWS SAM 템플릿에 수동으로 추가합니다. 지원되는 리소스와 지원되지 않는 리소스에 대한 추가적인 내용은 *AWS CloudFormation 개발자 안내서*의 [리소스 유형 지원](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/resource-import-supported-resources.html) 주제를 참조하세요.

1.  AWS 도구 키트에서 AWS 탐색기를 확장합니다.

1.  AWS 탐색기에서 AWS SAM 프로젝트로 변환하려는 Lambda 함수를 사용하여 AWS 리전을 확장합니다.

1.  AWS 리전에서 Lambda를 확장하고 AWS SAM 스택으로 변환하려는 함수를 탐색합니다.

1. Lambda 함수 옆의 빠른 메뉴에서 **SAM 애플리케이션으로 변환** 아이콘을 선택하여 로컬 파일 시스템을 탐색하고 새 AWS SAM 프로젝트의 위치를 지정합니다.

1. 위치를 지정하면 AWS 도구 키트가 Lambda 함수를 AWS SAM 프로젝트로 변환하기 시작한 후 VS Code는 프로세스 상태에 대한 업데이트를 제공합니다.
**참고**  
이 프로세스는 몇 분 정도 걸릴 수 있습니다.

1. VS Code에서 프롬프트가 표시되면 스택 이름을 입력한 다음 **Enter** 키를 눌러 계속합니다.

1. VS Code는 프로젝트 상태로 계속 업데이트한 다음 프로세스가 완료되면에 알리고 새 AWS SAM 프로젝트를 VS Code 워크스페이스로 엽니다.

# AWS Lambda console IDE로
<a name="lambda-console-ide"></a>

 AWS Lambda console - IDE 기능을 사용하면에서 VS Code AWS Lambda console 로 AWS Lambda 함수를 다운로드할 수 있습니다. VS Code에서 Lambda 함수를 사용하면 AWS Serverless Application Model (AWS SAM) 및와 같은 다른 로컬 개발 옵션에 액세스할 수 있습니다 AWS Cloud Development Kit (AWS CDK).

에 대한 자세한 내용은 [AWS Lambda](https://docs.aws.amazon.com//lambda/latest/dg/welcome.html) 개발자 안내서를 AWS Lambda참조하세요. AWS 도구 키트에서 Lambda 함수 작업을 시작하려면이 사용 설명서의 [AWS Lambda 함수 작업](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/remote-lambda.html) 주제를 참조하세요. 다음 섹션에서는 Lambda 콘솔에서 VS Code로 워크플로를 이동하는 방법을 설명합니다. Lambda 콘솔 작업을 시작하는 방법을 포함하여 Lambda 함수를 Lambda 콘솔에서 VS Code로 이동하는 방법에 대한 자세한 내용은 *AWS Lambda 개발자 안내서*의 [VS Code를 사용하여 로컬에서 Lambda 함수 개발](https://docs.aws.amazon.com/lambda/latest/dg/foundation-iac-local-development.html)을 참조하세요.

## 콘솔에서 로컬 개발로 이동
<a name="w2aac17c43c13b7"></a>

Lambda 콘솔에서 VS Code로 Lambda 함수를 열기 위해서 다음 단계를 완료합니다.

1. 웹 브라우저에서 [Lambda 콘솔](https://console.aws.amazon.com/lambda)을 엽니다.

1. Lambda 콘솔에서 VS Code로 열고자 하는 함수를 선택합니다.

1. 함수 보기에서 **코드 소스** 탭으로 이동합니다.

1. **코드 소스** 탭에서 **VS Code에서 열기**를 선택합니다.

## VS Code에서 Lambda 함수 작업
<a name="w2aac17c43c13b9"></a>

Lambda 콘솔을 통해 Lambda 함수가 VS Code에서 열리는 경우는 다음과 같습니다.
+ VS Code는 로컬 머신에서 자동으로 시작됩니다.
+ Lambda 함수가 VS Code 워크스페이스로 열립니다.
+ VS Code 편집기에서 Lambda `handler file`을(를) 엽니다.
**참고**  
워크스페이스에서 `handler file` 구성이 제대로 되지 않은 경우, VS Code 편집기에서 파일이 열리지 않습니다.

Lambda 콘솔을 통해 VS Code에서 Lambda 함수를 열면 전체 언어 지원, 로컬 테스트, 원격 디버깅, 배포 지원 및 종속성 관리를 통해 함수 코드를 편집하는 기능을 포함하여 모든 기존 AWS Toolkit Lambda 기능에 액세스할 수 있습니다. AWS 도구 키트에서 지원되는 Lambda 기능에 대한 자세한 내용은이 사용 설명서의 [AWS Lambda](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/building-lambda.html) 서비스 목차를 참조하세요.

# AWS Lambda LocalStack 지원
<a name="lambda-localstack"></a>

 AWS Toolkit for Visual Studio Code에서 LocalStack 지원을 통해 서버리스 애플리케이션을 빌드, 테스트 및 디버깅합니다. LocalStack은 서버리스 애플리케이션의 로컬 테스트를 허용하는 AWS 클라우드 에뮬레이터입니다.

에 대한 자세한 내용은 [AWS Lambda](https://docs.aws.amazon.com//lambda/latest/dg/welcome.html) *개발자 안내서*를 AWS Lambda참조하세요. LocalStack에 대해 자세히 알아보려면, [LocalStack](https://www.localstack.cloud/) 웹사이트를 방문하세요.

## 사전 조건
<a name="prereq"></a>

 다음은 VS Code에서 LocalStack을 사용하기 위한 사전 조건입니다.

**참고**  
LocalStack CLI는 설정 과정에서 설치되지만 다른 버전의 LocalStack CLI를 선호한다면, 필요한 최소 버전은 *4.8.0*입니다.
+ 무료 및 유료 LocalStack 계층에서 사용할 수 있는 모든 기능에 액세스하려면 LocalStack 웹 애플리케이션 계정이 필요합니다. LocalStack 커뮤니티 에디션은 계정 없이 사용할 수 있습니다.
+ VS Code에서 LocalStack을 사용하려면 Docker가 필요합니다. Docker의 LocalStack 요구 사항에 대한 자세한 내용은 LocalStack 설명서의 LocalStack [Docker 이미지](https://docs.localstack.cloud/aws/capabilities/config/docker-images/) 주제를 참조하세요.
+ **권장 사항:** AWS Command Line Interface (AWS CLI)는 시뮬레이션된 클라우드 환경에서 서비스를 사용하는 데 도움이 됩니다.

## LocalStack 설치
<a name="install"></a>

 LocalStack 무료 및 유료 계층형 버전을 설치하려면 다음의 단계를 완료하세요.

**참고**  
LocalStack 커뮤니티 에디션을 설정하는 방법에 대한 지침은 이 주제의 *LocalStack 설정* 섹션의 *LocalStack 커뮤니티* 콘텐츠를 참조하세요.

1.  AWS 도구 키트에서 **애플리케이션 BUILDER** 탐색기를 확장합니다.

1. **연습 열기** 버튼을 선택하여 VS Code 편집기에서 **애플리케이션 빌드 시작하기** 연습 탭을 엽니다.

1. 연습에서 **LocalStack 설치**를 선택하여 VS Code에서 LocalStack 설치 프로세스를 시작합니다.

## LocalStack 설정
<a name="setup"></a>

VS Code용 LocalStack 확장을 설치한 후 설정이 필요할 때 다음 지표 중 하나가 표시될 수 있습니다.
+ 기본적으로 IDE의 왼쪽 하단에 있는 VS 코드 상태 표시줄에서 LocalStack 상태는 빨간색입니다.
+ VS Code는 LocalStack을 설정하라는 프롬프트를 표시합니다.

사용 중인 LocalStack 버전에 따라 LocalStack의 설정 및 구성은 두 가지 유형으로 나뉩니다. 다음 탭 섹션은 각 LocalStack 설정 프로세스를 설명합니다.

**참고**  
LocalStack 인증 토큰은 LocalStack의 무료 및 유료 계층 버전에 필요합니다. LocalStack 요금에 대한 자세한 내용은 [나의 플랜 선택하기](https://www.localstack.cloud/pricing) 요금 가이드를 참조하세요.

### LocalStack 무료 및 유료 계층
<a name="free-paid"></a>

두 가지 방법으로 LocalStack을 설정할 수 있습니다.
+ VS Code의 **시작하기 위해 LocalStack 설정** 프롬프트에서 **설정** 버튼을 선택합니다.
+ VS Code 상태 표시줄에서 LocalStack 상태 아이콘을 선택하여 **시작하기 위해 LocalStack 설정** 프롬프트를 연 다음 **설정** 버튼을 선택합니다.

설정 중에 시스템은 다음의 단계를 거칩니다.

1. LocalStack CLI를 설치합니다.

1. LocalStack 계정이 있는지 확인합니다.

1. LocalStack 계정이 있는 경우 시스템이 기본 웹 브라우저의 인증 프로세스를 안내합니다. 이와 유사하게, LocalStack 계정이 없는 경우에는 인증 프로세스 전에 계정 설정을 먼저 안내합니다.

LocalStack이 설정되면 VS Code 상태 표시줄에서 LocalStack 상태가 업데이트됩니다.

**참고**  
LocalStack에 대한 AWS 프로필을 생성하지 않은 경우 LocalStack 설정 프로세스의 일부로 새 프로필이 자동으로 생성됩니다.

### LocalStack 커뮤니티
<a name="community"></a>

LocalStack 커뮤니티 에디션은 무료로 사용할 수 있으며 계정에 가입할 필요가 없습니다. 라이선스가 필요하지 않은 Docker 이미지에서 실행됩니다. LocalStack Community Edition에 대한 추가적인 내용은 [LocalStack 커뮤니티 이미지](https://docs.localstack.cloud/references/docker-images/) 설명서를 참조하세요. 다음 섹션에서는 VS Code에서 LocalStack 커뮤니티 에디션을 사용하는 데 필요한 사전 조건과 기본 설정에 대해 설명합니다.

**새 인스턴스 시작**

 LocalStack 커뮤니티의 새 인스턴스를 시작하려면 다음 절차를 완료하세요.

**참고**  
다음 예시는 포트 4566에서 LocalStack 컨테이너 인스턴스를 시작합니다. 다른 포트 값을 지정하는 경우 * AWS CLI 및 AWS 도구 키트 구성* 섹션에 있는 절차에 지정된 포트 값을 업데이트해야 합니다.

1. VS Code에서 **ctrl \$1 `(backtick)**를 눌러 VS Code 터미널을 엽니다.

1. 터미널 창에 다음 명령을 입력합니다.

   **Mac:**

   ```
   docker run -d --name localstack_main \
   >> -p 4566:4566 \
   >> -v /var/run/docker.sock:/var/run/docker.sock \
   >> localstack/localstack
   ```

   **Windows**:

   ```
   docker run -d --name localstack_main `
   >> -p 4566:4566 `
   >> -v /var/run/docker.sock:/var/run/docker.sock `
   >> localstack/localstack
   ```

1. 프로세스가 완료되면 터미널이 Docker 인스턴스 상태로 업데이트됩니다.

이 컨테이너화된 LocalStack 인스턴스를 사용하면 다운로드 프로세스 중에 지정한 AWS 서비스에 액세스할 수 있습니다.

**LocalStack 및 Docker용 CLI 구성**

 Docker에서 LocalStack과 함께 작동하도록 AWS CLI 및 AWS 도구 키트를 구성하려면 다음 단계를 완료하여 새 프로파일을 설정합니다.

1. VS Code에서 **ctrl \$1 `(backtick)**를 눌러 VS Code 터미널을 엽니다.

1. 터미널 창에 다음 명령을 입력합니다.

   ```
   ~/.aws/credentials
   [localstack]
   aws_access_key_id = test
   aws_secret_access_key = test
   ~/.aws/config
   [profile localstack]
   region = us-east-1
   output = json
   endpoint_url = http://localhost:4566 [default localstack endpoint]
   ```

1.  AWS 도구 키트는 LocalStack 프로필을 감지하고 연결 상태 메뉴를 업데이트합니다.

설정 후 상태 표시줄의 프로필 섹션에서 LocalStack AWS 프로필을 선택하면 AWS 탐색기에 LocalStack 리소스가 표시됩니다. 또한, VS Code 터미널의 **출력** 탭에서 LocalStack 로그를 볼 수 있습니다.

## VS Code에서 LocalStack 시작
<a name="w2aac17c43c17c13"></a>

다음 방법 중 하나를 사용하여 LocalStack을 시작할 수 있습니다.

**VS 코드 상태 표시줄에서 LocalStack 시작**

1. VS Code에서 상태 표시줄로 이동한 다음 **LocalStack 시작** 버튼을 선택하여 LocalStack을 시작합니다.

1. LocalStack이 성공적으로 시작되면 VS 코드 상태 표시줄이 업데이트됩니다.

**VS Code **명령 팔레트**에서 LocalStack 시작**

1. VS Code에서 **Cmd \$1 Shift \$1 P** (Mac) 또는 **Control \$1 Shift \$1 P** (Windows)를 눌러 **명령 팔레트**를 엽니다.

1. **명령 팔레트**의 검색 창에 **Start LocalStack**를 입력하고 결과 목록에 표시되면 해당 항목을 선택합니다.

1. LocalStack이 성공적으로 시작되면 VS 코드 상태 표시줄이 업데이트됩니다.

**VS Code 터미널에서 LocalStack 시작**

1. VS Code에서 **ctrl \$1 `(backtick)**를 눌러 VS Code 터미널을 엽니다.

1. VS Code 터미널에서 **localstack start** CLI 명령을 입력합니다.

1. LocalStack이 성공적으로 시작되면 VS 코드 상태 표시줄이 업데이트됩니다.

## 샘플 서버리스 애플리케이션 빌드
<a name="serverless"></a>

 VS Code에서 LocalStack 작업을 시작하려면 샘플 서버리스 애플리케이션이 필요합니다. AWS 계정에 기존 애플리케이션이 이미 있는 경우 LocalStack을 사용하여 로컬로 배포하거나 AWS Serverless Land를 사용하여 새 애플리케이션을 생성할 수 있습니다.

 AWS Toolkit에서 서버리스 랜드를 사용하여 애플리케이션을 생성하는 방법에 대한 자세한 내용은 이 사용 설명서의 [AWS 서버리스 랜드 작업](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/serverlessland-overview.html) 주제를 참조하세요. 서버리스 랜드에 대한 자세한 내용은 [서버리스 랜드](https://serverlessland.com/) 웹 애플리케이션 기본 랜딩 페이지를 참조하세요.

## LocalStack으로 Lambda 함수 테스트 및 디버깅
<a name="test-debug"></a>

LocalStack VS Code 확장에서 Lambda 함수를 테스트하고 디버깅하는 것은 AWS 클라우드에 배포된 함수로 작업하는 것과 유사합니다. 주요 차이점은 LocalStack을 사용하여 함수를 배포하고 디버깅하려면 AWS Toolkit 인스턴스를 LocalStack 계정으로 인증해야 한다는 것입니다.

**참고**  
이 섹션에서 설명하는 테스트 및 디버깅 기능은 LocalStack 커뮤니티 에디션에서는 사용할 수 없습니다.  
VS Code에서 LocalStack을 사용하려면 AWS Toolkit의 LocalStack 프로파일에 연결합니다. LocalStack 프로파일이 활성화되면 VS Code 상태 표시줄에 확인 표시가 있는 **AWS: profile:localstack(사용자 지정 엔드포인트)**이 표시됩니다.

 AWS 도구 키트에서 Lambda 함수 작업에 대한 자세한 내용은이 사용 설명서의 [AWS Lambda 함수 작업](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/remote-lambda.html) 주제를 참조하세요.

# AWS Lambda 원격 디버깅
<a name="lambda-remote-debug"></a>

 AWS Toolkit for Visual Studio Code 를 사용하면 클라우드에서 실행되는 AWS Lambda 함수를 VS Code에서 직접 디버깅할 수 있습니다. AWS Lambda 원격 디버깅을 사용하면 기존 개발 워크플로를 수정하지 않고도 실행 중인 함수를 검사하고, 중단점을 설정하고, 변수를 검사하고, 단계별 디버깅을 수행할 수 있습니다.

다음 섹션에서는 AWS Toolkit for Visual Studio Code에서 Lambda 원격 디버깅을 사용하는 방법을 설명합니다.

## Lambda 원격 디버깅 작동 방식
<a name="w2aac17c43c19b7"></a>

 AWS 도구 키트는 추가 Lambda 디버깅 계층으로 Lambda 함수를 일시적으로 수정하고 Lambda 호출 제한 시간을 900초로 확장하여 원격 디버깅을 활성화합니다. AWS IoT 보안 터널링을 사용하여 로컬 디버거와 Lambda 런타임 환경 간에 보안 연결이 설정합니다. 이 연결을 사용하면 로컬 코드 중단점을 이용해 원격으로 실행되는 함수를 단계별로 수행할 수 있습니다. 디버깅 세션이 완료되면, 모든 임시 수정 사항이 자동으로 원래 설정으로 되돌아갑니다.

## 시작하기
<a name="w2aac17c43c19b9"></a>

### 지원되는 런타임
<a name="w2aac17c43c19b9b3"></a>

Lambda 원격 디버깅에서는 다음 런타임이 지원됩니다.
+ Python(Amazon Linux 2023)
+ Java
+ Typescript/JavaScript/Node.js(Amazon Linux 2023)

**참고**  
Lambda 관리형 인스턴스 및 OCI 이미지 함수 유형은 Lambda 원격 디버깅에서 지원되지 않습니다.

### 사전 조건
<a name="w2aac17c43c19b9b5"></a>

시작하기 전에 다음 사전 요구 사항이 충족되어야 합니다.
+  AWS 도구 키트에 유효한 AWS 자격 증명이 구성되어 있어야 합니다. AWS 도구 키트 설치 및 자격 증명 구성에 대한 자세한 내용은이 사용 설명서의 [시작하기](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/setting-up.html) 주제를 참조하세요.
+ Lambda 함수가 AWS 계정에 배포되었습니다. Lambda 함수 배포에 대한 자세한 내용은 *AWS Lambda* 개발자 안내서의 [첫 번째 Lambda 함수 생성](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html) 주제를 참조하세요.
+ 함수를 디버깅하려면 적절한 AWS Identity and Access Management (IAM) 정책 및 권한이 있어야 합니다. Lambda 권한에 대한 자세한 내용은 *AWS Lambda* 개발자 안내서의 [AWS Lambda용AWS 관리형 정책](https://docs.aws.amazon.com//lambda/latest/dg/security-iam-awsmanpol.html)을 참조하세요. 다음은 AWS Toolkit에서 Lambda 원격 디버깅을 사용하는 데 필요한 최소 권한을 포함하는 정책 예시입니다.
**참고**  
원격 디버깅은 AWS AWS IoT 보안 터널링을 통해 활성화됩니다. 이를 통해 로컬 디버거가 Lambda 런타임 환경에 보안 연결을 설정할 수 있습니다.

  ```
  {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lambda:ListFunctions",
          "lambda:GetFunction",
          "lambda:GetFunctionConfiguration",
          "lambda:GetLayerVersion",
          "lambda:UpdateFunctionConfiguration",
          "lambda:InvokeFunction",
          "lambda:PublishVersion",
          "lambda:DeleteFunction",
          "iot:OpenTunnel",
          "iot:RotateTunnelAccessToken",
          "iot:ListTunnels"
        ],
        "Resource": "*"
      }
    ]
  }
  ```

## Lambda 원격 디버깅 액세스
<a name="w2aac17c43c19c11"></a>

 AWS 도구 키트에는 탐색기 또는 Application Builder AWS 탐색기라는 두 가지 주요 경로가 있습니다. AWS 탐색기에서 노드를 통해 Lambda 원격 디버깅에 액세스할 수 있습니다 AWS Lambda . Application Builder 탐색기에서 로컬 AWS SAM 프로젝트를 통해 Lambda 원격 디버깅에 액세스할 수 있습니다.

**AWS 탐색기에서 Lambda 원격 디버깅 액세스**

1. VS Code에서 AWS 도구 키트 확장을 엽니다.

1.  AWS 도구 키트에서 AWS 탐색기를 확장합니다.

1. 탐색기에서 **Lambda** 노드를 확장합니다.

1. 디버깅하려는 함수로 이동한 다음 컨텍스트 메뉴에서 **원격 간접 호출** 아이콘을 선택하여 **원격 간접 호출 구성** 화면을 엽니다.

**Application Builder 탐색기에서 Lambda 원격 디버깅에 액세스**

1. VS Code에서 AWS 도구 키트 확장을 엽니다.

1.  AWS 도구 키트에서 애플리케이션 빌더 탐색기를 확장합니다.

1. 탐색기에서 디버깅하려는 Lambda 프로젝트가 포함된 `AWS SAM` 프로젝트를 확장합니다.

1. 디버깅하려는 배포된 `Lambda` 함수를 확장합니다.

1. 함수 원격으로 이동한 다음 컨텍스트 메뉴에서 **원격 간접 호출** 아이콘을 선택하여 **원격 간접 호출 구성** 화면을 엽니다.

## Lambda 원격 디버깅 작업
<a name="w2aac17c43c19c13"></a>

다음 섹션에서는 AWS Toolkit for Visual Studio Code에서 Lambda 원격 디버깅을 사용하는 방법을 설명합니다.

**참고**  
Lambda 함수는 함수 코드 및 연결된 모든 계층을 포함해 최대 5개의 계층과 합산 250MB의 제한이 있습니다. Lambda 원격 디버깅을 실행하려면 최소 1개의 빈 계층이 필요합니다.

### 디버깅 세션 설정
<a name="w2aac17c43c19c13b7"></a>

시작하기 전에 다음 절차를 완료하여 디버깅 세션을 구성합니다.

1. * AWS 탐색기에서 Lambda 원격 디버깅 액세스* 또는 이전 섹션에 있는 *Application Builder 탐색기에서 Lambda 원격 디버깅 액세스* 절차를 완료하여 **원격 호출 구성** 메뉴를 엽니다.

1. **원격 간접 호출 구성** 메뉴에서 **원격 디버깅** 확인란을 선택하여 원격 디버깅 속성을 표시합니다.

1. 로컬 핸들러 파일의 **로컬 루트 경로**를 지정합니다.
**참고**  
로컬 루트 경로는 배포된 Lambda 함수와 일치하는 소스 코드의 위치입니다. Application Builder 탐색기의 배포된 함수에서 작업하는 경우 로컬 루트 경로가 자동으로 감지됩니다.  
소스 코드가 로컬에 저장되어 있지 않은 경우 **원격 코드 다운로드** 버튼을 선택하여 Lambda 함수 소스 코드를 검색합니다. 그러면 VS Code 편집기에서 `handler file`이 열립니다.

1. **페이로드** 섹션에서 테스트 이벤트 데이터를 가져올 위치를 지정합니다.

### 중단점 설정 및 디버깅
<a name="w2aac17c43c19c13b9"></a>

다음 절차를 완료하여 중단점을 설정하고 디버깅을 시작합니다.

1. VS Code 편집기의 `handler file`에서 거터-마진을 클릭하여 디버깅을 일시 중지하려는 행 번호에 중단점을 설정합니다.

1. 중단점을 원하는대로 설정했으면, **원격 간접 호출 구성** 메뉴로 돌아가 설정이 올바르게 구성되었는지 확인한 다음 **원격 호출** 버튼을 선택하여 디버깅을 시작합니다.

1. 도구 AWS 키트는 디버깅 기능으로 Lambda 함수를 업데이트하고, 디버깅 세션에 대한 보안 터널을 설정하고, 지정된 페이로드로 함수를 호출한 다음, 중단점에 도달하면 프로세스를 일시 중지합니다.

1. 중단점에서 일시 중지했을 시, **RUN AND DEBUG** 창을 사용하여 **VARIABLES**, **CALL STACK** 및 **BREAKPOINTS**를 확인합니다.

### 함수 업데이트 및 테스트
<a name="w2aac17c43c19c13c11"></a>

빠른 배포로 코드를 수정하고 변경 사항을 테스트하려면 다음 절차를 완료하세요.

1. 디버깅 세션이 활성화된 상태에서 VS Code 편집기에서 `handler file`의 내용을 변경합니다.

1. 변경 내용 저장(**Command\$1S on macOS**,**Ctrl\$1S on Windows**)

1. 프롬프트가 표시되면 변경 사항 배포를 진행할지 확인합니다. AWS 도구 키트는 수정된 코드로 Lambda 함수를 업데이트합니다.

1. 새 중단점을 설정하고 **원격 간접 호출** 버튼을 다시 선택하여 변경 사항을 계속 디버깅하고 테스트합니다.
**참고**  
 혹은, VS Code 디버깅 컨트롤에서 **디버거 연결** 옵션을 선택 취소하고 **원격 간접 호출** 버튼을 선택하여 디버깅 없이 함수를 실행할 수 있습니다.

### 디버깅 세션 종료
<a name="w2aac17c43c19c13c13"></a>

다음 각 옵션은 원격 디버깅 세션을 종료하고 프로젝트에서 디버그 계층을 제거합니다.
+ **원격 간접 호출 구성** 화면에서 **디버그 설정 제거**를 선택합니다.
+ VS Code 디버깅 제어에서 **연결 해제** 아이콘을 선택합니다.
+ VS Code 편집기에서 `handler file`(을)를 닫습니다.

**참고**  
다음에 유의하세요.  
Lambda 디버그 계층은 60초 동안 활동이 없으면 자동으로 제거됩니다. 마지막 간접 호출이 완료되면 시간 계산이 시작됩니다.
디버깅 프로세스 중에 코드infrastructure-as-code(IaC) 관리형(AWS SAM, AWS CDK, Terraform) 함수에 코드를 변경한 경우 로컬 프로젝트에 저장하고 소스 제어 리포지토리를 업데이트하는 것이 좋습니다. 저장되지 않은 변경 사항은 IaC 함수를 재배포할 때 덮어씁니다.
디버깅 목적으로만 임시로 변경한 경우, 소스 제어에서 함수를 재배포하여 프로덕션 코드와 일치하는지 확인할 수 있습니다.

### 소스 맵으로 TypeScript Lambda 함수 디버깅
<a name="typescript-source-maps"></a>

다음 섹션에서는 소스 맵을 사용해 TypeScript Lambda 함수를 디버깅하는 방법을 설명합니다.

#### 사전 조건
<a name="w2aac17c43c19c13c15b5"></a>

TypeScript Lambda 함수를 디버깅하려면 다음 사전 조건을 충족해야 합니다.
+ TypeScript는 소스 맵 옵션이 활성화된 상태로 컴파일되어야 합니다. 자세한 내용은 VS Code 설명서의 [JavaScript 소스 맵 지원](https://code.visualstudio.com/docs/typescript/typescript-debugging#_javascript-source-map-support) 주제를 참조하세요.
+ 인라인 소스 맵은 지원되지 않습니다. 소스 맵을 저장하려면 별도의 `.js.map` 파일을 사용해야 합니다.

#### 구성
<a name="w2aac17c43c19c13c15b7"></a>

 AWS 도구 키트에서 TypeScript Lambda 함수에 대한 Lambda 원격 디버깅을 구성하려면 다음 단계를 완료합니다.

1.  AWS 도구 키트에서 AWS 탐색기를 확장합니다.

1. 탐색기에서 **Lambda** 노드를 확장합니다.

1. TypeScript로 구성하려는 함수로 이동한 다음, 컨텍스트 메뉴에서 **원격 간접 호출** 아이콘을 선택하여 **원격 간접 호출 구성** 화면을 엽니다.

1. **원격 디버깅** 확인란을 선택하여 원격 디버깅을 활성화합니다.

1. `TypeScript handler file`가 포함된 디렉터리를 가리켜 **로컬 루트 경로**를 구성합니다.
**참고**  
`TypeScript handler file`에서 디버깅 중단점을 설정합니다.

1. **원격 디버그 추가 구성** 설정을 확장합니다.

1. **소스 맵** 확인란을 선택하여 소스 매핑을 활성화합니다.

1. **출력 파일** 필드를 Lambda 함수 복사본의 로컬 디렉터리로 설정합니다.  
**Example**  

   `app.js` 및 `app.map`이 `.aws-sam/build/HelloWorldFunction`에 있는 경우, **출력 파일** 위치를 `/Users/user/project/aws-sam/build/HelloWorldFunction/*`로 설정합니다.
**참고**  
**출력 파일** 경로는 절대 경로여야 합니다.  
 AWS SAM 및 AWS CDK 프로젝트의 경우 AWS 도구 키트는 자동 소스 맵 감지를 지원합니다. 이러한 프로젝트에 대해 **출력 파일** 필드를 비워 두면 도구 키트는 소스 맵 위치를 자동으로 감지하려고 시도합니다.

1. 원하는대로 설정했으면 **원격 간접 호출** 버튼을 선택하여 TypeScript 함수 디버깅을 시작합니다.

## 문제 해결 및 고급 사용 사례
<a name="troubleshooting"></a>

디버그 세션이 실패하면 다음의 단계를 완료하여 문제 해결 프로세스를 시작합니다.

1.  AWS 도구 키트를 최신 버전으로 업데이트합니다.

1. **원격 간접 호출 구성** 웹 보기를 닫고 다시 열어 웹 보기를 새로 고침 합니다.

1. VS Code를 완전히 닫고 다시 열어 재시작합니다.

1. VS Code 명령 팔레트를 열고 **AWS: Reset Lambda Remote Debugging Snapshot** 명령을 입력한 다음, 결과에 명령이 채워지면 해당 명령을 선택하여 Lambda 원격 디버깅 스냅샷을 재설정합니다.

1. 문제를 해결할 수 없는 경우 [AWS Toolkit for Visual Studio Code GitHub Issues](https://github.com/aws/aws-toolkit-vscode/issues)에 문제를 제출합니다.

### 고급 사용 사례: 코드 서명 구성
<a name="troubleshooting-code-signing-configuration"></a>

원격 디버깅을 수행하려면 Lambda 함수에 디버그 계층을 연결해야 합니다. 함수에 코드 서명 구성이 활성화되고 적용되는 경우 AWS 도구 키트는 디버그 계층을 함수에 자동으로 연결할 수 없습니다.

두 가지 옵션으로 코드 서명 구성 문제를 해결할 수 있습니다.
+ 코드 서명을 일시적으로 제거합니다.
+ 서명된 디버그 계층을 사용합니다.

#### 코드 서명 일시적으로 제거
<a name="troubleshooting-code-signing-configuration-temp-remove"></a>

`UntrustedArtifactOnDeployment : Warn` 설정으로 코드 서명 구성을 업데이트한 다음 디버깅 프로세스가 완료된 후 `Enforced`로 다시 활성화합니다.

자세한 내용은 *AWS Lambda API 참조*의 [UpdateCodeSigningConfig](https://docs.aws.amazon.com//lambda/latest/api/API_UpdateCodeSigningConfig.html) 참조 사항을 확인하세요.

#### 서명된 디버그 계층 사용
<a name="troubleshooting-code-signing-configuration-signed-debug-layer"></a>

1.  AWS 도구 키트의 Lambda 원격 디버깅에서 **원격 디버깅 추가 구성** 섹션을 확장합니다.

1. **원격 디버그 추가 구성** 섹션의 **계층 재정의** 필드에서 리전 계층 ARN을 복사합니다.

1. 에서 다음 명령을 AWS CLI사용하여 계층 버전를 다운로드하고 *layer-arn*을 계층 ARN으로 `aws lambda get-layer-version-by-arn --arn layer-arn`바꿉니다. 서명된 디버그 계층을 다운로드하는 방법에 대한 자세한 지침은 *AWS CLI 명령 참조*의 [get-layer-version-by-arn](https://docs.aws.amazon.com/cli/latest/reference/lambda/get-layer-version-by-arn.html) 참조를 확인하세요.

1. 코드 서명 구성으로 계층에 서명하고 계정에 게시합니다. 서명 및 게시 지침은 *AWS Serverless Application Model 개발자 안내서*의 [AWS SAM 애플리케이션에 대한 코드 서명 설정을 참조하세요](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/authoring-codesigning.html).

1. 계층이 서명되어 계정에 게시되면 Lambda 원격 디버깅의 **원격 디버그 추가 구성** 섹션으로 돌아가서 **계층 재정의** 필드에 새 계층 ARN을 입력합니다. 프로세스가 완료되면 Lambda 원격 디버깅은 기본 계층 대신 서명된 계층을 사용합니다.

### 고급 사용 사례: SnapStart 또는 프로비저닝된 동시성을 사용하여 함수 디버깅
<a name="troubleshooting-snapstart-provisioned-concurrency"></a>

SnapStart 또는 프로비저닝된 동시성으로 구성된 Lambda 함수의 경우 새 버전을 게시하는 데 훨씬 더 많은 시간이 걸립니다. 디버깅 워크플로의 속도를 높이려면 새 `$LATEST` 버전을 게시하는 대신 함수의 버전만 업데이트하도록 Lambda 원격 디버깅을 구성할 수 있습니다.

1. **원격 호출 구성** 화면에서 **원격 디버그 추가 구성** 설정을 확장합니다.

1. **버전 게시** 옵션을 선택 취소합니다.

1. 이제 AWS 도구 키트는 함수의 `$LATEST` 버전만 업데이트하고 이를 사용하여 디버깅합니다.

**참고**  
`$LATEST` 버전을 사용한 디버깅의 부작용으로, 방해받지 않는 디버깅 환경을 보장하기 위해 `$LATEST` 버전을 호출할 수 있는 다른 트래픽을 피해야 합니다.

### 지원되는 리전
<a name="troubleshooting-regions"></a>

리전이 원격 디버깅을 지원하지 않는 경우 다음 오류가 발생합니다.

```
Region ${region} doesn't support remote debugging yet
```

다음은 지원되는 리전 목록입니다.
+ ap-east-1
+ ap-northeast-1
+ ap-northeast-2
+ ap-south-1
+ ap-southeast-1
+ ap-southeast-2
+ ca-central-1
+ eu-central-1
+ eu-north-1
+ eu-west-1
+ eu-west-2
+ eu-west-3
+ me-central-1
+ me-south-1
+ sa-east-1
+ us-east-1
+ us-east-2
+ us-west-1
+ us-west-2

### Lambda RequestEntityTooLargeException
<a name="troubleshooting-storage-limit"></a>

Lambda 함수는 함수 코드 및 연결된 모든 계층을 포함해 최대 5개의 계층과 합산 250MB의 제한이 있습니다. 원격 디버깅 계층은 약 40MB이므로 함수 패키지가 크거나 여러 계층이 있는 경우 함수가 제한을 초과할 수 있습니다. 자세한 내용은 *AWS Lambda 개발자 안내서*의 [Lambda: InvalidParameterValueException 또는 RequestEntityTooLargeException](https://docs.aws.amazon.com//lambda/latest/dg/troubleshooting-deployment.html#troubleshooting-deployment-InvalidParameterValueException1) 주제 섹션을 참조하세요.

다음 목록에서는 이 오류를 해결하고 수정하는 방법을 설명합니다.
+ **함수 크기 축소**: 함수 코드를 최적화하고 불필요한 종속성을 제거합니다.
+ **미사용 계층 제거**: 디버깅 중에 필수적이지 않은 계층을 일시적으로 제거합니다.
+ **외부 종속성 사용**: 대규모 종속성을 Amazon S3와 같은 외부 스토리지로 이동하고 런타임에 로드합니다.

### Java 디버깅 문제 해결
<a name="troubleshooting-java-debugging"></a>

Java Lambda 함수를 디버깅하려면 Lambda 함수의 런타임 버전과 일치하는 동일한 Java 버전이 로컬에 설치되어 있어야 합니다.

예를 들어 Java 25 함수를 디버깅할 때는 AWS 도구 키트가 실행 중인 로컬 환경에 Java 25가 설치되어 있어야 합니다. Java 21 또는 이전 버전이 로컬에 설치된 Java 25 함수를 디버깅하려고 하면 설정한 중단점에서 원격 디버깅을 중지할 수 없습니다.

디버깅 세션을 시작하기 전에 로컬 Java 버전이 Lambda 함수의 런타임 버전과 일치하는지 확인합니다.

### IoT 보안 터널링 할당량 초과
<a name="troubleshooting-tunnel-quota"></a>

다음은 Lambda 원격 디버깅에서 AWS IoT 보안 터널링 연결의 일일 한도에 도달했을 때 발생하는 터널 *할당량 초과 오류*의 예입니다.

```
Error creating/reusing tunnel: LimitExceededException: Exceeded quota of Lambda debugging tunnels
```

AWS IoT 보안 터널링 연결에는 다음과 같은 할당량이 있습니다.
+ 프리 티어 IoT 보안 터널링에는 하루에 10개의 연결이 할당됩니다.
+ 각 터널은 최대 12시간 동안 VS Code 인스턴스 하나를 지원합니다.
+ 할당량은 매일 AWS 계정별로 적용됩니다.

 AWS IoT 보안 터널링 오류가 발생하면 일일 할당량 재설정을 기다리거나 지원팀에 문의하여 AWS 할당량 제한 증가를 요청하십시오. AWS 지원 연락처 정보는 [AWS 지원 연락처 포털](https://aws.amazon.com/contact-us/)을 참조하세요. AWS IoT 보안 터널링에 대한 자세한 내용은 *AWS IoT 개발자 안내서*의 [AWS IoT 보안 터널링](https://docs.aws.amazon.com/iot/latest/developerguide/secure-tunneling.html) 주제를 참조하세요.