AWS Lambda使用Docker部署C# .NET Core程序报Runtime.InvalidEntrypoint错误
问题排查与解决
错误根源
你遇到的Runtime.InvalidEntrypoint错误由两个核心配置错误导致:
- 基础镜像选择错误:当前使用的
mcr.microsoft.com/dotnet/runtime:3.1是通用.NET运行时镜像,未内置AWS Lambda运行时接口客户端组件,无法识别程序集::命名空间.类名::方法名格式的函数处理程序签名,会直接将该签名作为可执行文件在系统路径中查找,触发路径不存在错误。 - ENTRYPOINT配置错误:AWS Lambda .NET容器镜像无需自定义ENTRYPOINT,官方Lambda基础镜像已内置默认ENTRYPOINT指向运行时执行器,仅需通过CMD参数指定函数处理程序即可。
修正后的Dockerfile
FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build WORKDIR /app COPY Lambda.PowerPointProcessor.csproj . RUN dotnet restore Lambda.PowerPointProcessor.csproj COPY . . RUN dotnet publish -c Release -o out # 替换为AWS官方Lambda .NET 3.1运行时基础镜像 FROM public.ecr.aws/lambda/dotnet:3.1 AS runtime # Lambda默认工作目录为/var/task,请勿修改 WORKDIR /var/task COPY --from=build /app/out ./ # 用CMD指定函数处理程序,不要修改默认ENTRYPOINT CMD ["Lambda.PowerPointProcessor::Lambda.PowerPointProcessor.Function::FunctionHandler"]
额外验证项
发布前请确认你的项目已安装以下必要NuGet包:
Amazon.Lambda.Core- 配套的序列化包,官方推荐
Amazon.Lambda.Serialization.SystemTextJson,如需使用Newtonsoft.Json可安装Amazon.Lambda.Serialization.Json
内容的提问来源于stack exchange,提问作者Waleed Naveed
相关产品推荐
相关产品推荐

