クラウド上で仮想サーバーを起動・管理できるコンピューティングサービス
EC2の課金はrunning状態の間のみ発生します(秒単位、最低60秒)。stopped状態ではEC2の課金は停止しますが、EBSボリュームの課金は継続します。terminated状態になるとすべての課金が停止します。
より具体的には、running状態ではコンピュート料金が秒単位(最低60秒)で発生します。stopped状態ではコンピュート料金は停止しますが、アタッチされたEBSボリュームのストレージ料金と、関連付けられたElastic IPアドレス(未使用状態)の料金は引き続き発生します。terminated状態ではすべてのリソースが解放され課金が停止しますが、データも失われます。コスト最適化のためには、不要なインスタンスはstoppedのまま放置せず、terminateするかEBSスナップショットを取得してボリュームを削除することが重要です。
terminated状態は不可逆です。一度terminateしたインスタンスは、どのような手段を使っても復元できません。ルートEBSボリュームもデフォルト設定(DeleteOnTermination=true)では一緒に削除されます。つまり、OS設定やアプリケーションデータなど、ボリュームに保存されていたすべての情報が失われます。
このリスクに備えるために、いくつかの予防策を講じることが重要です。まずTermination Protectionを有効にして、API/コンソールからの誤操作を防止します。次に、定期的にAMI(Amazon Machine Image)を取得しておけば、同じ構成で新しいインスタンスをすぐに起動できます。さらに、重要なデータが入ったEBSボリュームについてはスナップショットを定期的に取得することで、データの復元ポイントを確保できます。
なお、terminated状態のインスタンスはコンソール上にしばらく表示され続けますが、これは記録としての表示であり、復元操作はできません。通常、数時間以内にコンソールからも消えます。
DeleteOnTermination=falseに設定してterminateしてもボリュームを残す。EC2インスタンスをstop → startすると、AWSはそのインスタンスを別の物理ホスト(サーバー)に再配置する可能性があります。AWSのデータセンターには何万台もの物理サーバーがあり、stopすると元の物理サーバー上のリソースは解放されます。startすると、空いている別の物理サーバーに配置されるため、いくつかの情報が変わります。
具体的に影響を受けるのは以下の2つです。
パブリックIPはAWSの動的プールから割り当てられるため、stop/startのたびに新しいIPが付与されます。固定IPが必要な場合はElastic IPをアタッチしてください。
インスタンスストアは物理ホストのローカルディスクです。ホストが変わるとデータにアクセスできなくなります。EBSボリュームのデータやプライベートIP、ENIはそのまま保持されます。
reboot-instancesはOSレベルの再起動なので、同じ物理ホストに留まり、パブリックIPもインスタンスストアも保持されます。Termination Protection(DisableApiTermination)は、AWS API やマネジメントコンソールからの terminate 操作をブロックする安全機構です。うっかり本番サーバーを terminate してしまう事故は実際に発生しうるため、この機能は非常に重要です。有効にすると、terminate を実行しようとしても「The instance may not be terminated」というエラーが返され、操作が拒否されます。
ただし、Termination Protection が防げないケースもあります。OS 内部からのshutdown -h nowコマンド(InstanceInitiatedShutdownBehavior が terminate の場合)、Auto Scaling のスケールインによるterminate、Spot インスタンスの中断はこの保護の対象外です。Auto Scaling 環境では別途Instance Scale-in Protectionを設定する必要があります。
本番環境では、Termination Protection に加えて、IAM ポリシーで ec2:TerminateInstances を制限する多層防御が推奨されます。さらにCloudTrailでterminate操作を監査ログとして記録し、誰がいつ操作したか追跡できるようにしておくと安心です。

クラウド上で仮想サーバーを起動・管理できるコンピューティングサービス

クラウド上で仮想サーバーを起動・管理できるコンピューティングサービス

クラウド上で仮想サーバーを起動・管理できるコンピューティングサービス

クラウド上で仮想サーバーを起動・管理できるコンピューティングサービス

クラウド上で仮想サーバーを起動・管理できるコンピューティングサービス

クラウド上で仮想サーバーを起動・管理できるコンピューティングサービス