

# Lambda MicroVMs のベストプラクティス
<a name="microvms-best-practices"></a>

AWS Lambda MicroVMs を使用して、信頼性と費用対効果が高く安全なアプリケーションを構築するには、以下のベストプラクティスに従います。

## アプリケーション設計
<a name="microvms-best-practices-design"></a>

MicroVM スナップショットとライフサイクルフックと適切に連携するようにアプリケーションを設計します。
+ **ライフサイクルフックを使用する** – 実行後に初期化を行う `/run`、正常なクリーンアップを行う `/suspend`、接続の再確立を行う `/resume`、データフラッシュを行う `/terminate` を実装します。
+ **スナップショットの再利用の処理** – UUID、シークレット、ランダムな値は、イメージの構築中ではなく `/run` フックで生成します。すべての乱数生成に CSPRNG を使用します。
+ **再開を目的とした設計** –`/resume` フック内のすべてのネットワーク接続とキャッシュ状態を検証します。通常、AWSSDK 接続は自動的に復旧しますが、カスタム接続は復旧しない場合があります。

## パフォーマンス
<a name="microvms-best-practices-performance"></a>

以下の方法で MicroVM のパフォーマンスを最適化します。
+ **MicroVM の適切なサイズを設定する** – CPU、メモリ、帯域幅の要件を満たす最小の MicroVM サイズを選択します。帯域幅は、設定されたメモリでスケールします。
+ **スナップショットサイズを最小限に抑える** – アプリケーションのフットプリントを小さくして実行回数と再開回数を削減します。イメージスナップショットをキャプチャする前にビルド時の依存関係と一時ファイルを削除します。
+ **レイテンシーの影響を受けやすいワークロードni一時停止/再開を使用する** – 頻繁に使用する環境を一時停止状態にして、実行をすばやく再開します。

## セキュリティ
<a name="microvms-best-practices-security"></a>

以下の方法で MicroVM ワークロードを保護します。
+ **認証トークンをローテーションする** – 有効期間の短いトークン (15～30 分) を生成します。有効期限が切れる前にトークンを更新するロジックをクライアントに実装します。
+ **特定のポートへのトークンの範囲を制限する** – `allowedPorts`パラメータを使用して、トークンの範囲をアプリケーションが使用するポートのみに制限します。
+ **機密性の高いトラフィックには VPC 出力を使用する** – パブリックインターネットではなく VPC 出力コネクタを介して、データベースと内部 API にトラフィックをルーティングします。
+ **最小特権 IAM を適用する** – ビルドロール (イメージ作成) を実行ロール (ランタイム) から分離します。必要最小限のアクセス許可を付与します。

## コスト最適化
<a name="microvms-best-practices-cost"></a>

以下の戦略でコストを削減します。
+ **アイドルポリシーを設定する** – アイドル状態の MicroVM を自動的に一時停止するように `maxIdleDurationSeconds` を設定します。一時停止された MicroVM のコンピューティング料金は発生しません。
+ **maximumDurationInSeconds を設定する** – すべての MicroVM で強制終了時間を設定することでコストの増大を防止します。
+ **使用していない MicroVM を終了する** – MicroVM をいつまでも実行したままにしないでください。延長アイドル期間の後に自動終了するには `suspendedDurationSeconds` を使用します。
+ **タグリソース** – AWS MicroVM イメージにタグを使用して Cost Explorer でのコスト配分とレポートを行います。
+ **MicroVM の適切なサイズを設定する** – パフォーマンスのニーズを満たす最小のベースラインから始めます。再プロビジョニングすることなく、ピークアクティビティ中にベースラインの 4 倍までバーストできます。
+ **使用していないイメージをクリーンアップする** – 不要になった MicroVM イメージバージョンを削除してストレージコストを削減します。

## モニタリング
<a name="microvms-best-practices-monitoring"></a>

MicroVM を効果的にモニタリングします。
+ **stateReason をレビューする** – MicroVM が予期せず終了すると、`get-microvm` レスポンスには予期しない障害の理由を示す `stateReason` が含まれます。