Terraformで暗号化されたルートボリュームを持つEC2インスタンスを作成する
2019-07-18

素直にTerraformでEncrypted root volumeなインスタンスを作成しようとしても出来ません。

ebs_block_device パラメーターは encrypted = true を指定できますが, root_block_device パラメーターはそれを指定できないからです。
https://www.terraform.io/docs/providers/aws/r/instance.html#block-devices

EBSボリュームのデフォルト暗号化を有効化する

https://aws.amazon.com/jp/blogs/news/new-opt-in-to-default-encryption-for-new-ebs-volumes/

アップデートにより, EBSボリュームをデフォルト暗号化で作成できるようになっています。
こちらを設定することで, Terraform側では特に意識することなくインスタンスを作成するだけでルートボリュームも暗号化されます。

https://www.terraform.io/docs/providers/aws/r/ebs_encryption_by_default.html


resource "aws_ebs_encryption_by_default" "example" {
  enabled = true
}

この機能を有効化することにより古いインスタンスタイプ(C1/M1/M2/T1)は起動することができなくなります。が, 今更使う必要もないかと思うので気にしません。