はじめに

CloudFormationで構築したEC2インスタンスのルートボリュームの容量を変更セットで変更しようとしたところ、
EC2インスタンスが置換(再作成)になってしまう事象が発生しました。
ルートボリュームのサイズを変更するだけでEC2インスタンスが再作成されるのは困るので、原因と対処をまとめようと思います。

まず結論

CloudFormationの変更セットでルートボリュームの容量を変更する場合は、残念ながらEC2インスタンスの再作成は必ず起きてしまいます。
そのため、ルートボリュームの容量はCloudFormationで定義せずに、ルートボリュームのサイズ変更したい場合はコンソールから行うことをおすすめします。
(コンソールまたはCLIからであれば、EC2の再作成させずにルートボリュームの容量を変更できます)
EBS ボリュームへの変更のリクエスト

原因

BlockDeviceMappingsの値を変更すると再作成となるのはCloudFormationの仕様です。
AWS::EC2::Instance

    Type: "AWS::EC2::Instance"
    Properties:
      BlockDeviceMappings:
        - DeviceName: "/dev/xvda"
          Ebs:
            VolumeSize: 8GB
            VolumeType: gp3

対処

6行目のVolumeSize:は削除してしまいましょう。

    Type: "AWS::EC2::Instance"
    Properties:
      BlockDeviceMappings:
        - DeviceName: "/dev/xvda"
          Ebs:
            VolumeSize: 8GB
            VolumeType: gp3

なお、EC2作成後にVolumeSizeの行を消すために変更セットを実行してもEC2再作成になってしまいます。
そのため再作成させずにVolumeSizeの行を消すためには、一度CloudFormation管理外にして、改めてCloudFormationにリソースのインポートを行う必要があります。

参考
EC2 インスタンスを置き換えずに CloudFormation で EBS ボリュームを更新するにはどうすればよいですか?