Go1.x 런타임을 사용한 AWS Lambda function을 로컬에서 디버깅하는 방법에 대한 포스팅입니다.
해당 내용은 Go1.x 런타임으로 배포된 람다 함수의 디버깅 방법이며 M1 프로세서에서는 동작하지 않습니다.
리눅스용 delve 빌드하기
git clone https://github.com/go-delve/delve.git
cd /path/to/delve
GOARCH=amd64 GOOS=linux go build -o dlv github.com/go-delve/delve/cmd/dlv
SAM 커맨드 세팅
Go binary 빌드
# go build
## 빌드 시 -gcflags "all=-N -l" 옵션을 줘서 빌드한다.
GOOS=linux GOARCH=amd64 go build -gcflags "all=-N -l" -o $(handler_name) .
SAM 실행
# --debugger-path your_delve_bin_dir ==> 리눅스용 delve 바이너리가 있는 directory
# -d port ==> delve 디버깅
# --debug-args "-delveAPI=2" ==> delve parameter
sam local invoke FuncName -d 2345 --debugger-path your_delve_bin_dir --debug-args "-delveAPI=2" --event $(event) --profile your_profile --debug
Goland 세팅
Run/Debug Configurations
에서 go remote를 세팅해준다.
2345 포트를 세팅한 후 실행한다.