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 worldtemplate. - 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 invokeon 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