서버리스 애플리케이션 디버깅을 위한 구성 옵션 - AWS VS 코드용 도구 키트

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

서버리스 애플리케이션 디버깅을 위한 구성 옵션

디버그 구성을 수정하기 위해 launch.json 파일을 열고 VS Code IntelliSense 기능을 사용하여 유효한 속성을 보고 자동으로 완성할 수 있습니다. 편집기에서Ctrl+Spacebar를 눌러 IntelliSense를 실행합니다.

VS Code의 IntelliSense를 사용하여 유효한 디버그 속성을 찾아 완료하세요.

IntelliSense를 사용하면 바로 또는 AWS SAM 템플릿을 사용하여 Lambda 함수 호출의 속성을 찾아 정의할 수 있습니다. "lambda"(함수 실행 방법), "sam"(AWS SAM CLI가 애플리케이션을 빌드하는 방법) 및 "aws"(AWS 연결 정보를 제공하는 방법)에 대한 속성을 정의할 수도 있습니다.

AWS SAM Lambda 핸들러 직접 호출/템플릿 기반 Lambda 호출
속성 설명

type

시작 구성을 관리하는 확장 프로그램을 지정합니다. AWS SAM CLI를 사용하여 로컬에서 빌드하고 디버그하려면 항상 aws-sam으로 설정하세요.

name

Debug launch configuration 목록에 표시할 알아보기 쉬운 이름을 정합니다.

request

지정된 확장 프로그램(aws-sam)으로 실행할 구성의 유형을 정합니다. 항상 Lambda 함수를 시작하도록 direct-invoke로 설정합니다.

invokeTarget

리소스를 호출하기 위한 진입점을 지정합니다.

Lambda 함수를 직접 호출하려면 다음 invokeTarget 필드의 값을 설정합니다.

  • targetcode로 설정합니다.

  • lambdaHandler - 호출할 Lambda 함수 핸들러의 이름입니다.

  • projectRoot - Lambda 함수 핸들러가 포함된 애플리케이션 파일의 경로입니다.

  • architecture— 로컬 SAM Lambda 애플리케이션이 실행되는 에뮬레이트된 환경의 프로세서 아키텍처입니다. 특정 런타임의 경우 기본 x86_64 아키텍처 대신 arm64을 선택할 수 있습니다. 자세한 내용은 새 서버리스 애플리케이션 생성 (로컬) 섹션을 참조하세요.

AWS SAM 템플릿을 사용하여 Lambda 리소스를 호출하려면 다음 invokeTarget 필드 값을 설정합니다.

  • targettemplate으로 설정합니다.

  • templatePath – AWS SAM 템플릿 파일의 경로입니다.

  • logicalId - 호출할 AWS::Lambda::Function 또는 AWS::Serverless::Function의 리소스 이름입니다. 리소스 이름은 YAML 형식의 AWS SAM 템플릿에서 확인할 수 있습니다. 참고로 AWS Toolkit는 AWS SAM 템플릿에서 PackageType: Image로 정의된 함수를 이미지 기반 Lambda 함수로 인식합니다. 자세한 내용은 AWS Lambda개발자 안내서Lambda deployment packages를 참조하세요.

Lambda("lambda") 속성
속성 설명

environmentVariables

연산 파라미터를 Lambda 함수에 전달합니다. 예를 들어, Amazon S3 버킷에 기록하는 경우 기록하고 있는 버킷 이름을 하드 코딩하는 대신 환경 변수로 구성합니다.

참고

서버리스 애플리케이션의 환경 변수를 지정할 때는 AWS SAM 템플릿 (template.yaml)과 launch.json 파일의 구성을 모두 추가해야 합니다.

AWS SAM 템플릿의 환경 변수 형식 지정 예:

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello-world/ Handler: app.lambdaHandlerN10 Runtime: nodejs10.x Environment: Variables: SAMPLE1: Default Sample 1 Value

launch.json 파일의 환경 변수 형식 지정 예:

"environmentVariables": { "SAMPLE1": "My sample 1 value" }

payload

Lambda 함수에 입력으로 제공할 이벤트 페이로드에 두 가지 옵션이 있습니다.

  • "json": 이벤트 페이로드를 정의하는 JSON 형식의 키 값 페어를 정의합니다.

  • "path": 이벤트 페이로드로 사용되는 파일의 경로입니다.

memoryMB

호출된 Lambda 함수의 실행하기 위한 메모리의 용량(메가바이트)을 지정합니다.

runtime

