使用C#开发AWS Lambda函数可以借助.NET的成熟生态快速实现无服务器业务逻辑,整个流程主要分为本地函数编写、依赖配置、打包部署三个核心步骤,下面详细说明每个环节的操作方法。

环境准备
在开始编写函数前,需要提前准备好相关开发环境:
- 安装.NET 6及以上版本的SDK,AWS Lambda对.NET Core 3.1及更高版本提供支持,推荐使用长期支持版本
- 安装AWS Toolkit for Visual Studio或者AWS CLI工具,用于后续的部署操作
- 拥有可用的AWS账号,并且配置好本地AWS访问密钥,确保有权限操作Lambda相关资源
编写C# Lambda函数代码
函数入口定义
AWS Lambda的C#函数需要定义符合规范的入口方法,默认情况下函数的入口格式为程序集名称::命名空间.类名::方法名,如果是使用Visual Studio的AWS Lambda模板创建项目,会自动生成符合规范的入口结构。
下面是一个简单的Lambda函数示例,实现接收字符串参数并返回拼接后的结果:
using Amazon.Lambda.Core;
// 程序集特性,标记Lambda运行时序列化方式
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
namespace DemoLambda
{
public class Function
{
/// <summary>
/// Lambda函数入口方法
/// </summary>
/// <param name="input">输入参数</param>
/// <param name="context">Lambda运行时上下文</param>
/// <returns>处理结果</returns>
public string FunctionHandler(string input, ILambdaContext context)
{
context.Logger.LogLine($"接收到的输入参数为:{input}");
return $"处理完成,输入内容:{input},处理时间:{DateTime.Now}";
}
}
}
添加依赖包
如果函数中需要使用AWS的其他服务,比如S3、DynamoDB,需要在项目文件中添加对应的NuGet包,例如需要使用S3服务的话,添加AWSSDK.S3包即可,添加方式和普通.NET项目一致。
部署C# Lambda函数
本地打包
完成代码编写后,需要先对项目进行发布,生成部署包。如果是.NET 6及以上版本,推荐使用以下命令发布自包含部署包,避免运行环境缺少依赖:
dotnet publish -c Release -r linux-x64 --self-contained true
发布完成后,在项目的bin/Release/net6.0/linux-x64/publish目录下会生成所有需要的文件,将这些文件打包成zip格式,就是Lambda的部署包。
通过AWS CLI部署
如果已经配置好AWS CLI,可以使用以下命令创建Lambda函数:
aws lambda create-function --function-name csharp-demo-lambda --runtime dotnet6 --role arn:aws:iam::123456789012:role/lambda-execution-role --handler DemoLambda::DemoLambda.Function::FunctionHandler --zip-file fileb://./publish.zip
其中--role参数需要替换为你自己的Lambda执行角色ARN,--handler参数要和之前定义的函数入口保持一致。
通过Visual Studio部署
如果安装了AWS Toolkit for Visual Studio,可以直接右键项目选择发布到AWS Lambda,按照向导提示选择函数名称、执行角色、运行时等信息,工具会自动完成打包和部署操作,不需要手动执行命令。
部署后验证
部署完成后,可以在AWS Lambda控制台找到对应的函数,在测试标签页创建测试事件,传入字符串参数执行测试,查看返回结果是否符合预期。如果执行失败,可以通过CloudWatch日志查看具体的错误信息,常见问题包括入口方法配置错误、依赖缺失、权限不足等。
注意事项
- Lambda的运行时版本需要和项目使用的.NET版本匹配,比如.NET 6对应dotnet6运行时,.NET 8对应dotnet8运行时
- 部署包的大小不能超过Lambda的限制,普通函数部署包上限是50MB,超过的话需要把依赖放到Lambda Layer中
- 函数的执行超时时间和内存大小可以根据业务逻辑调整,默认超时时间是3秒,内存是128MB
C#AWS_Lambda.NETLambda部署Lambda编写修改时间:2026-06-19 03:30:34