

# 容量提供程序
<a name="lambda-managed-instances-capacity-providers"></a>

容量提供程序是运行 Lambda 托管实例的基础。它充当您的函数的安全边界，并定义 Lambda 将代表您预置和管理的计算资源。

在创建容量提供程序时，您将指定：
+ **VPC 配置**：实例将在其中运行的子网和安全组
+ **权限**：Lambda 用于管理 EC2 资源的 IAM 角色
+ **实例要求**（可选）：架构和[实例类型](https://aws.amazon.com/lambda/pricing/#:~:text=EPU%20pricing%20applies.-,Management%20Fees,-Pricing%20Example%3A%20High)首选项
+ **扩展配置**（可选）：Lambda 如何扩展您的实例

## 将容量提供程序理解为安全边界
<a name="lambda-managed-instances-capacity-provider-security-boundary"></a>

容量提供程序充当您的 VPC 中 Lambda 函数的安全边界，取代了基于 FireCracker 的隔离。函数在实例内的容器中执行，但与 Firecracker microVM 不同的是，这些容器并不能为函数之间提供强大的安全隔离。

**关键安全概念：**
+ **容量提供程序：**定义 Lambda 函数信任级别的安全边界
+ **容器隔离：**容器本身并非安全提供者——切勿将它们用于不受信任的工作负载之间的安全防护。
+ **信任分离：**通过使用不同的容量提供程序来分离那些彼此不互信的工作负载

## 创建容量提供程序
<a name="lambda-managed-instances-creating-capacity-provider"></a>

您可以使用 AWS CLI、AWS 管理控制台或 AWS SDK 创建容量提供程序。

**使用 AWS CLI：**

```
aws lambda create-capacity-provider \
  --capacity-provider-name my-capacity-provider \
  --vpc-config SubnetIds=subnet-12345,subnet-67890,subnet-11111,SecurityGroupIds=sg-12345 \
  --permissions-config CapacityProviderOperatorRoleArn=arn:aws:iam::123456789012:role/MyOperatorRole \
  --instance-requirements Architectures=x86_64 \
  --capacity-provider-scaling-config ScalingMode=Auto
```

### 必需参数
<a name="lambda-managed-instances-capacity-provider-required-params"></a>

**CapacityProviderName**
+ 您的容量提供程序的唯一名称
+ 在您的 AWS 账户中必须是唯一的

**VpcConfig**
+ **SubnetIds**（必填）：至少一个子网，最多 16 个。在多个可用区之间使用子网以增强韧性
+ **SecurityGroupIds**（可选）：您的实例的安全组。如果未指定，则默认为 VPC 的默认安全组

**PermissionsConfig**
+ **CapacityProviderOperatorRoleArn**（必填）：允许 Lambda 在容量提供程序中管理 EC2 资源的 IAM 角色

### 可选参数
<a name="lambda-managed-instances-capacity-provider-optional-params"></a>

**InstanceRequirements**

为您的容量提供程序指定架构和[实例类型](https://aws.amazon.com/lambda/pricing/#:~:text=EPU%20pricing%20applies.-,Management%20Fees,-Pricing%20Example%3A%20High)：
+ **架构**：选择 `x86_64` 或 `arm64`。默认为 `x86_64`
+ **AllowedInstanceTypes**：指定允许的实例类型。示例：`m5.8xlarge`
+ **ExcludedInstanceTypes**：使用通配符指定排除的实例类型。您只能指定 AllowedInstanceTypes 或 ExcludedInstanceTypes 中的一种

默认情况下，Lambda 会为工作负载选择最佳实例类型。我们建议让 Lambda 托管实例为您选择实例类型，因为限制可能的实例类型数量可能会导致可用性降低。

**CapacityProviderScalingConfig**

配置 Lambda 扩展您的实例的方式：
+ **ScalingMode**：对于自动扩缩，设置为 `Auto`，或者对于手动控制，设置为 `Manual`。默认为 `Auto`
+ **MaxVCpuCount**：容量提供程序的最大 vCPU 数量。默认值为 400。
+ **ScalingPolicies**：为 CPU 和内存利用率定义目标跟踪扩展策略

**KmsKeyArn**

指定一个 AWS KMS 密钥进行 EBS 加密。如果未指定，则默认为 AWS 托管密钥。

**标签**

添加标签以组织和管理您的容量提供程序。

## 管理容量提供程序
<a name="lambda-managed-instances-managing-capacity-providers"></a>

### 更新容量提供程序
<a name="lambda-managed-instances-updating-capacity-provider"></a>

您可以使用 `UpdateCapacityProvider` API 更新容量提供程序的某些属性。

```
aws lambda update-capacity-provider \
  --capacity-provider-name my-capacity-provider \
  --capacity-provider-scaling-config ScalingMode=Auto
```

### 删除容量提供程序
<a name="lambda-managed-instances-deleting-capacity-provider"></a>

当您不再需要某个容量提供程序时，您可以使用 `DeleteCapacityProvider` API 将其删除。

```
aws lambda delete-capacity-provider \
  --capacity-provider-name my-capacity-provider
```

**注意：**您无法删除已附加了函数版本的容量提供程序。

### 查看容量提供程序详细信息
<a name="lambda-managed-instances-viewing-capacity-provider"></a>

使用 `GetCapacityProvider` API 检索有关容量提供程序的信息。

```
aws lambda get-capacity-provider \
  --capacity-provider-name my-capacity-provider
```

## 容量提供程序状态
<a name="lambda-managed-instances-capacity-provider-states"></a>

容量提供程序可以处于以下状态之一：
+ **待处理**：正在创建容量提供程序
+ **活动**：容量提供程序已准备好投入使用
+ **失败**：创建容量提供程序失败
+ **正在删除**：正在删除容量提供程序

## 配额
<a name="lambda-managed-instances-capacity-provider-quotas"></a>
+ **每个账户的最大容量提供程序数**：1000
+ **每个容量提供程序的最大函数版本数**：100（无法增加）

## 最佳实践
<a name="lambda-managed-instances-capacity-provider-best-practices"></a>

1. **按信任级别分离**：为具有不同安全要求的工作负载创建不同的容量提供程序

1. **使用描述性名称**：对容量提供程序进行命名，以清楚地表明其预期用途和信任级别（例如 `production-trusted`、`dev-sandbox`）。

1. **使用多个可用区**：在多个可用区中指定子网以提供高可用性。

1. **让 Lambda 选择实例类型**：除非有特定硬件要求，否则请允许 Lambda 选择最佳实例类型以确保可用性

1. **监控使用情况**：使用 AWS CloudTrail 监控容量提供程序的分配和访问模式

## 后续步骤
<a name="lambda-managed-instances-capacity-provider-next-steps"></a>
+ 了解有关[扩展 Lambda 托管实例](lambda-managed-instances-scaling.md)的信息
+ 了解 [Lambda 托管实例的安全和权限](lambda-managed-instances-security.md)
+ [为您的容量提供程序配置 VPC 连接](lambda-managed-instances-networking.md)
+ 查看 [Java](lambda-managed-instances-java-runtime.md)、[Node.js](lambda-managed-instances-nodejs-runtime.md) 和 [Python](lambda-managed-instances-python-runtime.md) 的运行时特定指南