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

使用CDK部署含顶级语句的ASP.NET Minimal API到Lambda报错

解决方案:ASP.NET Minimal API Lambda + CDK 部署修复

1. 修正Lambda Handler配置

由于你的项目使用C#顶级语句,属于可执行程序集,Handler必须设置为程序集名称(而非类库的Assembly::Type::Method格式)。在CDK的Lambda构造中显式指定:

var lambdaFunction = new Function(this, "MinimalApiLambda", new FunctionProps
{
    Runtime = Runtime.DOTNET_6, // 匹配你的项目TargetFramework版本
    Handler = "lambdaMinimalApi", // 替换为你的Lambda项目程序集名称
    Code = Code.FromAsset(Path.Combine("src/lambdaMinimalApi", "bin/Release/net6.0/publish")),
    MemorySize = 256,
    Timeout = Duration.Seconds(30)
});

2. 确保Lambda项目的打包配置正确

在Lambda项目的.csproj文件中,确认输出类型为可执行文件:

<PropertyGroup>
    <OutputType>Exe</OutputType> <!-- 关键:必须是Exe,不能是Library -->
    <TargetFramework>net6.0</TargetFramework>
    <AWSProjectType>Lambda</AWSProjectType>
    <PublishTrimmed>true</PublishTrimmed>
    <PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>

执行发布命令生成正确的部署包:

dotnet publish -c Release -f net6.0

3. 正确指定CDK的Code路径

CDK的Code.FromAsset必须指向发布后的输出目录(即bin/Release/netX.0/publish),而不是项目源码目录。这个目录包含Lambda运行所需的所有文件(可执行程序、依赖库等)。

4. 匹配运行时版本

确保CDK中设置的Runtime与Lambda项目的TargetFramework完全一致:

  • .NET 6 → Runtime.DOTNET_6
  • .NET 7 → Runtime.DOTNET_7
  • .NET 8 → Runtime.DOTNET_8

5. 验证部署包内容

发布完成后,检查publish目录是否包含:

  • lambdaMinimalApi.dll(你的程序集文件)
  • lambdaMinimalApi(Linux可执行文件)
  • 所有依赖的NuGet包文件

CDK会将该目录的所有内容打包上传到Lambda,缺失任何关键文件都会导致运行错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:31:16