Execute an AWS Lambda Function from the Terminal
Before you go any further, you want to make sure you've got the AWS CLI installed. If you haven't already got it installed, you can follow the official instructions here.
Generating a payload
Unfortunately, the AWS CLI can't accept the raw contents of a file as the payload when invoking a Lambda function. Instead, you need to generate a base 64 encoded version of the file.
On Unix systems, this can be done using the
base64 command. I typically store my generic payload inside of a
payload-raw.json file and then output the base 64 encoded version to
This command will encode the raw JSON into base 64. To output the result of this command, we can just redirect
stdout into a file.
base64 payload-raw.json > payload.json
Invoke the Lambda
You can invoke your Lambda function using the
aws lambda command. This command requires a few options so that it knows which function to execute.
aws lambda \ --function-name NameOfFunctionHere
If we want to send through our base 64 encoded payload, we can use the
--payload option and specify the file that needs to be used.
aws lambda \ --function-name NameOfFunctionHere --payload file://payload.json
You need to prefix the file with
file:// protocol as the AWS CLI also supports sending payloads using
If you want to save the output of the execution to a file, you can specify the output file at the end of the command.
aws lambda \ --function-name NameOfFunctionHere --payload file://payload.json output.json