CloudFormationをTerraformで実行する
Posted On 2025-02-07
Terraformのaws_cloudformation_stackリソースを使い、SQSなどのCloudFormationスタックをapply/destroy一発で管理できるようにしてみた。日本語のYAMLもShift-JIS不要で扱えるため、CloudFormation特有の面倒を大幅に軽減できる。
目次
はじめに
- CloudFormation単体で実行したらあまりに面倒だったで投げたのだが、CloudFormationを一定触らないといけないときに使えるテクを教えてもらったので試してみた
- Terraformの「aws_cloudformation_stack」リソースを定義してしまって、そこにyamlファイルを流し込んで、
terraform apply
→terraform destroy
でCloudFormationの取り回しの悪さを解決する - CloudFormationのYAMLに日本語があったとき、CloudFormation単体だとShift-JISにしないと失敗する問題があったのだが、Terraformを仲介すると成功するので取り回しの悪さは解決する
やること
- SQSを1個デプロイする
ソースファイル
カレントディレクトリに以下を設置する。sqs-queue.yaml
がCloudFormationの定義
- sqs-queue.yaml
- cloudformation.tf
sqs-queue.yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: "CloudFormation を使用して SQS キューを作成するテンプレート"
Resources:
MySQSQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: MyQueueName # 任意の名前に変更可能です
cloudformation.tf
resource "aws_cloudformation_stack" "sqs_stack" {
name = "my-sqs-queue-stack"
template_body = file("${path.module}/sqs-queue.yaml")
}
「TrraformでSQS定義すれば一発やん」いうツッコミは言わないお約束笑
結果
terraform apply
を実行する。CloudFormationスタックが作成されている
CloudFormationスタックによりSQSが作成されている
terraform destroy
すると、削除経過も表示される
所感
- 明らかに回りくどいやり方で、おすすめはしないが、CloudFormation特有の面倒くささはだいぶ減った
- Terraform Cloudが500リソースまで無料なので、CloudFormationに詰め込んでリソース数を圧縮するというテクもなくはないなと思った
Shikoan's ML Blogの中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内
技術書コーナー
北海道の駅巡りコーナー