batchiです。

EC2作成時に「まぁデフォルトで」とさらりと流されがちな、
Termination protectionとShutdown behavior。

分かっていたようで分かっていなかったので、
少しだけ掘ってみました。

Termination protectionとは

削除保護(あるいは終了保護とも)のことです。
デフォルトでは無効になっています。

果たしてTeminateとは「削除」なのか「終了」なのか、
マネジメントコンソールやドキュメントで表現が統一されていないので、
少しだけ混乱します。

「終了」を「停止」のことだと勘違いする人もいたりいなかったり。

ともかく削除保護を有効にすると、
意図せぬ削除から保護してくれるようになります。

マネジメントコンソールの場合。

削除保護有効

CLIの場合。

>aws ec2 terminate-instances --instance-ids i-xxxxxxxx

A client error (OperationNotPermitted) occurred when calling the TerminateInstan
 ces operation: The instance 'i-xxxxxxxx' may not be terminated. Modify its 'disa
 bleApiTermination' instance attribute and try again.

削除保護について詳しくはこちらをどうぞ。
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/terminating-instances.html#Using_ChangingDisableAPITermination

Shutdown behaviorとは

シャットダウン時の挙動について、
「停止」か「削除」かを選択できます。

デフォルトでは「停止」になっています。

ドキュメントを見てみます。
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/terminating-instances.html#Using_ChangingInstanceInitiatedShutdownBehavior

「インスタンスによって起動されたシャットダウン動作の変更」という、
かなりまわりくどい表現がされています。

ここを勘違いしていたのですが、
「シャットダウン時の挙動」に関して、
マネジメントコンソール上で実施する「インスタンスの停止」や、
CLIで叩く「stop-instances」の動作には関係ないのです。

あくまで、インスタンス側(OS側)から実施する、
「シャットダウン動作」の挙動について変更できるだけです。

Shutdown behaviorを[terminate]にして、マネジメントコンソール上の操作で停止する。

普通にstoppedになりました。
stopped

OSにログオンしてシャットダウンする。

今回はWindowsで試してみました。
shutdown

「shutting-down」というステータスに。
普段よく目にする「stopping」とは違うということですね。
shuttingdown

terminateされました。
teminated

「削除保護」と「シャットダウン時の挙動」は関連しない

そもそもこの記事を書こうと思ったのは、

  • 削除保護…有効
  • シャットダウン時の挙動…削除

↑の組み合わせでインスタンスを停止させたらどうなるんだろう、
という思いつきからでした。

結果的には、

  • 削除保護…APIによる「削除」が対象
  • シャットダウン時の挙動…インスタンス側からの「シャットダウン」が対象

ということで、対象がかすっていないのでした。
勉強になりました。
こちらからは以上です。

おまけ:CLIで打ってみた時のメモ

Termination protectionの場合。

#有効にする
>aws ec2 modify-instance-attribute --instance-id i-xxxxxxxx --disable-ap
i-termination

#無効にする
>aws ec2 modify-instance-attribute --instance-id i-xxxxxxxx --no-disable
-api-termination

Shutdown behaviorの場合。

#削除にする
>aws ec2 modify-instance-attribute --instance-id i-xxxxxxxx  --instance-
initiated-shutdown-behavior terminate

#停止にする
>aws ec2 modify-instance-attribute --instance-id i-xxxxxxxx  --instance-
initiated-shutdown-behavior stop
TOP