Lambda 함수가 사용하는 런타임을 지정합니다. 자세한 내용은 AWS Lambda 런타임을 참조하세요.

timeoutSec

디버그 세션이 시간 초과 전까지 허용되는 시간(초)을 설정합니다.

pathMappings

컨테이너에서 실행되는 위치와 관련하여 로컬 코드의 위치를 지정합니다.

기본적으로 Toolkit for VS Code는 localRoot를 로컬 작업 폴더에 있는 Lambda 함수의 코드 루트로 설정하고 remoteRoot를 Lambda에서 실행되는 코드의 기본 작업 디렉토리인 /var/task로 설정합니다. Dockerfile에서 또는 AWS CloudFormation 템플릿 파일의 WorkingDirectory 파라미터로 작업 디렉토리를 변경했다면 디버거가 로컬로 설정된 중단점을 Lambda 컨테이너에서 실행 중인 코드에 성공적으로 매핑할 수 있도록 최소한 하나의 pathMapping 항목을 지정해야 합니다.

launch.json 파일에서 pathMappings의 형식 지정하기 예시:

"pathMappings": [ { "localRoot": "${workspaceFolder}/sam-app/HelloWorldFunction", "remoteRoot": "/var/task" } ]

경고

  • .NET 이미지 기반 Lambda 함수의 경우 remoteRoot 항목은 빌드 디렉터리입니다.

  • Node.js 기반 Lambda 함수의 경우 단일 경로 매핑 항목만 지정할 수 있습니다.

VS Code용 도구 키트는 AWS SAM CLI를 사용하여 서버리스 애플리케이션을 로컬에 빌드하고 디버그합니다. launch.json 파일에 있는 "sam" 구성의 속성을 사용하여 AWS SAM CLI 명령어의 동작을 구성 할 수 있습니다.

AWS SAM CLI("sam") 속성
속성 설명 기본값

buildArguments

sam build 명령으로 Lambda 소스 코드를 빌드하는 방법을 알아보세요. 빌드 옵션을 보려면 AWS Serverless Application Model 개발자 가이드에서 sam build를 참조하세요.

빈 문자열

containerBuild

Lambda와 유사한 Docker 컨테이너 내부에 함수에 빌드할지 여부를 나타냅니다.

false

dockerNetwork

Lambda Docker 컨테이너에 연결되어 있는 기존 Docker 네트워크의 이름 또는 ID와 더불어 기본 브리지 네트워크를 지정합니다. 지정하지 않으면 Lambda 컨테이너는 기본 브리지 Docker 네트워크에만 연결됩니다.

빈 문자열

localArguments

추가 로컬 호출 인수 지정.

빈 문자열

skipNewImageCheck

명령어로 Lambda 런타임의 최신 Docker 이미지를 가져오는 단계를 건너뛸지 여부를 지정합니다.

false

template

고객 값 입력 파라미터로 AWS SAM 템플릿을 사용자 지정합니다. 자세한 내용은 AWS CloudFormation 사용 설명서Parameters를 참조하세요.

"parameters":{}

AWS 연결("aws") 속성
속성 설명 기본값

credentials

자격 증명 파일에서 프로파일(예:profile:default)을 선택하여 AWS 자격 증명을 가져옵니다.

VS Code용 도구 키트에도 적용된 기존의 공유 AWS 구성 파일 또는 공유 AWS자격 증명 파일의 AWS 자격 증명입니다.

region

서비스 AWS 리전(예: us-east-1)을 설정합니다.

활성 자격 증명 프로파일과 연결된 기본 AWS 리전.

예: 템플릿 시작 구성

다음은 AWS SAM 템플릿 대상의 시작 구성 파일 예시입니다.

{ "configurations": [ { "type": "aws-sam", "request": "direct-invoke", "name": "my-example:HelloWorldFunction", "invokeTarget": { "target": "template", "templatePath": "template.yaml", "logicalId": "HelloWorldFunction" }, "lambda": { "payload": {}, "environmentVariables": {} } } ] }

Code 시작 파일 구성 예

다음은 Lambda 함수 타겟의 시작 구성 파일 예시입니다.

{ "configurations": [ { "type": "aws-sam", "request": "direct-invoke", "name": "my-example:app.lambda_handler (python3.7)", "invokeTarget": { "target": "code", "projectRoot": "hello_world", "lambdaHandler": "app.lambda_handler" }, "lambda": { "runtime": "python3.7", "payload": {}, "environmentVariables": {} } } ] }