cdk run local lambda with sam-cli

September 9th, 2022

install

brew install awscli

brew install aws-cdk

brew tap aws/tap

brew install aws-sam-cli

 


 

Using colima?

 

Error: Running AWS SAM projects locally requires Docker. Have you got it installed and running?

 

Enable AWS SAM local to run without Docker Desktop but Colima + Docker Daemon on MacOs

# aws sam requires DOCKER_HOST to be set

export DOCKER_HOST="unix://$HOME/.colima/docker.sock"

 


 

Test lambda

cdk synth --no-staging

sam local invoke helloLambdaNodeJs --no-event -t ./cdk.out/*.template.json

 

Start lambda

cdk synth --no-staging

sam local start-api -t ./cdk.out/*.template.json

 

Start api with all lambdas

cdk synth --no-staging

sam local start-api -t ./cdk.out/*.template.json

 

(src: Locally testing AWS CDK applications & Getting started with AWS SAM and the AWS CDK)

 


 

Fix "AuthorizationHeaderMalformed"

{

"errorType": "AuthorizationHeaderMalformed",

"errorMessage": "The authorization header is malformed; the Credential is mal-formed; expecting \"<YOUR-AKID>/YYYYMMDD/REGION/SERVICE/aws4_request\".",

"trace": [

"AuthorizationHeaderMalformed: The authorization header is malformed; the Credential is mal-formed; expecting \"<YOUR-AKID>/YYYYMMDD/REGION/SERVICE/aws4_request\".",

"    at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/services/s3.js:710:35)",

"    at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)",

"    at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)",

"    at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:686:14)",

"    at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)",

"    at AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)",

"    at /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10",

"    at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)",

"    at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:688:12)",

"    at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:116:18)"

]

}

fixed by making sure some form of credentials are set