AWS AMI (Amazon Machine Image) は、EC2インスタンスを起動するために必要な情報を含むテンプレートです。
本記事では、AWSサービスの1つであるAmazon マシンイメージ (AMI)について、その概要と設定方法を紹介します。
EC2の概要については下記紹介していますので、ご参考ください。
AMIとは
Amazon マシンイメージ (AMI)は、インスタンス作成時に必要な設定(OS、アプリケーション等)をまとめたテンプレートです。VMwareのOVFテンプレートのようなイメージです。
AMIを利用することで、特定の設定をテンプレート化し同じ設定のサーバを量産したり、特定の地点の設定状態をバックアップすることが可能です。
AMIの構成要素
AMIには以下の要素が含まれています。
- オペレーティングシステム (OS)
- アプリケーションソフトウェア
- 起動許可:作成したAMIを誰が使用できるかを決定する権限設定。
- ブロックデバイスマッピング情報:インスタンスにアタッチするブロックデバイス(インスタンスストアボリュームとEBSボリューム)の定義。
AMIの構成要素:起動設定とは
起動許可は、作成したAMIを誰が使用できるかを決定する権限設定です。
この設定により、AMIからEC2インスタンスを起動できるユーザーを制御します。
起動許可の重要性
- セキュリティ確保: 誰でもAMIからEC2インスタンスを起動できてしまうとセキュリティ上の問題が生じる可能性があります。
- アクセス制御: 起動許可により、特定のAWSアカウントのみがAMIを使用できるよう制限することができます。
起動許可の特徴
- 所有者の権限: AMIの所有者には常に起動許可が与えられ、この権限は取り消せません。
- 柔軟な管理: 特定のアカウントへの許可の追加や削除、すべての起動許可の取り消しなど、柔軟な管理が可能です。
- 共有オプション: AMIを特定のAWSアカウントと共有したり、パブリックに公開したりすることができます。
起動許可は、AMIの安全な使用と適切なアクセス制御を確保するための重要な要素です。
適切に設定することで、意図しないユーザーによるAMIの使用を防ぎ、セキュリティリスクを軽減することができます。
AMIの構成要素:ブロックデバイスマッピング情報とは
ブロックデバイスマッピングは、インスタンスにアタッチするブロックデバイス(インスタンスストアボリュームとEBSボリューム)を定義します。
これにより、AMIから起動されるすべてのインスタンスが使用するストレージ構成を指定できます。
ブロックデバイスマッピングの構成要素
- デバイス名
- ボリュームタイプ
- EBSボリューム
- インスタンスストアボリューム
- ボリューム情報
- サイズ
- IOPS(EBSの場合)
- 暗号化設定
ブロックデバイスマッピングの重要性
- 柔軟なストレージ構成
- インスタンス起動時に必要なストレージを事前に定義できる
- 複数のボリュームを簡単に追加・設定可能
- 一貫性の確保
- 同じAMIから起動されるすべてのインスタンスで一貫したストレージ構成を維持
- パフォーマンス最適化
- 特定のワークロードに適したストレージ構成を事前に設定可能
ブロックデバイスマッピングの注意点
- インスタンスタイプの制限
- NVMeインスタンスストアボリューム
- デバイス名とOSの認識
ブロックデバイスマッピングは、AMIの重要な構成要素であり、EC2インスタンスのストレージ構成を柔軟かつ効率的に管理するための強力なツールです。
適切に設定することで、インスタンスのパフォーマンスと一貫性を向上させることができます。
AMIの種類
利用できるAMIはAMIカタログから確認することができます。
AMIの種類は以下の4つです。
- クイックスタートAMI
- AWSが提供する事前設定済みのAMI
- Amazon Linux、Windows、Red Hatなどの一般的なOSを含む
- カスタムAMI
- ユーザーが独自に作成したAMI
- 特定の設定やソフトウェアを含む
- AWS Marketplace AMI
- サードパーティベンダーが提供するAMI
- 特定のアプリケーションがプリインストールされている
- コミュニティAMI
- 一般ユーザーが公開しているAMI
AMIの利点
AMIの主な利点としては、以下の通りです。
迅速なデプロイメント
- 初期設定の省略: OSやアプリケーションのインストール、設定作業が不要になります。
- 起動時間の短縮: プリロードされた状態のEC2インスタンスを素早く起動できます。
- 大規模展開の効率化: 同一構成の多数のインスタンスを短時間で展開可能です。
一貫性と標準化
- 環境の再現性: 同じAMIから複数のインスタンスを起動することで、一貫した環境を作成できます。
- 設定ミスの防止: 標準化された環境により、手動設定によるエラーを減らせます。
- テスト環境の構築: 本番環境と同一の構成でテスト環境を容易に作成できます。
カスタマイズと最適化
- 特定ニーズへの対応: 既存のAMIをベースに、特定のアプリケーションや設定でカスタマイズしたAMIを作成できます。
- パフォーマンス最適化: ワークロードに合わせて最適化されたAMIを準備できます。
- セキュリティ強化: セキュリティ設定を組み込んだAMIを作成し、デプロイ時に自動適用できます。
バックアップとリカバリー
- スナップショット機能: サーバーの状態をキャプチャし、バックアップとして利用できます。
- 災害復旧の簡素化: AMIを使用することで、障害発生時に特定の状態まで容易に復旧できます。
- クロスリージョン展開: AMIを異なるAWSリージョン間でコピーし、グローバルな展開や災害対策に活用できます。
コスト最適化
- 長期未使用インスタンスの削減: 長期間使用しないEC2インスタンスはAMIを取得し、インスタンス自体を削除することでコストを削減できます。
- リソース効率の向上: 必要な時だけインスタンスを起動し、不要時はAMIとして保存することで、リソース使用を最適化できます。
柔軟性と拡張性
- 多様なOSサポート: さまざまなバージョンのLinuxやWindowsなど、多様なオペレーティングシステムを選択できます。
- スケーラビリティ: 小規模な用途から大規模なデプロイメントまで、様々なスケールのニーズに対応します。
これらの利点により、AMIはEC2インスタンスの効率的な管理、迅速なデプロイメント、一貫性の確保、コスト最適化などを実現する強力なツールとなっています。
AMIの料金
AMI自体に料金はかかりませんが、カスタムAMIを保存する場合はAmazon EBSスナップショットのストレージ料金が発生します。
EC2からAMIイメージの作成方法(実践)
実際にAWSコンソール画面からAMI作成を実施してみます。
事前にインスタンスを1つ作成しました。
今回はこのインスタンスのAMIイメージを作成してみます。
AMIを取得したいインスタンスを選択します。
画面右上の「アクション」ボタンから「イメージとテンプレート」→「イメージ作成」をクリックします。
(操作はEC2インタンスのステータスチェックが「利用可能」状態になってから、実施してください。)
AMIの作成画面が表示されますので、以下の通り設定をしていきます。
No | 設定項目 | 説明 |
---|---|---|
① | イメージ名 | AMIイメージの名前を指定します。 今回はtest01のAMIイメージのため「ami-test01」を設定します。 |
② | イメージの説明 – オプション | AMIの説明を記載します。 オプションの項目となります。 |
設定が完了したら、右下の「イメージを作成」ボタンを選択します。
左のサイドバーの「AMI」のタブからAMI管理画面に移動します。
以下の通り、AMIが作成され始めています。
ステータスが「保留中」なので、現在作成中です。
ステータスが「利用可能」に変化しました。
これで、作成は完了となります。
次に、このAMIイメージを利用して、新しくEC2インスタンスを作成してみましょう。
AMIイメージからEC2インスタンを新規作成する方法(実践)
では、先ほど作成したAMIイメージから新しくEC2インスタンスを作成してみます。
AMIの管理画面から対象のAMIを選択し、画面右上の「AMIからインスタンを起動」ボタンをクリックします。
インスタンス作成画面が表示されますので、設定画面に沿ってインスタンスを作成していきます。
今回は、AMIからインスタンスを作成していますので、「
アプリケーションおよび OSイメージ(Amazon マシンイメージ)」の項目に、自分が作成したAMIイメージが選択されていることがわかります。
設定が完了したら、画面右にある「インスタンスを起動」ボタンを選択します。
インスタンス作成画面の内容については、以下の記事をご参考ください。
インスタンスが作成されましたので、右下の「すべてのインスタンスを表示」ボタンを選択します。
インスタンス:test02が作成されました。
AMI名について、自分で作成した「ami-test01」となっています。
まとめ
今回では、AWSサービスの1つであるAmazon マシンイメージ (AMI)について、その概要と設定方法を紹介しました。
AMIは、AWSでのEC2インスタンスの効率的な管理と展開に不可欠なコンポーネントです。
適切なAMIを選択または作成することで、一貫性のある環境を迅速に構築し、運用効率を向上させることができます。
ご参考になれば、幸いです。
以上になります。ありがとうございました。
参考
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/sharingamis-explicit.html
https://o2mamiblog.com/aws-ami-beginner/
https://www.kuix.co.jp/da-sys/?p=1311
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html
https://dev.classmethod.jp/articles/rhel-block-device-mapping/
https://www.bold.ne.jp/engineer-club/aws-ami
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/AMIs.html
https://www.future.ad.jp/futuremedia/keyword_ami/
https://aws.amazon.com/jp/ec2/faqs/
https://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/tkv-set-ami-launch-perms.html
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/sharingamis-explicit.html
コメント