Тривиальная лямбда GO в IMAGE завершается с ошибкой /bin/sh: ./lambda-handler: разрешение отклонено

Я использую предоставленный aws файл Docker для создания шаблона SAM. Сама сборка и развертывание работают должным образом, однако при вызове конечной точки я получаю внутреннюю ошибку сервера с/bin/sh: ./lambda-handler: Permission denied

Файл, на который ссылается, является основной точкой входа изображения:

      FROM public.ecr.aws/docker/library/golang:1.19 as build-image
WORKDIR /src
COPY go.mod go.sum main.go ./
RUN go build -o lambda-handler
FROM public.ecr.aws/lambda/provided:al2
COPY --from=build-image /src/lambda-handler .
RUN chmod -R o+rX ./lambda-handler
ENTRYPOINT ./lambda-handler

Событие, разбивающее его до минимальной функциональности, не удается. Вот код

      package bye

import (
    "github.com/aws/aws-lambda-go/events"
    "github.com/aws/aws-lambda-go/lambda"
)

func handler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {

    return events.APIGatewayProxyResponse{
        Body:       "Bye",
        StatusCode: 200,
    }, nil
}

func main() {
    lambda.Start(handler)
}

Не удается выполнить сборку и развертывание Сэма, а также локальный запуск API Сэма.

Дальнейшие журналы:

      Invoking Container created from byeworldfunction:provided.al2-v1                                                                                                            
Reuse the created warm container for Lambda function 'ByeWorldFunction'                                                                                                     
Lambda function 'ByeWorldFunction' is already running                                                                                                                       
START RequestId: 15e2e7cc-c7e8-4c4a-b0ee-18e0669172f8 Version: $LATEST
/bin/sh: ./lambda-handler: Permission denied
07 Jun 2023 05:53:43,903 [ERROR] (rapid) Init failed error=Runtime exited with error: exit status 126 InvokeID=
/bin/sh: ./lambda-handler: Permission denied
END RequestId: e3fceeba-f052-4439-908c-b3f84164c9a4
REPORT RequestId: e3fceeba-f052-4439-908c-b3f84164c9a4  Init Duration: 0.36 ms  Duration: 5.16 ms       Billed Duration: 6 ms   Memory Size: 128 MB     Max Memory Used: 128 MB
Invalid lambda response received: Lambda response must be valid json       

Я попытался настроить разрешения для каталога с помощью chmod согласно руководству по устранению неполадок aws:chmod -R o+rX ./lambda-handler

https://docs.aws.amazon.com/lambda/latest/dg/troubleshooting-deployment.html

но безрезультатно,

Я ожидаю, что смогу достичь конечной точки и получить действительный ответ.

1 ответ

Как упоминалось в комментарии, это проблема с именем пакета. Потому что среда выполнения AWS Lambda ищет основной пакет с основной функцией в качестве точки входа.

package main : в Go пакет, содержащий func main(), всегда должен называться main.

См. обработчик функции AWS Lambda в Go.

Другие вопросы по тегам