LoginSignup
0
0

CloudFormationでEC2のインスタンスタイプをスタック更新時の不安

Posted at

CloudFormationで構築したEC2インスタンスのインスタンスタイプを変更しようとした際に
少し考えたことがあったのでメモ。

背景

既存のEC2スタックを更新して、インスタンスタイプを変更しようとした

cfn-ec2-instancetype01.png

インスタンスタイプをスペックアップしていざ更新しようとした。

cfn-ec2-instancetype02.png

チェンジセットのReplacementがConditionalになっている。
通常、ただのインスタンスタイプ更新であればFalseになると思っていたが、置換されてしまうのかどうかが不安になった。

cfn-ec2-instancetype03.png

結論:インスタンスは基本置き換わらない

Replacementに関して、ドキュメントをあさってみると。以下のようなことが書いてあった

キー名が変わらない場合は、InstanceType プロパティに対する変更がもっとも大きな更新動作 (Conditionally) になります。したがって、Replacement フィールドは Conditionally です。CloudFormation によってインスタンスが置き換えられる条件を確認するには、InstanceType プロパティの更新動作をご参照ください。

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets-samples.html

キー名(Logical ID)が変わる場合は必ずReplacementが発生するが、そうでない場合はInstanceTypeプロパティの挙動次第で
インスタンスが置き換わるかどうかが決まるということらしい。
リンクをさらに深ぼると、InstanceTypeリソースについては、以下のような説明がある。

When you change your EBS-backed instance type, instance restart or replacement behavior depends on the instance type compatibility between the old and new types. An instance with an instance store volume as the root volume is always replaced. For more information, see Change the instance type in the Amazon EC2 User Guide.


EBSでバックアップされたインスタンス・タイプを変更した場合、インスタンスの再起動または置換の動作は、新旧のインスタンス・タイプの互換性に依存します。ルートボリュームとしてインスタンスストアボリュームを持つインスタンスは、常に置き換えられます。詳細については、『Amazon EC2ユーザーガイド』の「インスタンスタイプの変更」を参照してください。

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-instance.html#cfn-ec2-instance-instancetype

ルートボリュームをインスタンスストアボリュームとして利用していなければ、置換されることはないということらしい。
今時のインスタンスタイプは、全部デフォルトでEBSボリュームで作成されるはずなので、まず気にする必要はないのかなと思う。

そもそもインスタンスストアとは?

EC2のルートボリュームの生成方法には、EBS-backedInstance store-Backedの2タイプがある。

EBS-backedを使用するインスタンスは、EBSボリュームという外部ストレージを使ってルートボリュームを作成し、インスタンス起動時にそのEBSボリュームに自動アタッチしてくれる。
外部ストレージに保管しているので、インスタンスが停止してもデータはそのまま残る。

cfn-ec2-instancetype04.png
AWS公式ドキュメントより拝借

Instance store-Backedを使用するインスタンスは、インスタンス上にルートボリュームを作成し保管する方法。
インスタンス上に保存されるので、インスタンスが止まれば、ルートボリューム上のデータも削除される。

cfn-ec2-instancetype05.png
公式ドキュメントより拝借

Instance store-Backedインスタンスを使用できるインスタンスタイプは限られている

インスタンスストアボリュームをルートボリュームとしてサポートするインスタンスタイプは C3、D2、G2、I2、M3、および R3 のみです。

詳細は以下ドキュメント参照

今はEBS上でルートボリュームを作成するのがデフォルト動作で、インスタンスストアボリュームを使うメリットはないと思う。
基本気にせずにインスタンスタイプを変更しても問題はなさそう。

まとめ

Replacement: Conditionalの際は、Conditionalとなっているプロパティを調べる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0