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。