Visual Studio Code를 사용하여 Lambda 함수를 원격으로 디버깅
AWS Toolkit for Visual Studio Code
원격 디버깅을 사용하여 다음을 수행할 수 있습니다.
-
Lambda 함수 코드에서 중단점을 설정합니다.
-
실시간으로 코드 실행을 단계별로 진행합니다.
-
런타임 중에 변수와 상태를 검사합니다.
-
VPC에 있거나 특정 IAM 권한이 있는 함수를 포함하여 AWS에 배포된 Lambda 함수를 디버깅합니다.
지원되는 런타임
원격 디버깅은 다음 런타임에서 지원됩니다.
-
Python(AL2023)
-
Java
-
JavaScript/Node.js(AL2023)
참고
원격 디버깅은 x86_64 아키텍처와 arm64 아키텍처 모두에서 지원됩니다.
보안 및 원격 디버깅
원격 디버깅은 기존 Lambda 보안 경계 내에서 작동합니다. 사용자는 이미 함수 환경 변수 및 구성에 액세스할 권한이 있는 UpdateFunctionConfiguration
권한을 사용하여 함수에 계층을 연결할 수 있습니다. 원격 디버깅은 이러한 기존 권한을 초과하여 확장되지 않습니다. 대신 보안 터널링 및 자동 세션 관리를 통해 보안 제어를 추가합니다. 또한 원격 디버깅은 전적으로 고객이 제어하는 기능으로, 명시적 권한과 작업이 필요합니다.
-
IoT 보안 터널 생성: AWS Toolkit는
iot:OpenTunnel
을 사용하는 사용자의 명시적 권한으로만 발생하는 IoT 보안 터널을 생성해야 합니다. -
디버그 계층 연결 및 토큰 관리: 디버깅 프로세스는 다음 제어를 통해 보안을 유지합니다.
디버깅 계층은 Lambda 함수에 연결되어야 하며 이 프로세스에는
lambda:UpdateFunctionConfiguration
및lambda:GetLayerVersion
권한이 필요합니다.
각 디버그 세션을 시작하기 전에 보안 토큰(
iot:OpenTunnel
을 통해 생성됨)을 함수의 환경 변수에서 업데이트해야 하며, 이때lambda:UpdateFunctionConfiguration
도 필요합니다.
보안을 위해 이 토큰은 자동으로 교체되고 디버그 계층은 각 디버그 세션이 끝날 때 자동으로 제거되며 재사용할 수 없습니다.
참고
원격 디버깅은 x86_64 아키텍처와 arm64 아키텍처 모두에서 지원됩니다.
사전 조건
원격 디버깅을 시작하기 전에 다음이 있는지 확인합니다.
-
AWS 계정에 배포된 Lambda 함수.
-
AWS Toolkit for Visual Studio Code. 설치 지침은 Setting up the AWS Toolkit for Visual Studio Code를 참조하세요.
-
AWS Toolkit 버전 3.69.0 이상이 설치되어 있어야 합니다.
-
AWS에 구성된 AWS Toolkit for Visual Studio Code 자격 증명. 자세한 내용은 인증 및 액세스 제어 섹션을 참조하세요.
Lambda 함수를 원격으로 디버깅
다음 단계에 따라 원격 디버깅 세션을 시작합니다.
-
왼쪽 사이드바에서 AWS 아이콘을 선택하여 VS Code에서 AWS Explorer를 엽니다.
-
Lambda 섹션을 확장하여 함수를 확인합니다.
-
디버깅하려는 함수를 마우스 오른쪽 버튼으로 클릭합니다.
-
컨텍스트 메뉴에서 원격으로 간접 호출을 선택합니다.
-
열리는 호출 창에서 디버깅 활성화 확인란을 선택합니다.
-
간접 호출을 클릭하여 원격 디버깅 세션을 시작합니다.
참고
Lambda 함수는 함수 코드 및 연결된 모든 계층을 합쳐 250MB로 제한됩니다. 원격 디버깅 계층은 함수 크기에 약 40MB를 추가합니다.
원격 디버깅 세션은 다음과 같은 경우에 종료됩니다.
-
원격 간접 호출 구성 화면에서 디버그 설정 제거를 선택합니다.
-
VS Code 디버깅 제어에서 연결 해제 아이콘을 선택합니다.
-
VS Code Editor에서 핸들러 파일을 선택합니다.
참고
디버그 계층은 마지막 간접 호출 후 60초 동안 활동이 없으면 자동으로 제거됩니다.
원격 디버깅 비활성화
이 기능을 비활성화하는 세 가지 방법은 다음과 같습니다.
-
함수 업데이트 거부:
lambda:UpdateFunctionConfiguration
을deny
로 설정합니다. -
IoT 권한 제한: IoT 관련 권한을 거부합니다.
-
디버그 계층 차단: 다음 ARN에 대해
lambda:GetLayerVersion
을 거부합니다.arn:aws:lambda:*:*:layer:LDKLayerX86:*
arn:aws:lambda:*:*:layer:LDKLayerArm64:*
참고
이 기능을 비활성화하면 함수 구성 업데이트 중에 디버깅 계층이 추가되지 않습니다.
추가 정보
VS Code에서 Lambda를 사용하는 방법에 대한 자세한 내용은 VS Code를 사용하여 로컬에서 Lambda 함수 개발을 참조하세요.
문제 해결, 고급 사용 사례, 리전 가용성에 대한 자세한 지침은 AWS Toolkit for Visual Studio Code 사용자 가이드의 Remote debugging Lambda functions를 참조하세요.