具有 python docker 容器的 AWS Lambda 的无效入口点

InvalidEntrypoint for AWS Lambda with python docker container

我已经使用 public.ecr.aws/lambda/python:3.8 为 Lambda 构建了一个图像,但总是出现此错误。

尝试更改函数和文件名,但没有获得更多调试细节。

此外,我在本地 运行 该功能并且 entrypoint/cmd 有效。

START RequestId: cb4ba88c-c347-4e7d-b1ca-031a2e02fde4 Version: $LATEST
IMAGE   Launch error: fork/exec /lambda-entrypoint.sh: exec format error    Entrypoint: [/lambda-entrypoint.sh] Cmd: [index.lambda_handler] WorkingDir: [/var/task]IMAGE    Launch error: fork/exec /lambda-entrypoint.sh: exec format error    Entrypoint: [/lambda-entrypoint.sh] Cmd: [index.lambda_handler] WorkingDir: [/var/task]END RequestId: cb4ba88c-c347-4e7d-b1ca-031a2e02fde4
REPORT RequestId: cb4ba88c-c347-4e7d-b1ca-031a2e02fde4  Duration: 12.86 ms  Billed Duration: 13 ms  Memory Size: 128 MB Max Memory Used: 3 MB   
RequestId: cb4ba88c-c347-4e7d-b1ca-031a2e02fde4 Error: fork/exec /lambda-entrypoint.sh: exec format error
Runtime.InvalidEntrypoint

原来是架构兼容性问题-

需要确保 lambda 函数和 docker 图像之间的拱匹配。

我在本地使用 arm64 在 M1 上构建,但该函数默认配置为使用 amd64

我将构建命令更改为
docker buildx build --platform linux/amd64 -t <image_name>:<image_tag>

尽管我也可以更新 lambda 函数的 arch 类型以使用 arm64