容量提供程序 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

容量提供程序

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

在创建容量提供程序时,您将指定:

  • VPC 配置:实例将在其中运行的子网和安全组

  • 权限:Lambda 用于管理 EC2 资源的 IAM 角色

  • 实例要求(可选):架构和实例类型首选项

  • 扩展配置(可选):Lambda 如何扩展您的实例

将容量提供程序理解为安全边界

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

关键安全概念:

  • 容量提供程序:定义 Lambda 函数信任级别的安全边界

  • 容器隔离:容器本身并非安全提供者——切勿将它们用于不受信任的工作负载之间的安全防护。

  • 信任分离:通过使用不同的容量提供程序来分离那些彼此不互信的工作负载

创建容量提供程序

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

使用 Amazon 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

必需参数

CapacityProviderName

  • 您的容量提供程序的唯一名称

  • 在您的 Amazon 账户中必须是唯一的

VpcConfig

  • SubnetIds(必填):至少一个子网,最多 16 个。在多个可用区之间使用子网以增强韧性

  • SecurityGroupIds(可选):您的实例的安全组。如果未指定,则默认为 VPC 的默认安全组

PermissionsConfig

  • CapacityProviderOperatorRoleArn(必填):允许 Lambda 在容量提供程序中管理 EC2 资源的 IAM 角色

可选参数

InstanceRequirements

为您的容量提供程序指定架构和实例类型

  • 架构:选择 x86_64arm64。默认为 x86_64

  • AllowedInstanceTypes:指定允许的实例类型。示例:m5.8xlarge

  • ExcludedInstanceTypes:使用通配符指定排除的实例类型。您只能指定 AllowedInstanceTypes 或 ExcludedInstanceTypes 中的一种

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

CapacityProviderScalingConfig

配置 Lambda 扩展您的实例的方式:

  • ScalingMode:对于自动扩缩,设置为 Auto,或者对于手动控制,设置为 Manual。默认为 Auto

  • MaxVCpuCount:容量提供程序的最大 vCPU 数量。默认值为 400。

  • ScalingPolicies:为 CPU 和内存利用率定义目标跟踪扩展策略

KmsKeyArn

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

标签

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

管理容量提供程序

更新容量提供程序

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

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

删除容量提供程序

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

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

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

查看容量提供程序详细信息

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

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

容量提供程序状态

容量提供程序可以处于以下状态之一:

  • 待处理:正在创建容量提供程序

  • 活动:容量提供程序已准备好投入使用

  • 失败:创建容量提供程序失败

  • 正在删除:正在删除容量提供程序

配额

  • 每个账户的最大容量提供程序数:1000

  • 每个容量提供程序的最大函数版本数:100(无法增加)

最佳实践

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

  2. 使用描述性名称:对容量提供程序进行命名,以清楚地表明其预期用途和信任级别(例如 production-trusteddev-sandbox)。

  3. 使用多个可用区:在多个可用区中指定子网以提供高可用性。

  4. 让 Lambda 选择实例类型:除非您有特定的硬件要求,否则请允许 Lambda 选择最合适的实例类型,以确保最佳可用性

  5. 监控使用情况:使用 Amazon CloudTrail 监控容量提供程序的分配和访问模式

后续步骤