Amazon EC2 インスタンスを停止させることなく、そのルートボリュームを置換する - Amazon Elastic Compute Cloud

Amazon EC2 インスタンスを停止させることなく、そのルートボリュームを置換する

Amazon EC2 では、実行中のインスタンスのルート EBS ボリュームを置き換えることができます。

  • インスタンスストアボリュームで復元されたデータ ― インスタンスストアボリュームは、ルートボリュームが復元された後も、インスタンスにアタッチされたままになります。

  • データ (非ルート) Amazon EBS ボリュームに保存されたデータ - 非ルート Amazon EBS ボリュームは、ルートボリュームが復元された後もインスタンスに接続されたままです。

  • ネットワーク設定 — すべてのネットワークインターフェイスはインスタンスにアタッチされたままとなり、IP アドレス、識別子、およびアタッチメント ID を保持します。インスタンスが利用可能になると、保留中のネットワークトラフィックがすべてフラッシュされます。さらに、インスタンスは同じ物理ホスト上に残るため、パブリック IP アドレス、プライベート IP アドレス、および DNS 名が保持されます。

  • IAM ポリシー — インスタンスに関連付けられた IAM プロファイルとポリシー (タグベースのポリシーなど) は保持され、適用されます。

ルートボリューム置換タスクの仕組み

インスタンスのルートボリュームを復元すると、ルートボリュームの置換タスクが作成されます。元のルートボリュームがインスタンスからデタッチされ、その代わりに新しいルートボリュームがインスタンスにアタッチされます。インスタンスのブロックデバイスマッピングは、置換用ルートボリュームの ID を反映するように更新されます。

インスタンスのルートボリュームを置き換える場合は、新しいボリュームのスナップショットのソースを指定する必要があります。可能なオプションは次のとおりです。

このオプションは、現在のルートボリュームを、その作成に使用されたスナップショットに基づくボリュームに置き換えます。

起動状態の使用に関する考慮事項

置換用ルートボリュームには、元のルートボリュームと同じタイプ、サイズ、終了時の削除属性が割り当てられます。

このオプションは、現在のルートボリュームを、指定したスナップショットに基づく置換ボリュームに置き換えます。このルートボリュームから以前に作成した特定のスナップショットはその一例です。これは、ルートボリュームの破損やゲストオペレーティングシステムのネットワーク設定エラーによって発生した問題から復旧する必要がある場合に役立ちます。

置換用ルートボリュームには、元のルートボリュームと同じタイプ、サイズ、終了時の削除属性が割り当てられます。

スナップショット使用時の考慮事項
  • 現在のルートボリュームと同じ系統に属するスナップショットのみを使用できます。

  • ルートボリュームから作成したスナップショットにより作成されたスナップショットのコピーは使用できません。

  • ルートボリュームの置き換えに成功した後も、元のルートボリュームから取得したスナップショットを使用して、新しい (置換) ルートボリュームに置き換えることができます。

このオプションは、指定した AMI を使用して現在のルートボリュームを置き換えます。これは、オペレーティングシステム、およびアプリケーションのパッチ適用やアップグレードを実行する必要がある場合に役立ちます。AMI には、インスタンスと同じ製品コード、請求情報、アーキテクチャタイプ、仮想化タイプが必要です。

インスタンスで ENA または sriov-net が有効になっている場合は、これらの機能をサポートする AMI を使用する必要があります。インスタンスで ENA または sriov-net が有効になっていない場合は、それらの機能をサポートしていない AMI を選択できますが、ENA または sriov-net をサポートする AMI を選択すると、自動的にサポートを追加できます。

インスタンスで NitroTPM が有効になっている場合は、NitroTPM が有効になっている AMI を使用する必要があります。NitroTPM サポートは、選択した AMI に関係なく、インスタンスが NitroTPM サポート用に設定されていない場合は有効になりません。

インスタンスが AMI のブートモードをサポートしている場合は、インスタンスとは異なるブートモードの AMI を選択できます。インスタンスがブートモードをサポートしていない場合、リクエストは失敗します。インスタンスがブートモードをサポートしている場合、新しいブートモードがインスタンスに伝達され、それに応じてその UEFI データが更新されます。ブート順序を手動で変更したり、プライベートカーネルモジュールをロードするためにプライベート UEFI セキュアブートキーを追加したりした場合、ルートボリュームの置換時に変更内容が失われます。

