AWS SAM Developer Experience

AWS SAM DX failures

Published: Tuesday, Feb 28, 2023 Last modified: Friday, May 24, 2024

Developing w/ AWS Lamdba is such a terrible experience, I'm going to try Cloud9 in maybe the hopes that I'm doing it wrong. I fully expect it to be much worse.

— Darren Shepherd (@ibuildthecloud) February 27, 2023

Unexpected error 🤮

Error: Unable to locate credentials
  File "click/", line 1055, in main
  File "click/", line 1657, in invoke
  File "click/", line 1404, in invoke
  File "click/", line 760, in invoke
  File "samcli/lib/cli_validation/", line 92, in wrapped
  File "click/", line 84, in new_func
  File "click/", line 760, in invoke
  File "samcli/lib/telemetry/", line 183, in wrapped
  File "samcli/lib/telemetry/", line 150, in wrapped
  File "samcli/lib/utils/", line 41, in wrapped
  File "samcli/cli/", line 92, in wrapper
  File "samcli/commands/_utils/", line 38, in wrapped
  File "samcli/commands/deploy/", line 221, in cli
  File "samcli/commands/deploy/", line 289, in do_cli
  File "samcli/lib/bootstrap/", line 23, in manage_stack
  File "samcli/lib/utils/", line 145, in manage_stack
  File "samcli/lib/utils/", line 156, in _create_or_get_stack
  File "botocore/", line 401, in _api_call
  File "botocore/", line 718, in _make_api_call
  File "botocore/", line 737, in _make_request
  File "botocore/", line 107, in make_request
  File "botocore/", line 180, in _send_request
  File "botocore/", line 121, in create_request
  File "botocore/", line 358, in emit
  File "botocore/", line 229, in emit
  File "botocore/", line 212, in _emit
  File "botocore/", line 95, in handler
  File "botocore/", line 167, in sign
  File "botocore/", line 401, in add_auth

An unexpected error was encountered while executing "sam deploy".
Search for an existing issue:
Or create a bug report:

No way to add retention to default log

No way to deploy without creating a Cloudformation change

No way to see the CNAME API once deploying

Without using Route53, once needs to see the DNS name outputted to plug into a third party DNS provider!

Fixed in via

Runtime: provided.al2

The developer experience one has to jump to deploy to arm64 is painful. For example you must name your executable bootstrap.

No static binary

sam cli is non-trivial to install with its Python dependencies. I am not sure how this can be considered a one click install. A static binary would be so much better.

Refactoring the template.yml can cause a UPDATE_FAILED

Logging experience is awful

Compare sam logs to up logs. Also the formatting is terrible:

sam logs --stack-name helloworld-sam --tail

Public roadmap

My minimal AWS SAM helloworld