AWSのITコストを削減 Simpline

選ばれ続けること

 

エンジニアブログ

ホーム - エンジニアブログ - 2016年3月

EC2のTermination protectionとShutdown behaviorについて

2016.03.25

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

RDSの4つのグループと復元時の注意点

2016.03.11

batchiです。
最近ベタベタ触り始めたRDSについて。

触れば触るほど、
「気ぐるみの中にはEC2が入っているんだな(?)」
という謎の感想が出てきますが、

もちろんRDS特有の注意ポイントのようなものもあるわけで、
今回は4つのグループにフォーカスをあてて記していきます。

4つのグループ



  • セキュリティグループ

  • パラメータグループ

  • オプショングループ

  • サブネットグループ


RDSグループ

セキュリティグループ


これはEC2でもおなじみですね。
仮想ファイアウォールのようなものです。

唐突なトラップ


はいはい分かってますよ、と
「セキュリティグループ」をクリックすると、
変な画面が出てくるので少しびっくりします。
セキュリティグループ
EC2-Classicを使用している場合以外は、
EC2の画面から設定を行います。
やっぱり中身はEC2じゃないか、と思ったりします。

パラメータグループ


データベースエンジンのパラメータ群です。
いろいろパラメータを設定してください。

▼DBパラメータグループを使用する
http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html

オプショングループ


データベースに対する追加機能を設定するグループです。

すべてのDBエンジンで使用できるわけでなく、
2016年3月現在対応しているエンジンは下記の通りです。

・Oracle
・Microsoft SQL Server
・MySQL 5.6

いろいろオプションを設定してください。

▼オプショングループを使用する
http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_WorkingWithOptionGroups.html

サブネットグループ


DBインスタンスを配置するサブネットのコレクションです。
コレクションって何だよ、と思いますが、
公式ページにそう書いてあるのでしょうがありません。

RDSでDBインスタンスを立ち上げる時にIPの指定は出来ませんが、
このサブネットグループで設定した
サブネットの範囲のどこかしらで立ち上がります。

どこかしら、が具体的にどこなのかはnslookupなどであっさり分かったりします。
返ってきた結果を見て、やっぱり中身はEC2…と思ったりします。

スナップショットからの復元時の注意


ここまで4つのグループを見てきましたが、
スナップショットからのリストア時に注意するべき点があります。

スナップショットを選んで「スナップショットの復元」と進むと、
様々なパラメータの設定項目に移りますが…
そこに「セキュリティグループ」と「パラメータグループ」はないのです。

ないってことはつまり、
スナップショットの基になったインスタンスの設定に引っ張られるのか、
と思いきやそうではなく、
「デフォルト」のグループが設定されます。

嘘だろ、と思いましたがドキュメントにも書いてありました。
「DB インスタンスを復元すると、デフォルトの DB パラメータとセキュリティグループのみ、復元済みインスタンスに関連付けられます。」

▼DBスナップショットからの復元
http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_RestoreFromSnapshot.html

日本語としての不自然さに腹が立ちますが、
復元したインスタンスに設定されるグループは、
つまりこういうことです。



















セキュリティグループ default
パラメータグループ default
オプショングループ 復元時に指定したもの
サブネットグループ 復元時に指定したもの

上2つのグループについて、
新規作成したグループを使用していた(もしくは使用したい)場合は、
リストア後に改めてdefaultから変更する手順が必要になります。

パラメータグループの変更には再起動が伴う


セキュリティグループの変更は分かりやすくていいのです。
変更を加えれば、
瞬時に旧グループのremoveと新グループのaddが始まります。

ところがパラメータグループの場合は、
ただ単に変更しただけでは保留状態になります。

再起動の保留中

変更時に「すぐに適用」にチェックを入れれば、
自動的に再起動をかけてくれるのかと考えていましたが、
手で再起動する必要があるようです。
「DB インスタンスに関連付けられている DB パラメータグループを変更する場合、DB インスタンスで新しい DB パラメータグループを使用する前に、インスタンスを手動で再起動する必要があります。」

▼DBパラメータグループを使用する
http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html

「すぐに適用」が関係してくるのは、
DBインスタンス名などの他のパラメータについてでした。

すぐに適用しないと

▼DB インスタンスを変更し、パラメータをすぐに適用
http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Overview.DBInstance.Modifying.html

リストア時には注意が必要ですね。
なるほど。
皆さんも注意してください。

こちらからは以上です。