置換用ルートボリュームには、元のルートボリュームと同じボリュームタイプ、削除時の削除属性が割り当てられ、AMI ルートボリュームのブロックデバイスマッピングのサイズを取得します。

注記

AMI ルートボリュームのブロックデバイスマッピングのサイズは、元のルートボリュームのサイズ以上である必要があります。AMI ルートボリュームのブロックデバイスマッピングのサイズが元のルートボリュームのサイズよりも小さい場合、リクエストは失敗します。

ルートボリュームの置換タスクの完了後、コンソール、AWS CLI または AWS SDK を使用してインスタンスを記述すると、次の新しい情報および更新された情報が反映されます。

  • 新しい AMI ID

  • ルートボリュームの新しいボリューム ID

  • 更新されたブートモード設定 (AMI によって変更された場合)

  • 更新された NitroTPM 設定 (AMI によって有効になっている場合)

  • 更新された ENA 設定 (AMI によって有効になっている場合)

  • 更新された sriov-net 設定 (AMI によって有効になっている場合)

新しい AMI ID はインスタンスメタデータにも反映されます。

AMI を使用ためのする考慮事項
  • ブロックデバイスマッピングが複数ある AMI を使用する場合、AMI のルートボリュームのみが使用されます。他の (非ルート) ボリュームは無視されます。

  • この機能を使用できるのは、AMI とそれに関連するルートボリュームスナップショットに対するアクセス許可を持っている場合のみです。この機能は AWS Marketplace AMI では使用できません。

  • インスタンスに製品コードがない場合にのみ、製品コードなしの AMI を使用できます。

  • AMI ルートボリュームのブロックデバイスマッピングのサイズは、元のルートボリュームのサイズ以上である必要があります。AMI ルートボリュームのブロックデバイスマッピングのサイズが元のルートボリュームのサイズよりも小さい場合、リクエストは失敗します。

  • インスタンスのインスタンス ID ドキュメントは自動的に更新されます。

  • インスタンスが NitroTPM に対応している場合、インスタンスの NitroTPM データがリセットされ、新しいキーが生成されます。

ルートボリュームの置換プロセスが完了した後も、元のルートボリュームを維持するかどうかを選択できます。置換プロセスの完了後に元のルートボリュームを削除すると、元のルートボリュームは自動的に削除され、回復できなくなります。処理が完了した後も元のルートボリュームを維持することを選択した場合、ボリュームはアカウントにプロビジョニングされたままになるため、不要になったらそのボリュームを手動で削除する必要があります。

ルートボリュームの置き換えタスクは、次の状態に移行します:

  • pending — 置換ボリュームが作成されています。

  • in-progress — 元のボリュームがデタッチされ、置換ボリュームがアタッチされています。

  • succeeded — 置換ボリュームはインスタンスに正常にアタッチされ、インスタンスは利用可能です。

  • failing — 置換タスクが失敗を処理しています。

  • failed — 置換タスクは失敗しましたが、ルートボリュームはまだアタッチされています。

  • failing-detached — 置換タスクが正常に処理されていません。インスタンスにルートボリュームがアタッチされていない可能性があります。

  • failed-detached — 置換タスクが失敗し、インスタンスにルートボリュームがアタッチされていません。

ルートボリュームの置き換えタスクが失敗した場合、インスタンスは再起動され、元のルートボリュームはインスタンスにアタッチされたままになります。

考慮事項

開始する前に、以下を考慮してください。

