AWS Answersより「AMI Design」を読んでみた

AWS Answersから「AMI Design」を読んでみました。
2019.08.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

西澤です。以前から存在していたAWS Answersという公式ページの構成が少し変わっていたことに偶然気付きました。残念なことにトップページ以外の詳細コンテンツはそれぞれ英語版のページしか存在しないようなので、あまり参照されるケースが少ないように感じています。私自身の情報整理も兼ねて、執筆時点(2019年8月)でのAWS Answersの記事について取り上げて行こうと思います。まずは、AWS Answersから「AMI Design」についてまとめてみます。

AWS Answersとは?

AWS Answers は、AWS ソリューションアーキテクトが開発したドキュメントやソリューションのリポジトリで、AWS クラウドを構築して拡大するのに役立つ方法を説明しています。 AWS Answers(クラウドでのアプリ設計、開発、運用に関するよくあるご質問) | AWS

AWS アーキテクチャーセンターのページ配下にあるページの1つのように構成されていますが、ページに遷移してみると、AWS Answersの中にAWS ソリューション、AWS クイックスタートを内包するような形となっているようです。

  • AWS Well-Architected
  • This Is My Architecture
  • AWS Answers
  • AWS ソリューション
  • AWS クイックスタート
  • クラウドセキュリティ

私が観測した範囲では、以前から存在していたAWS Answersのコンテンツは、AWS ソリューション配下に移動されており、"技術概要"としてのコンテンツが追加されているようです。今回はこちらから、記事を取り上げて内容をまとめていこうと思っています。まあ十分に内容はまとまっているので、ぶっちゃけ英語を日本語に翻訳してまとめているだけですが、ご了承ください。

AMI Design

今回取り上げるのは、こちらの記事です。

こちらでは、カスタムAMIを取得する際に、イメージに含めるソフトウェアを決定する戦略についてまとめています。

一般的なベストプラクティス

AMIに何を含めるかは、以下のベストプラクティスを考慮して決めます。

  • AMIにパスワード、秘密鍵、または、その他の機密情報を埋め込まない
  • CloudFormationまたはサードパーティの構成管理ツールを活用する
  • 再利用可能なモジュラーテンプレートのライブラリを作成する
  • 起動時にランタイム情報を参照できるようにブートストラップ機能を持たせる
  • コンテンツの識別ができるようにタグ付けする

AMI設計オプション

AMI設計において、シンプルさと柔軟性は相互にトレードオフの関係になっていますす。

AWS AMIデザイン– AWSアンサー

ワークロードの制約から以下のような観点でどの選択するべきか検討しましょう。

  • インスタンス復旧、コンピューティングリソースの追加にはどれくらい時間が必要か?
  • ベースラインは安定しているか?
  • 手動のプロビジョニングが必要か?
  • AWS環境とオンプレミス環境の両方にデプロイするか?
  • 再利用としている既存のプロビジョニングツールがあるか?

Fully Baked AMI

AWS AMIデザイン– AWSアンサー

  • 全部入りのAMI
  • 展開が簡単で、起動は最速。
  • AMIの維持にコストがかかる。
  • AWSの小規模展開や、自動AMIビルドおよび管理システムと組み合わせるケースで有効
  • 起動時にEC2インスタンスのユーザーデータを読み取ってちょっとした処理するメカニズムを含めることを推奨

JeOS AMI

AWS AMIデザイン– AWSアンサー

  • Just Enough Operating System (JeOS)なアプローチ
  • 最小限のOSと、インスタンス起動時に動作する構成管理エージェントを組み合わせ
  • 最初の起動時に、必要なすべてのソフトウェアをダウンロードから設定までやる
  • 展開時の柔軟性と最高レベルの移植性
  • AWSおよび構成自動化ツールの経験があるケースで有効
  • インスタンスの起動時間が大幅に増加する可能性あり
  • 構成管理システムとの密結合が必要
  • 自動化機能が制限されているレガシーソフトウェアは利用不可

Hybrid AMI

AWS AMIデザイン– AWSアンサー

  • Fully BakedとBakedの中間
  • 起動後の変更の柔軟性と、起動速度の両面を兼ね備える
  • 頻繁に変更されるソフトウェアをマージするケースで有効
  • イメージの展開のシンプルさと、起動時に最新のソフトウェアビルドと更新を引き出す展開の柔軟性を組み合わせたい
  • 自動化されたAMIビルド管理システムおよび構成管理ツールと組み合わせが必要

AMIタグ構造サンプル

以下のような観点でタグ付けすることを検討しましょう。

  • Technical Tags
  • Name
  • Version
  • Software
  • Role
  • System
  • Business Tags
  • Project
  • Cost Center/Business Unit
  • Stage
  • Security Tags
  • Confidentiality
  • Compliance

まとめ

AMIに何を含めるか、という基本的な内容ではありましたが、比較検討する際に有用となる情報がきれいにまとめられていて素晴らしいと思いました!

どこかの誰かのお役に立てば嬉しいです。