AWS が edX で開講している AWS Developer: Building on AWS を Terraform でやり直してみた。
この講義では最終的に下図のようなシステムを構築する。
以前にもこの講義を受講したことがあり、その時は講義どおりマネジメントコンソールからポチポチして構築していったが、今回は復習と Terraform の勉強を兼ねて、Terraform でできるところは全て Terraform でやってみた。
今まで雰囲気で使っていたところを理解しながら進めることが出来たと思う。 全てを Terraform でやるというのは慣れていない私のようなものからすると大変ではあったが、日々の業務にも役立つことが勉強できてとても有意義だった。
失敗談
Terraform を使った理由としては、もちろん Terraform の勉強と言う面もあったものの、もうひとつの理由として terraform destroy
で手軽に使ったリソースを破棄できるところにあった。だが、destroy
するときには少々気をつけねばならないことがあることも知った。
まず S3 と RDS はデフォルトの設定だと terraform destroy
で破棄できないため、 S3 の場合は force_destroy
を、RDS の場合は skip_final_snapshot
をそれぞれ true
にする必要があった。
それと今回のように勉強のために Terraform を使って最終的に destroy することが前提の場合、count を使うととても面倒になることもわかった。
Error: Invalid count argument on sg/sg.tf line 27, in resource "aws_security_group_rule" "ingress_sg": 27: count = "${var.security_group == "" ? 0 : 1}" The "count" value depends on resource attributes that cannot be determined until apply, so Terraform cannot predict how many instances will be created. To work around this, use the -target argument to first apply only the resources that the count depends on.
結局どう対処すればいいのかわからなくて手動でリソースを地道に消していった。