aws / aws-lambda-runtime-interface-emulator

Apache License 2.0
921 stars 95 forks source link

curl: (52) Empty reply from server #42

Open rking788 opened 3 years ago

rking788 commented 3 years ago

I recently ran into an issue trying to test a Lambda function locally with the provided base images. My handler is written in Go. Testing with both public.ecr.aws/lambda/go:1 and public.ecr.aws/lambda/provided:al2 gives the same error when attempting to curl the handler locally.

Here are the directions I was attempting to follow to test my function locally. https://gallery.ecr.aws/lambda/go (the Usage tab)

I ended up here after finding this workaround: https://github.com/aws/aws-lambda-runtime-interface-emulator/issues/26. It's my understanding that these steps shouldn't be needed when working with one of the provided Docker images. If there is a better repository to file this issue please let me know. Thanks.

Don-CA commented 2 years ago

For al2, after many false starts, I copied the executable to the bootstrap location, ignoring the task root stuff and it works.


FROM public.ecr.aws/lambda/provided:al2 as build
# install compiler
RUN yum install -y golang
RUN go env -w GOPROXY=direct
# cache dependencies
ADD go.mod go.sum ./
RUN go mod download
# build
ADD . .
RUN go build -o /bootstrap
# copy artifacts to a clean image
FROM public.ecr.aws/lambda/provided:al2
COPY --from=build /bootstrap ${LAMBDA_RUNTIME_DIR}/bootstrap
CMD [ "main" ]
fertrevino commented 1 year ago

the same happens with images such as public.ecr.aws/lambda/nodejs:18 despite following the instructions in the usage tab