带有 python docker 容器的 AWS Lambda 的 InvalidEntrypoint

Jer*_*emy 19 python amazon-web-services docker aws-lambda

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

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

另外,我已在本地运行该函数并且入口点/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
Run Code Online (Sandbox Code Playgroud)

Jer*_*emy 34

原来是架构兼容性问题——

需要确保 lambda 函数和 docker 镜像之间的架构匹配。

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

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

虽然我也可以更新 lambda 函数的拱形类型以使用arm64

  • 有同样的问题。如果使用 M1 mac,则需要将 lambda 设置为 arm64 (3认同)