aws-sam-cli: Lambda ARM (Apple M1): AWS SAM Golang lambda debugging does not work
Description:
After creating a plain vanilla AWS SAM application with sam init
for golang
, and then using the AWS Toolkit provided code lens in VS Code, to create an AWS SAM template file based debug configuration, I get the following error when trying to debug the lambda code.
Running the code without debugging works.
Note:
I had raised this issue in aws/aws-toolkit-vscode
as aws/aws-toolkit-vscode#2020. There was a suggestion in that thread that I should raise an issue here.
Steps to reproduce:
- Create a new AWS SAM application using Go with
sam init
. - Select the
Hello world
template. - In the main.go file, create a debug configuration from the code lens provided by the AWS Toolkit and associated with the handler.
- Set a breakpoint and start debugging.
Observed result:
2021-09-11 10:55:02 [INFO]: The Delve repo was not found in your GOPATH. Downloading in a temporary directory...
2021-09-11 10:55:03 [INFO]: Preparing to debug locally: Lambda "hello-world"
2021-09-11 10:55:03 [INFO]: Building SAM application...
2021-09-11 10:55:03 [INFO]: Running command: (not started) [/opt/homebrew/bin/sam build --build-dir /tmp/aws-toolkit-vscode/vsctkeYZ6BB/output --template /Users/user1/dev/godev/aws/lambdas/hello-world/hello-world/app___vsctk___template.yaml --base-dir /Users/user1/dev/godev/aws/lambdas/hello-world/hello-world]
2021-09-11 10:55:03 [INFO]: Building codeuri: /Users/user1/dev/godev/aws/lambdas/hello-world/hello-world runtime: go1.x metadata: {} functions: ['helloworld']
2021-09-11 10:55:03 [INFO]: Running GoModulesBuilder:Build
2021-09-11 10:55:03 [INFO]:
Build Succeeded
2021-09-11 10:55:03 [INFO]:
Built Artifacts : ../../../../../../../private/tmp/aws-toolkit-vscode/vsctkeYZ6BB/output
Built Template : ../../../../../../../private/tmp/aws-toolkit-vscode/vsctkeYZ6BB/output/template.yaml
Commands you can use next
=========================
[*] Invoke Function: sam local invoke -t ../../../../../../../private/tmp/aws-toolkit-vscode/vsctkeYZ6BB/output/template.yaml
[*] Deploy: sam deploy --guided --template-file ../../../../../../../private/tmp/aws-toolkit-vscode/vsctkeYZ6BB/output/template.yaml
2021-09-11 10:55:04 [INFO]: Build complete.
2021-09-11 10:55:04 [INFO]: Starting SAM application locally
2021-09-11 10:55:05 [INFO]: AWS.running.command
Invoking hello-world (go1.x)
Requested to skip pulling images ...
Mounting /tmp/aws-toolkit-vscode/vsctkeYZ6BB/output/helloworld as /var/task:ro,delegated inside runtime container
START RequestId: 7c546e9e-8558-4fde-8dd6-fc6946034850 Version: $LATEST
API server listening at: [::]:5858
2021-09-11T00:55:07Z info layer=debugger launching process with args: [/var/task/hello-world]
2021-09-11 10:55:07 [INFO]: Waiting for SAM application to start...
could not launch process: fork/exec /var/task/hello-world: function not implemented
2021/09/11 00:55:07 exit status 1
time="2021-09-11T00:55:07.765" level=error msg="Init failed" InvokeID= error="Runtime exited with error: exit status 1"
time="2021-09-11T00:55:07.773" level=error msg="INIT DONE failed: Runtime.ExitError"
2021-09-11 10:55:08 [INFO]: Attaching debugger to SAM application...
Command stopped: "sam local invoke"
From the output listed above, it seems to me that when using the debugger, it thinks that the function is not implemented. 2021-09-11 10:55:07 [INFO]: Waiting for SAM application to start… could not launch process: fork/exec /var/task/hello-world: function not implemented
Other considerations
- Go debugging works for vanilla go apps (non lambdas) on M1 based Apple Macs.
- Go lambdas run successfully with
sam local invoke
on M1 based Apple Macs. - Go lambdas can be successfully debugged on x86 based Apple Macs.
Expected result:
- Lambda debugging working with breakpoints being hit.
Additional environment details (Ex: Windows, Mac, Amazon Linux etc)
- OS: macOS Big Sur 11.6 (M1) / Darwin arm64 20.6.0
sam --version
: 1.31.0- AWS region: any (currently working in ap-south-1)
- VS Code version: 1.16
- AWS Toolkit extension version: 1.29.0
- Go version: 1.17.1
- dlv and dlv-dap version: 1.7.1 Build: $Id: 3bde2354aafb5a4043fd59838842c4cd4a8b6f0b $
- Docker version: 20.10.8, build 3967b7d
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Reactions: 16
- Comments: 31 (6 by maintainers)
I am having the same issue.
@aahung can you help with this
Any update on this issue?
Just for reference, I wanted to drop the info that the above issue is experienced even when using sam-cli locally in debug mode, as opposed to using VS Code.
Hey @ashprao, sorry for the late response. I confirmed that Go lambdas can be successfully debugged on x86 based Apple Macs. But I personally don’t have a M1 Mac, I’ll ask a team member to help with this.
Thanks for the quick reply @moelasmar. Rather than replicating the behavior, this thread definitely sums it up better than I could, and it also point to this discussion from Aws-Toolkit-VsCode repo.
bump @jfuss