View a markdown version of this page

Lambda MicroVMs 的最佳实践 - AWS Lambda

Lambda MicroVMs 的最佳实践

遵循这些最佳实践,使用 AWS Lambda MicroVMs 构建可靠、经济高效且安全的应用程序。

应用程序设计

做好应用程序设计,使其能够与 MicroVM 快照和生命周期挂钩良好配合使用:

  • 使用生命周期挂钩:实施 /run 以用于运行后初始化,实施 /suspend 以确保有序清理,实施 /resume 以确保重新建立连接,并实施 /terminate 以清空数据。

  • 处理快照重复使用:在 /run 钩子中,而不是在映像构建期间生成 UUID、密钥和随机值。所有随机数生成均使用 CSPRNG。

  • 面向恢复的设计:验证 /resume 钩子中的所有网络连接和缓存状态。AWSSDK 连接通常会自动恢复,但自定义连接可能不会。

性能

遵循以下最佳实践来优化 MicroVM 性能:

  • 正确调整 MicroVM 大小:选择满足 CPU、内存和带宽要求的最小 MicroVM 大小。根据配置的内存扩展带宽。

  • 最大限度减少快照大小:确保应用程序较少占用空间,从而缩短运行和恢复时间。首先移除构建时的依赖项和临时文件,然后再拍摄映像快照。

  • 对延迟敏感的工作负载使用暂停/恢复:将频繁使用的环境保持在暂停状态,以确保能够快速恢复执行。

安全性

遵循以下最佳实践来保护 MicroVM 工作负载:

  • 轮换身份验证令牌:生成有效期短的令牌(15—30 分钟)。在令牌到期前在客户端中实施令牌刷新逻辑。

  • 将令牌使用范围限定为特定的端口:使用 allowedPorts 参数将令牌使用范围限定为您的应用程序使用的端口。

  • 使用 VPC 出口来处理敏感流量:通过 VPC 出口连接器而不是公共互联网,来将流量路由到数据库和内部 API。

  • 应用最低权限 IAM:将构建角色(映像创建)与执行角色(运行时)分开。授予最低所需权限。

成本优化

通过以下策略降低成本:

  • 配置空闲策略:设置 maxIdleDurationSeconds 以自动暂停空闲的 MicroVM。暂停的 MicroVM 不会产生计算费用。

  • 设置 maximumDurationInSeconds:通过在每台 MicroVM 上设置硬终止时间来防止成本失控。

  • 终止未使用的 MicroVM:不要让 MicroVM 无限期运行。使用 suspendedDurationSeconds 以在长时间空闲后自动终止。

  • 标记资源:使用 MicroVM 映像上的标签,以在 AWS Cost Explorer 成本管理服务中分配和报告成本。

  • 正确调整 MicroVM 大小:从满足您的性能需求的最小基准开始。在峰值活动期,您无需重新预调配即可爆增至基准水平的 4 倍。

  • 清理未使用的映像:删除不再需要的 MicroVM 映像版本以降低存储成本。

监控

有效监控您的 MicroVM:

  • 检查 stateReason:当 MicroVM 意外终止时,get-microvm 响应中会包含带有意外故障原因的 stateReason