具有 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
我已经使用 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