容量提供程序
容量提供程序是运行 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_64或arm64。默认为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(无法增加)
最佳实践
-
按信任级别分离:为具有不同安全要求的工作负载创建不同的容量提供程序
-
使用描述性名称:对容量提供程序进行命名,以清楚地表明其预期用途和信任级别(例如
production-trusted、dev-sandbox)。 -
使用多个可用区:在多个可用区中指定子网以提供高可用性。
-
让 Lambda 选择实例类型:除非您有特定的硬件要求,否则请允许 Lambda 选择最合适的实例类型,以确保最佳可用性
-
监控使用情况:使用 Amazon CloudTrail 监控容量提供程序的分配和访问模式
后续步骤
-
了解有关扩展 Lambda 托管实例的信息