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

Hardcoded function name

Aberta
#43 0 comentários 5 reações 0 responsáveis Ver no GitHub
enhancement
Linguagem predominante
Go
Estrelas
1.1k
Forks
118
Merge médio
42min
PRs com merge (30d)
2

Descrição

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.

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

Comece em cmd/aws-lambda-rie/http.go, onde o servidor web RIE fixa o nome da função no código, e compare o comportamento do endpoint com a documentação da Lambda Invoke API. Verifique como AWS_LAMBDA_FUNCTION_NAME deve afetar o endpoint e confirme que o padrão continua sendo function quando estiver ausente; o trabalho estará concluído quando tanto os nomes configurados quanto os nomes padrão funcionarem com a solicitação de invocação documentada.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
aws, go
Domínio
api, cloud
Tipo de issue
Bug
Dificuldade
2/5
Tempo estimado
1-3 horas
Status de atividade
Estagnada
Clareza
Claramente especificada
Facilidade para iniciantes
45/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.