AMI の保存と復元の仕組み - Amazon Elastic Compute Cloud

AMI の保存と復元の仕組み

S3 を使用して AMI を保存および復元するには、次の API を使用します。

  • CreateStoreImageTask – AMI を S3 バケットに保存する

  • DescribeStoreImageTasks – AMI 保存タスクの進行状況を示す

  • CreateRestoreImageTask – S3 バケットから AMI を復元する

CreateStoreImageTask

CreateStoreImageTask API は、AMI を単一のオブジェクトとして S3 バケットに保存します。

API は、AMI とそのスナップショットからすべてのデータを読み取るタスクを作成し、S3 マルチパートアップロードを使用して S3 オブジェクトにデータを保存します。API は、リージョン固有でない AMI メタデータの大部分を含む AMI のすべてのコンポーネント、および AMI に含まれるすべての EBS スナップショットを取得し、S3 内の単一のオブジェクトにパックします。データは、S3 で使用される領域の量を削減するために、アップロードプロセスの一環として圧縮されるので、S3 内のオブジェクトは AMI 内のスナップショットのサイズの合計よりも小さくなる可能性があります。

この API を呼び出すアカウントに AMI タグとスナップショットタグが表示されている場合、それらは保持されます。

S3 のオブジェクトは AMI と同じ ID を持っていますが、.bin 拡張子が付いています。AMI 名、AMI の説明、AMI の登録日、AMI の所有者アカウント、および保存オペレーションのタイムスタンプといったデータも S3 オブジェクトに S3 メタデータタグとして保存されます。

タスクを完了するのにかかる時間は、AMI のサイズによって異なります。また、タスクがキューに入れられているため、進行中の他のタスクの数にも依存します。DescribeStoreImageTasks API を呼び出してタスクの進行状況を追跡できます。

進行中のすべての AMI のサイズの合計は、アカウントごとに 600 GB の EBS スナップショットデータに制限されます。進行中のタスクが制限未満になるまで、それ以降のタスクの作成は拒否されます。例えば、100 GB のスナップショットデータを持つ AMI と 200 GB のスナップショットデータを持つ別の AMI が現在保存されている場合、別のリクエストが受け入れられます。これは、進行中の合計が 300 GB で、制限未満であるためです。ただし、800 GB のスナップショットデータを持つ 1 つの AMI が現在保存されようとしている場合は、タスクが完了するまでそれ以降のタスクは拒否されます。

DescribeStoreImageTasks

DescribeStoreImageTasks API は、AMI の保存タスクの進行状況を示します。指定した AMI のタスクを記述できます。AMI を指定しない場合、過去 31 日間に処理されたすべての保存イメージタスクのページ分割されたリストが表示されます。

各 AMI タスクについて、応答では、タスクが InProgressCompleted、または Failed のいずれであるかが示されます。InProgress のタスクの場合、応答では、進行状況がパーセンテージで示されます。

タスクは時系列の逆順にリストされます。

現時点では、前月のタスクのみを表示できます。

CreateRestoreImageTask

CreateRestoreImageTask API は、CreateStoreImageTask リクエストを使用して以前に作成された S3 オブジェクトから AMI を復元するタスクを開始します。

復元タスクは、保存タスクが実行されたリージョンと同じリージョンまたは別のリージョンで実行できます。

AMI オブジェクトの復元ソースである S3 バケットは、復元タスクがリクエストされたリージョンと同じリージョンに存在する必要があります。AMI はこのリージョンで復元されます。

AMI は、保存された AMI の値に対応する名前、説明、ブロックデバイスマッピングなどのメタデータとともに復元されます。このアカウントの名前は、リージョン内の AMI に対して一意である必要があります。名前を指定しない場合、新しい AMI は元の AMI と同じ名前になります。AMI は、復元プロセス時に生成される新しい AMI ID を取得します。

AMI 復元タスクを完了するのにかかる時間は、AMI のサイズによって異なります。また、タスクがキューに入れられているため、進行中の他のタスクの数にも依存します。タスクの進行状況は、AMI (describe-images) またはその EBS スナップショット (describe-snapshots) を記述することで確認できます。タスクが失敗すると、AMI とスナップショットは失敗の状態に移行されます。

進行中のすべての AMI のサイズの合計は、アカウントあたり 300 GB (復元後のサイズに基づく) の EBS スナップショットデータに制限されます。進行中のタスクが制限未満になるまで、それ以降のタスクの作成は拒否されます。

ファイルパス

AMI を保存および復元するときは、次の方法でファイルパスを使用できます。

  • AMI を S3 に保存する場合、ファイルパスをバケット名に追加できます。システム内部では、バケット名からパスが分離され、AMI を保存するために生成されたオブジェクトキーにそのパスが追加されます。完全なオブジェクトパスは、API 呼び出しからのレスポンスに表示されます。

  • AMI を復元する場合、オブジェクトキーパラメータを使用できるので、オブジェクトキー値の先頭にパスを追加できます。

例: AMI の保存と復元にファイルパスを使用する (AWS CLI)

次の例では、まず、バケット名にファイルパスを追加して、AMI を S3 に保存します。次に、オブジェクトキーパラメータの先頭にファイルパスを追加して、S3 から AMI を復元します。

AMI を保存する場合、次のようにバケット名の後にファイルパスを指定します。

aws ec2 create-store-image-task \ --image-id ami-1234567890abcdef0 \ --bucket amzn-s3-demo-bucket/path1/path2

以下は出力例です。

{ "ObjectKey": "path1/path2/ami-1234567890abcdef0.bin" }

AMI を復元する場合、前のステップの出力からの、ファイルパスを含む値を指定します。

aws ec2 create-restore-image-task \ --object-key path1/path2/ami-1234567890abcdef0.bin \ --bucket amzn-s3-demo-bucket \ --name "New AMI Name"