要件
  • インスタンスは running の状態である必要があります。

  • インスタンスは、プロセス中に自動的に再起動されます。メモリ (RAM) の内容は、再起動中に消去されます。手動で再起動する必要はありません。

  • インスタンスストアボリュームの場合、ルートボリュームを置き換えることはできません。Amazon EBS ルートボリュームを持つインスタンスのみに対応しています。

  • ルートボリュームを置き換えることができるのは、すべての仮想化インスタンスタイプと EC2 Mac ベアメタルインスタンスのみです。他のいかなるベアメタルインスタンスタイプもサポートされていません。

  • インスタンスの以前のルートボリュームのいずれかと同じ系統に属する任意のスナップショットを使用できます。

  • 現在のリージョンで、アカウントのAmazon EBS の暗号化がデフォルトで有効になっていると、指定したスナップショットや指定した AMI のルートボリュームにおける暗号化ステータスに関係なく、ルートボリューム置換タスクによって作成された置換用ルートボリュームは常に暗号化されます。

暗号化の結果

次の表は、考えられる暗号化の結果をまとめたものです。

元のルートボリューム 指定したスナップショットまたは AMI デフォルトでの暗号化 置換用ルートボリューム 置換用ルートボリュームに使用される暗号化キー
置換用ルートボリュームを起動状態に復元する 暗号化された 該当しない 考慮しない 暗号化された 元のルートボリュームと同じ KMS キー
暗号化されていない 該当しない 無効 暗号化されていない 該当しない
暗号化されていない 該当しない 有効 暗号化された アカウントのAmazon EBS 暗号化用のデフォルト KMS キー
スナップショットまたは AMI から置換用ルートボリュームを復元する 暗号化された 暗号化されていない 考慮しない 暗号化された 元のルートボリュームと同じ KMS キー
暗号化された 暗号化された 考慮しない 暗号化された 元のルートボリュームと同じ KMS キー
暗号化されていない 暗号化されていない 無効 暗号化されていない 該当しない
暗号化されていない 暗号化されていない 有効 暗号化された アカウントのAmazon EBS 暗号化用のデフォルト KMS キー
暗号化されていない 暗号化された 考慮しない 暗号化された AMI またはスナップショットがアカウントで所有されている場合、置換用ボリュームは、その AMI またはスナップショットの KMS キーで暗号化されます。アカウントが AMI またはスナップショットを共有している場合、置換用ボリュームは、そのアカウントの デフォルトの Amazon EBS 暗号化の KMS キーで暗号化されます。

ルートボリュームを置き換える

インスタンスのルートボリュームを復元すると、ルートボリュームの置換タスクが作成されます。ルートボリュームの置換タスクを使用して、置換プロセスの進行状況と結果をモニタリングできます。

Console
ルートボリュームを置き換えるには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. ルートボリュームを置き換えるインスタンスを選択し、[Actions] (アクション)、[Monitor and troubleshoot] (監視とトラブルシューティング)、[Replace root volume] (ルートボリュームを置換) の順に選択します。

    注記

    選択したインスタンスが running 状態でない場合、[ルートボリュームを置き換える] アクションは無効です。

  4. [ルートボリュームを置き換える] 画面の [復元] で、次のいずれかのオプションを選択します:

    • [起動状態] - 現在のルートボリュームの作成に使用されたスナップショットから置換ルートボリュームを復元します。

    • [スナップショット] - 置換ルートボリュームを、指定したスナップショットに復元します。[スナップショット] で、使用するスナップショットを選択します。

    • [イメージ] – 指定した AMI を使用して、置換ルートボリュームを復元します。[イメージ] で、使用する AMI を選択します。

  5. (オプション) 置き換えようとしているルートボリュームを削除するには、[置き換えられるルートボリュームを削除] を選択します。

  6. [置換タスクを作成] を選択します。

  7. 置換タスクをモニタリングするには、インスタンスの [ストレージ] タブを選択し、[最近のルートボリューム置換タスク] を展開します。

AWS CLI
置換用ルートボリュームを起動状態に復元するには

create-replace-root-volume-task コマンドを使用します。--instance-id には、ルートボリュームを置き換えるインスタンスの ID を指定します。--snapshot-id および --image-id のパラメータは省略します。置換後に元のルートボリュームを削除するには、--delete-replaced-root-volume を含めて、true を指定してください。

$ aws ec2 create-replace-root-volume-task \ --instance-id i-1234567890abcdef0 \ --delete-replaced-root-volume
置換用ルートボリュームを特定のスナップショットに復元するには

