

# Lambda MicroVMs 的最佳实践
<a name="microvms-best-practices"></a>

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

## 应用程序设计
<a name="microvms-best-practices-design"></a>

做好应用程序设计，使其能够与 MicroVM 快照和生命周期挂钩良好配合使用：
+ **使用生命周期挂钩**：实施 `/run` 以用于运行后初始化，实施 `/suspend` 以确保有序清理，实施 `/resume` 以确保重新建立连接，并实施 `/terminate` 以清空数据。
+ **处理快照重复使用**：在 `/run` 钩子中，而不是在映像构建期间生成 UUID、密钥和随机值。所有随机数生成均使用 CSPRNG。
+ **面向恢复的设计**：验证 `/resume` 钩子中的所有网络连接和缓存状态。AWSSDK 连接通常会自动恢复，但自定义连接可能不会。

## 性能
<a name="microvms-best-practices-performance"></a>

遵循以下最佳实践来优化 MicroVM 性能：
+ **正确调整 MicroVM 大小**：选择满足 CPU、内存和带宽要求的最小 MicroVM 大小。根据配置的内存扩展带宽。
+ **最大限度减少快照大小**：确保应用程序较少占用空间，从而缩短运行和恢复时间。首先移除构建时的依赖项和临时文件，然后再拍摄映像快照。
+ **对延迟敏感的工作负载使用暂停/恢复**：将频繁使用的环境保持在暂停状态，以确保能够快速恢复执行。

## 安全性
<a name="microvms-best-practices-security"></a>

遵循以下最佳实践来保护 MicroVM 工作负载：
+ **轮换身份验证令牌**：生成有效期短的令牌（15—30 分钟）。在令牌到期前在客户端中实施令牌刷新逻辑。
+ **将令牌使用范围限定为特定的端口**：使用 `allowedPorts` 参数将令牌使用范围限定为您的应用程序使用的端口。
+ **使用 VPC 出口来处理敏感流量**：通过 VPC 出口连接器而不是公共互联网，来将流量路由到数据库和内部 API。
+ **应用最低权限 IAM**：将构建角色（映像创建）与执行角色（运行时）分开。授予最低所需权限。

## 成本优化
<a name="microvms-best-practices-cost"></a>

通过以下策略降低成本：
+ **配置空闲策略**：设置 `maxIdleDurationSeconds` 以自动暂停空闲的 MicroVM。暂停的 MicroVM 不会产生计算费用。
+ **设置 maximumDurationInSeconds**：通过在每台 MicroVM 上设置硬终止时间来防止成本失控。
+ **终止未使用的 MicroVM**：不要让 MicroVM 无限期运行。使用 `suspendedDurationSeconds` 以在长时间空闲后自动终止。
+ **标记资源**：使用 MicroVM 映像上的标签，以在 AWS Cost Explorer 成本管理服务中分配和报告成本。
+ **正确调整 MicroVM 大小**：从满足您的性能需求的最小基准开始。在峰值活动期，您无需重新预调配即可爆增至基准水平的 4 倍。
+ **清理未使用的映像**：删除不再需要的 MicroVM 映像版本以降低存储成本。

## 监控
<a name="microvms-best-practices-monitoring"></a>

有效监控您的 MicroVM：
+ **检查 stateReason**：当 MicroVM 意外终止时，`get-microvm` 响应中会包含带有意外故障原因的 `stateReason`。