aws / aws/aws-lambda-runtime-interface-emulator

Hardcoded function name

未关闭
#43 0 条评论 5 个 reaction 已指派 0 人 在 GitHub 查看
enhancement
主要语言
Go
星标
1.1k
派生
118
平均合并
42 分钟
30 天内合并 PR
2

描述

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](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestSyntax) 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`](https://github.com/aws/aws-lambda-runtime-interface-emulator/blob/ce45546/cmd/aws-lambda-rie/http.go#L18). 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.

贡献指南

打开贡献指南

调研方向

Start in cmd/aws-lambda-rie/http.go, where the RIE web server hardcodes the function name, and compare the endpoint behavior with the Lambda Invoke API documentation. Verify how AWS_LAMBDA_FUNCTION_NAME should affect the endpoint and confirm that the default remains function when it is absent; done means both configured and default names work with the documented invocation request.

由索引模型根据 Issue 内容生成。

评估

技术栈
aws, go
领域
api, cloud
Issue 类型
缺陷
难度
2/5
预计耗时
1-3 小时
活跃度
停滞
描述清晰度
描述清楚
新手友好度
45/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。