I'm not sure if this is a bug or a feature (request). I'll let someone else decide which it is.
The Lambda invoke API docs say the endpoint path should be /2015-03-31/functions/FunctionName/invocations where FunctionName is the name of the function being invoked.
The RIE web server hardcods the function name to function. When invoking a function by calling the documented curl call curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}' everything works great.
If someone combines a container based Lambda using the RIE and the Step Function Local and the step function contains a different function name, say myFunction they could easily lose an afternoon debugging their stuff. Step Function Local logs an exception based on the 404 response, but the RIE logs show no requests being received. After checking the Step Function Local config docs, reviewing the step function multiple times, reviewing the Lambda API docs and busting out wireshark the dev may pick through the RIE code. Eventually they would discover the cause of this bug. Less than a minute after changing the value of the Lambda ARN in their step function, everything works.
Rather than forcing devs to use a fixed name in their step function, I propose that if the AWS_LAMBDA_FUNCTION_NAME environment variable is set, then that is the value used in the endpoint path. If the environment variable isn't present then function is used as the default value. This might save some poor developers many hours of swearing at their code.
I'm not sure if this is a bug or a feature (request). I'll let someone else decide which it is.
The Lambda invoke API docs say the endpoint path should be
/2015-03-31/functions/FunctionName/invocations
whereFunctionName
is the name of the function being invoked.The RIE web server hardcods the function name to
function
. When invoking a function by calling the documentedcurl
callcurl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'
everything works great.If someone combines a container based Lambda using the RIE and the Step Function Local and the step function contains a different function name, say
myFunction
they could easily lose an afternoon debugging their stuff. Step Function Local logs an exception based on the 404 response, but the RIE logs show no requests being received. After checking the Step Function Local config docs, reviewing the step function multiple times, reviewing the Lambda API docs and busting out wireshark the dev may pick through the RIE code. Eventually they would discover the cause of this bug. Less than a minute after changing the value of the Lambda ARN in their step function, everything works.Rather than forcing devs to use a fixed name in their step function, I propose that if the
AWS_LAMBDA_FUNCTION_NAME
environment variable is set, then that is the value used in the endpoint path. If the environment variable isn't present thenfunction
is used as the default value. This might save some poor developers many hours of swearing at their code.