You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何选择镜像编译测试运行在AWS Lambda .NET7镜像上的.NET7项目?

如何选择镜像编译、测试并部署运行在public.ecr.aws/lambda/dotnet:7上的非ASP.NET .NET7项目

核心选择逻辑

  • 编译、测试阶段:使用mcr.microsoft.com/dotnet/sdk:7.0
    public.ecr.aws/lambda/dotnet:7仅预装.NET运行时,无SDK,无法完成代码编译、单元测试等需要开发工具的操作。微软官方SDK镜像携带完整的.NET开发套件,能覆盖构建、测试的全部需求。

  • 部署、运行阶段:使用public.ecr.aws/lambda/dotnet:7
    这是AWS Lambda官方的.NET7运行时镜像,与生产环境完全一致,能确保代码部署后稳定运行。

简化流程:用多阶段Dockerfile合并步骤

如果觉得分开处理镜像太繁琐,可以用多阶段构建将编译、测试、打包、镜像构建整合到一个Dockerfile中,无需手动处理中间产物。示例如下:

# 阶段1:编译与测试
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
# 先拷贝项目文件,利用Docker缓存加速构建
COPY ["YourProject.csproj", "."]
RUN dotnet restore
# 拷贝所有代码文件
COPY . .
# 编译项目
RUN dotnet build -c Release --no-restore
# 运行单元测试
RUN dotnet test -c Release --no-build

# 阶段2:发布产物
FROM build AS publish
# 发布为非自包含包(Lambda镜像已自带运行时,无需重复打包)
RUN dotnet publish -c Release \
    --runtime linux-x64 \
    --self-contained false \
    --output /app/publish

# 阶段3:构建Lambda运行镜像
FROM public.ecr.aws/lambda/dotnet:7
# 将发布产物拷贝到Lambda指定工作目录
COPY --from=publish /app/publish ${LAMBDA_TASK_ROOT}
# 指定Lambda函数入口(替换为你的项目实际入口路径)
CMD ["YourProject::YourProject.Function::FunctionHandler"]

本地测试验证

构建完成后,可直接用Docker本地验证Lambda函数逻辑:

  1. 构建镜像:docker build -t my-lambda-app .
  2. 启动容器:docker run -p 9000:8080 my-lambda-app
  3. 调用函数:用curl发送测试请求
    curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"key": "value"}'
    

内容的提问来源于stack exchange,提问作者malat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 13:42:30