【本記事を作成した意図】
EC2インスタンスのAMI作成中にインスタンスを起動・削除した場合の挙動について、詳細に理解していなかったため、AWSサポートに質問してみた。
【質問】
① EC2停止後にAMI作成を行い、「保留中」のステータスの状態で、EC2を起動し、ファイル等の変更・削除・作成を行った場合でも、AMIは正常に作成できる認識。
この場合、EC2を停止した際の断面のAMIが取得される認識で相違ないか。
② EC2停止後にAMI作成を行い、「保留中」のステータスの状態で、EC2を終了したとしても、AMI取得は正常終了し、EC2を停止した際の断面のAMIが取得される認識で相違ないか。
③ ①・②の質問と関連するが、EC2停止後にAMI作成中にも関わらず、何故EC2に対して変更作業を行ったとしても、EC2を停止した際の断面が取得できるようになっているのか。
【AWSからの回答(要約)】
①の質問について
認識相違なし。
AMI は EC2 インスタンスの起動に必要な情報と EBS スナップショットの組み合わせから構成されている。
また EBS スナップショットの作成が開始された (pending 状態になった) 段階で静止点の確保が行われ、pending 状態の EBS スナップショットは、ボリュームに対する読み込み、書き込みの影響を受けない。[1]
すなわち AMI を作成された段階 (EC2 インスタンスが停止している段階) にて、静止点が確保される。
②の質問について
認識相違なし。
前述の通り AMI 作成時点で静止点が確保されているため。すなわち AMI 作成後の pendding 状態中に、AMI 取得元の EC2 インスタンスを終了した場合も、AMI の取得における API エラーなどは発生せず、停止した EC2 インスタンスに関するバックアップが取得される。
③の質問について
EC2 インスタンスが停止した状態の静止点、すなわち AMI 作成をリクエストされた時点の静止点は、AMI のステータスが pending となった時点で確保が完了しているため。
また、資料 [2] の記載通り、AMI ID が返された時点でスナップショットの静止点が確保されてるため、それ以降の操作 (EC2 インスタンスの終了など) は AMI 及び スナップショットに影響を与えない。
また、AMI 取得に関して上記以上に詳細な公開情報は確認できていない。
■ 参考資料
[1] Amazon EBS スナップショットの作成
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-creating-snapshot.html
スナップショットは非同期に行われます。
ポイントインタイムのスナップショットはすばやく作成されますが、スナップショットが完了する (変更されたすべてのブロックが Amazon S3 に転送される) まで、スナップショットのステータスは pending です。
大きな初期スナップショットや、多数のブロックが変更されている後続のスナップショットの場合は、数時間かかることがあります。
この処理の完了中に、進行中のスナップショットはボリュームに対する継続的な読み取りと書き込みの影響を受けません。
[2] [AWS Black Belt Online Seminar] Amazon Elastic Block Store
https://d1.awsstatic.com/webinars/jp/pdf/services/20190320_AWS-BlackBelt-EBS.pdf#page=64
バックアップと静止点
• Snapshotの作成を指示しレスポンスが返ってきたら、その時点のデータのバックアップが開始されている。
バックアップと静止点
• Snapshotの作成を指示しレスポンスが返ってきたら、その時点のデータのバックアップが開始されている。
• レスポンスが返ってきた時点でI/Oを再開して良いので、静止点を維持するのは短時間で済む