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

通过CDK部署的.NET 8 Lambda:如何解压二进制文件或适配Zip包?

解决.NET 8 Lambda部署后找不到二进制文件的问题

问题根源分析

你遇到的Error: executable assembly /var/task/My.Lambda.Function.dll or binary /var/task/My.Lambda.Function not found错误,核心原因有两点:

  1. CDK代码中存在冗余的S3部署操作,手动创建的BucketDeployment完全没必要——Lambda服务会自动处理代码包的存储与运行环境解压。
  2. Lambda的handler配置或本地构建目录内容不符合.NET Lambda的运行要求。

具体修改步骤

1. 删除冗余的S3桶与部署代码

你手动创建的codeBucket和BucketDeployment属于多余操作,Lambda函数会自动将fromAsset指定的本地目录打包为Zip,上传到CDK管理的资产桶,并在运行时自动解压到/var/task目录。直接删除以下代码段:

// 移除该冗余代码块
const codeBucket = new s3.Bucket(this, 'S3Bucket', {
    removalPolicy: cdk.RemovalPolicy.DESTROY
});

new s3deploy.BucketDeployment(this, 'DeployLocation', {
    sources: [s3deploy.Source.asset('../Infrastructure/build')],
    destinationBucket: codeBucket,
    destinationKeyPrefix: 'var/task',
    extract: true
});

2. 修正Lambda Handler配置

.NET Lambda的handler格式必须是程序集名称::命名空间.类名::方法名,你当前仅填写了命名空间,缺少类名和方法名。例如,如果你的函数类是Function,处理方法是FunctionHandler,则handler应修改为:

handler: 'My.Lambda.Function::My.Lambda.Function.Function::FunctionHandler'

注意:程序集名称需与项目输出的dll文件名一致(不含.dll后缀)

3. 确保本地构建目录内容正确

确认../Infrastructure/build目录是.NET项目的正确发布输出目录:

  • 执行dotnet publish -c Release -o ../Infrastructure/build(根据你的项目路径调整)生成发布文件
  • 检查目录下是否存在My.Lambda.Function.dll及所有依赖文件(如Amazon.Lambda.Core.dll等)

修改后的完整CDK代码

const functionProps: lambda.FunctionProps = {
    functionName: 'mylambda',
    runtime: lambda.Runtime.DOTNET_8,
    code: lambda.Code.fromAsset('../Infrastructure/build'),
    // 替换为你的实际handler格式
    handler: 'My.Lambda.Function::My.Lambda.Function.Function::FunctionHandler',
    timeout: cdk.Duration.seconds(300)
};

var lambdaFunc = new lambda.Function(this, "mylambda", functionProps);

const api = new apigateway.LambdaRestApi(this, 'mylambda-api', {
    handler: lambdaFunc,
    proxy: true
});

额外排查步骤

  • 部署后登录Lambda控制台,进入函数的代码标签,查看代码包内容,确认My.Lambda.Function.dll存在
  • 如果本地构建目录正确但部署后缺失,检查CDK是否有权限读取../Infrastructure/build目录,或尝试清理CDK缓存后重新部署:cdk clean && cdk deploy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 00:25:00