AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

Terraform で AWS リソースのインスタンスタイプを変更する時に注意すること

qiita.com

変更時の注意点

上記に書いてあるんだけど、 EC2 だけ独特っぽいので注意が必要。

EC2

destroy -> create が走るので、インスタンスの削除→生成、という手順でインスタンスタイプ変更を実現している。

これはどうも Terraform には stop する実装がなく、 terminate しかないから? みたいな話らしい。

ignore_changes

ManagementConsole から変更するので state と差異が出るので、 ignore_changesinstance_type を書いて無視させる、みたいな話もあるけど、変更期間が一週間以下とかなら運用回避でいい気がする。

逆に「事故りそう!」という感じだったら、Terraform 側も変更しておけばよい。

僕は基本一人親方状態なので、変更せずに Slack などに changelog を書いているのでそちらベースで作業しているけど、まあ大体の場合において、作業前の plan 実行時に検出されて「オアアッ」ってなると思う。

RDS

こちらは以下のように素朴に instance_class を書き換えてやればいい。

その際に apply_immediately すなわち即時反映、というオプションが true じゃないと反映されないので注意が必要。

resource "aws_db_instance" "rds_instance" {
  
  ...

  instance_class = "db.m6i.large"
  apply_immediately = true

  ...

}