选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

使用 AWS CDK 部署 C# Lambda 函数

聚焦模式
使用 AWS CDK 部署 C# Lambda 函数 - AWS Lambda

AWS Cloud Development Kit (AWS CDK) 是一个开源软件开发框架,用于将云基础设施定义为使用现代编程语言和框架(如 .NET)的代码。执行 AWS CDK 项目是为了生成 AWS CloudFormation 模板,然后使用这些模板来部署您的代码。

要使用 AWS CDK 构建和部署示例 Hello world .NET 应用程序,请按照以下各节中的说明进行操作。示例应用程序实现了一个基本 API 后端,该后端由 API Gateway 端点和 Lambda 函数组成。在向端点发送 HTTP GET 请求时,API Gateway 会调用 Lambda 函数。该函数返回一条“Hello world”消息,以及处理您的请求的 Lambda 实例的 IP 地址。

先决条件

.NET 8 SDK

安装 .NET 8 SDK 和运行时系统。

AWS CDK 版本 2

要了解如何安装最新版本的 AWS CDK,请参阅 AWS Cloud Development Kit (AWS CDK) v2 开发人员指南中的 AWS CDK 入门

部署示例 AWS CDK 应用程序

  1. 为示例应用程序创建项目目录,并导航到该项目目录。

    mkdir hello-world cd hello-world
  2. 通过运行以下命令来初始化新的 AWS CDK 应用程序。

    cdk init app --language csharp

    此命令在您的项目目录中创建以下文件和目录

    ├── README.md ├── cdk.json └── src ├── HelloWorld │   ├── GlobalSuppressions.cs │   ├── HelloWorld.csproj │   ├── HelloWorldStack.cs │   └── Program.cs └── HelloWorld.sln
  3. 打开 src 目录并使用 .NET CLI. 创建新的 Lambda 函数。这是您将使用 AWS CDK 部署的函数。在此示例中,您将使用 lambda.EmptyFunction 模板创建名为 HelloWorldLambda 的 Hello world 函数。

    cd src dotnet new lambda.EmptyFunction -n HelloWorldLambda

    完成此步骤后,您的项目目录内的目录结构应如下所示。

    ├── README.md ├── cdk.json └── src ├── HelloWorld │   ├── GlobalSuppressions.cs │   ├── HelloWorld.csproj │   ├── HelloWorldStack.cs │   └── Program.cs ├── HelloWorld.sln └── HelloWorldLambda ├── src │   └── HelloWorldLambda │   ├── Function.cs │   ├── HelloWorldLambda.csproj │   ├── Readme.md │   └── aws-lambda-tools-defaults.json └── test └── HelloWorldLambda.Tests ├── FunctionTest.cs └── HelloWorldLambda.Tests.csproj
  4. 打开 src/HelloWorld 目录中的 HelloWorldStack.cs 文件。将文件的内容替换为以下代码。

    using Amazon.CDK; using Amazon.CDK.AWS.Lambda; using Amazon.CDK.AWS.Logs; using Constructs; namespace CdkTest { public class HelloWorldStack : Stack { internal HelloWorldStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) { var buildOption = new BundlingOptions() { Image = Runtime.DOTNET_8.BundlingImage, User = "root", OutputType = BundlingOutput.ARCHIVED, Command = new string[]{ "/bin/sh", "-c", " dotnet tool install -g Amazon.Lambda.Tools"+ " && dotnet build"+ " && dotnet lambda package --output-package /asset-output/function.zip" } }; var helloWorldLambdaFunction = new Function(this, "HelloWorldFunction", new FunctionProps { Runtime = Runtime.DOTNET_8, MemorySize = 1024, LogRetention = RetentionDays.ONE_DAY, Handler = "HelloWorldLambda::HelloWorldLambda.Function::FunctionHandler", Code = Code.FromAsset("./src/HelloWorldLambda/src/HelloWorldLambda", new Amazon.CDK.AWS.S3.Assets.AssetOptions { Bundling = buildOption }), }); } } }

    这是用于编译和捆绑应用程序代码的代码,也是 Lambda 函数本身的定义。BundlingOptions 对象允许创建 zip 格式文件以及一组用于生成 zip 格式文件内容的命令。在这种情况下,dotnet lambda package 命令用于编译和生成 zip 格式文件。

  5. 要部署应用程序,请运行以下命令。

    cdk deploy
  6. 使用 .NET Lambda CLI 调用已部署的 Lambda 函数。

    dotnet lambda invoke-function HelloWorldFunction -p "hello world"
  7. 除非您想要保留您创建的资源,否则在您完成测试后,可立即将其删除。请运行以下命令以删除您的资源。

    cdk destroy

后续步骤

要了解有关使用 AWS CDK 借助 .NET 构建和部署 Lambda 函数的更多信息,请参阅以下资源:

下一主题:

ASP.NET

上一主题:

AWS SAM
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。