

# 配合使用 AWS Lambda和 AWS 基础架构编辑器
<a name="services-appcomposer"></a>

AWS 基础架构编辑器 是一款在 AWS 上设计现代应用程序的可视化生成器。您可以通过在可视画布中拖动、分组和连接 AWS 服务 来设计应用程序架构。基础设施编辑器根据您的设计创建基础设施即代码（IaC）模板，创建的模板可以使用 [AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) 或 [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 进行部署。

## 将 Lambda 函数出到基础设施编辑器
<a name="services-appcomposer-export"></a>

开始使用基础设施编辑器时，您可以使用 Lambda 控制台根据现有 Lambda 函数的配置创建一个新项目。要将函数的配置和代码导出到基础设施编辑器来创建新项目，请执行以下操作：

1. 打开 Lamba 控制台的 [Functions](https://console.aws.amazon.com/lambda/home#/functions)（函数）页面。

1. 选择您希望作为基础设施编辑器项目基础的函数。

1. 在**函数概述**窗格中，选择**导出到基础设施编辑器**。

   为了将函数的配置和代码导出到基础设施编辑器，Lambda 在您的账户中创建了一个 Amazon S3 存储桶来临时存储此数据。

1. 在对话框中，选择**确认并创建项目**以接受此存储桶的默认名称，并将函数的配置和代码导出到基础设施编辑器。

1. （可选）要为 Lambda 创建的 Amazon S3 存储桶选择其他名称，请输入新名称并选择**确认并创建项目**。Amazon S3 存储桶的名称必须全局唯一，并遵守[存储桶命名规则](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)。

1. 要在基础设施编辑器中保存项目和函数文件，请激活[本地同步模式](https://docs.aws.amazon.com/application-composer/latest/dg/reference-features-local-sync.html)。

**注意**  
如果您之前使用过**导出到应用程序编辑器**功能并使用默认名称创建了 Amazon S3 存储桶，Lambda 可以重复使用该存储桶（如果它仍然存在）。接受对话框中的默认存储桶名称以重复使用现有存储桶。

### Amazon S3 传输存储桶配置
<a name="services-appcomposer-bucket-info"></a>

Lambda 为传输您的函数配置而创建的 Amazon S3 存储桶会使用 AES 256 加密标准自动加密对象。Lambda 还将存储桶配置为使用[存储桶拥有者条件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-owner-condition.html)，以确保只有您的 AWS 账户 能向存储桶添加对象。

Lambda 将存储桶配置为在上传对象 10 天后自动将其删除。但是，Lambda 不会自动删除存储桶本身。要从您的 AWS 账户 删除存储桶，请按照[删除存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)中的说明进行操作。默认存储桶名称使用前缀 `lambdasam`、10 位字母数字字符串以及您创建函数的所在 AWS 区域：

```
lambdasam-06f22da95b-us-east-1
```

为避免给您的 AWS 账户 增加额外费用，建议在完成将函数导出到基础设施编辑器后立即删除 Amazon S3 存储桶。

标准 [Amazon S3 定价](https://aws.amazon.com/s3/pricing/)适用。

### 所需的权限
<a name="services-appcomposer-permissions"></a>

要使用 Lambda 与基础设施编辑器集成功能，您需要一定的权限才能下载 AWS SAM 模板并将函数配置写入 Amazon S3。

要下载 AWS SAM 模板，您必须拥有使用以下 API 操作的权限：
+ [GetPolicy](https://docs.aws.amazon.com/lambda/latest/api/API_GetPolicy.html)
+ [iam:GetPolicyVersion](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetPolicyVersion.html)
+ [iam:GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)
+ [iam:GetRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRolePolicy.html)
+ [iam:ListAttachedRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedRolePolicies.html)
+ [iam:ListRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRolePolicies.html)
+ [iam:ListRoles](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html)

通过将 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambda_ReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambda_ReadOnlyAccess.html) AWS 托管策略添加到 IAM 用户角色，可以授予使用所有这些操作的权限。

要让 Lambda 将您的函数配置写入 Amazon S3，您必须拥有使用以下 API 操作的权限：
+ [S3:PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [S3:CreateBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
+ [S3:PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
+ [S3:PutBucketLifecycleConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)

如果无法将函数的配置导出到基础设施编辑器，请检查账户是否具有这些操作所需的权限。如果您拥有所需的权限但仍然无法导出函数配置，请检查[基于资源的策略](access-control-resource-based.md)，因为这些策略可能会限制对 Amazon S3 的访问权限。

## 其他资源
<a name="w2aad101c33b7"></a>

有关如何在基础设施编辑器中基于现有 Lambda 函数设计无服务器应用程序的更详细教程，请参阅[将 Lambda 与基础设施即代码（IaC）结合使用](foundation-iac.md)。

要使用基础设施编辑器以及 AWS SAM 通过 Lambda 设计和部署完整的无服务器应用程序，您也可以按照 [AWS Serverless Patterns 讲习会](https://catalog.workshops.aws/serverless-patterns/en-US)中的 [AWS 基础架构编辑器 教程](https://catalog.workshops.aws/serverless-patterns/en-US/dive-deeper/module1a)进行操作。