

# 将 Lambda 与基础设施即代码（IaC）结合使用
<a name="foundation-iac"></a>

Lambda 函数很少单独运行。相反，它们通常与数据库、队列和存储等其他资源一起都是无服务器应用程序的组成部分。借助[基础设施即代码（IaC）](https://www.amazonaws.cn/what-is/iac/)，可以自动执行部署流程，从而快速、可重复地部署和更新整个无服务器应用程序，涵盖许多独立的 Amazon 资源。这种方法可以加快开发周期，简化配置管理，并确保每次都以相同的方式部署资源。

## 适用于 Lambda 的 IaC 工具
<a name="foundation-iac-tools"></a>

**Amazon CloudFormation**  
CloudFormation 是来自 Amazon 的基础 IaC 服务。可以使用 [YAML 或 JSON 模板](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/template-guide.html)，对整个 Amazon 基础设施（包括 Lambda 函数）进行建模和预置。CloudFormation 可以处理创建、更新和删除 Amazon 资源的复杂工作。

**Amazon Serverless Application Model (Amazon SAM)**  
Amazon SAM 是一个开源框架，构建在 CloudFormation 之上。它提供了用于定义无服务器应用程序的简化语法。使用 [Amazon SAM 模板](https://docs.amazonaws.cn/serverless-application-model/latest/developerguide/sam-specification-template-anatomy.html)，只需几行 YAML 即可快速预置 Lambda 函数、API、数据库和事件源。

**Amazon Cloud Development Kit (Amazon CDK)**  
CDK 是 IaC 的代码优先方法。可以使用 TypeScript、JavaScript、Python、Java、C\$1/Net 或 Go 来定义基于 Lambda 的架构。选择首选语言，并使用参数、条件、循环、组合和继承等编程元素来定义基础设施的预期结果。然后，CDK 会生成底层 CloudFormation 模板用于部署。有关如何配合使用 Lambda 和 CDK 的示例，请参阅 [使用 Amazon CDK 部署 Lambda 函数](lambda-cdk-tutorial.md)。

![\[\]](http://docs.amazonaws.cn/lambda/latest/dg/images/IaC_tools.png)


Amazon 还提供了一项名为 Amazon 基础设施编辑器 的服务，可使用简单图形界面开发 IaC 模板。凭借基础设施编辑器，可以通过在可视画布中拖动、分组和连接 Amazon Web Services 服务来设计应用程序架构。然后，基础设施编辑器会根据您的设计创建 Amazon SAM 模板或 Amazon CloudFormation 模板，供您用于部署应用程序。

在以下 [在 Amazon SAM 和基础设施编辑器中使用 Lambda 函数](foundation-iac-getting-started.md) 部分中，您将使用基础设施编辑器，根据现有 Lambda 函数为无服务器应用程序开发模板。