create-replace-root-volume-task コマンドを使用します。--instance-id には、ルートボリュームを置き換えるインスタンスの ID を指定します。--snapshot-id には、使用するスナップショットの ID を指定します。置換後に元のルートボリュームを削除するには、--delete-replaced-root-volume を含めて、true を指定してください。

$ aws ec2 create-replace-root-volume-task \ --instance-id i-1234567890abcdef0 \ --snapshot-id snap-9876543210abcdef0 \ --delete-replaced-root-volume
AMI を使用して置換用ルートボリュームを復元するには

create-replace-root-volume-task コマンドを使用します。--instance-id には、ルートボリュームを置き換えるインスタンスの ID を指定します。--image-id に使用する AMI の ID を指定します。置換後に元のルートボリュームを削除するには、--delete-replaced-root-volume を含めて、true を指定してください。

$ aws ec2 create-replace-root-volume-task \ --instance-id i-01234567890abcdef \ --image-id ami-09876543210abcdef \ --delete-replaced-root-volume
ルートボリューム置換タスクのステータスを表示するには

describe-replace-root-volume-task コマンドを使用して、表示するルートボリューム置換タスクの ID を指定します。

$ aws ec2 describe-replace-root-volume-tasks \ --replace-root-volume-task-ids replacevol-1234567890abcdef0
{ "ReplaceRootVolumeTasks": [ { "ReplaceRootVolumeTaskId": "replacevol-1234567890abcdef0", "InstanceId": "i-1234567890abcdef0", "TaskState": "succeeded", "StartTime": "2020-11-06 13:09:54.0", "CompleteTime": "2020-11-06 13:10:14.0", "SnapshotId": "snap-01234567890abcdef", "DeleteReplacedRootVolume": "True" }] }

または、instance-id フィルターを指定して、結果をインスタンス別にフィルタリングします。

$ aws ec2 describe-replace-root-volume-tasks \ --filters Name=instance-id,Values=i-1234567890abcdef0
Tools for Windows PowerShell
置換用ルートボリュームを起動状態に復元するには

New-EC2ReplaceRootVolumeTask コマンドを使用します。-InstanceId には、ルートボリュームを置き換えるインスタンスの ID を指定します。-SnapshotId および -ImageId のパラメータは省略します。置換後に元のルートボリュームを削除するには、-DeleteReplacedRootVolume を含めて、$true を指定してください。

PS C:\> New-EC2ReplaceRootVolumeTask -InstanceId i-1234567890abcdef0 -DeleteReplacedRootVolume $true
置換用ルートボリュームを特定のスナップショットに復元するには

New-EC2ReplaceRootVolumeTask コマンドを使用します。--InstanceId には、ルートボリュームを置き換えるインスタンスの ID を指定します。-SnapshotId には、使用するスナップショットの ID を指定します。置換後に元のルートボリュームを削除するには、-DeleteReplacedRootVolume を含めて、$true を指定してください。

PS C:\> New-EC2ReplaceRootVolumeTask -InstanceId i-1234567890abcdef0 -SnapshotId snap-9876543210abcdef0 -DeleteReplacedRootVolume $true
AMI を使用して置換用ルートボリュームを復元するには

New-EC2ReplaceRootVolumeTask コマンドを使用します。-InstanceId には、ルートボリュームを置き換えるインスタンスの ID を指定します。-ImageId に使用する AMI の ID を指定します。置換後に元のルートボリュームを削除するには、-DeleteReplacedRootVolume を含めて、$true を指定してください。

PS C:\> New-EC2ReplaceRootVolumeTask -InstanceId i-1234567890abcdef0 -ImageId ami-09876543210abcdef -DeleteReplacedRootVolume $true
ルートボリューム置換タスクのステータスを表示するには

Get-EC2ReplaceRootVolumeTask コマンドを使用して、表示するルートボリューム置換タスクの ID を指定します。

PS C:\> Get-EC2ReplaceRootVolumeTask -ReplaceRootVolumeTaskIds replacevol-1234567890abcdef0

または、instance-id フィルターを指定して、結果をインスタンス別にフィルタリングします。

PS C:\> Get-EC2ReplaceRootVolumeTask -Filters @{Name = 'instance-id'; Values = 'i-1234567890abcdef0'} | Format-Table