こしあん
2025-02-07

CloudFormationをTerraformで実行する


21{icon} {views}


Terraformのaws_cloudformation_stackリソースを使い、SQSなどのCloudFormationスタックをapply/destroy一発で管理できるようにしてみた。日本語のYAMLもShift-JIS不要で扱えるため、CloudFormation特有の面倒を大幅に軽減できる。

はじめに

  • CloudFormation単体で実行したらあまりに面倒だったで投げたのだが、CloudFormationを一定触らないといけないときに使えるテクを教えてもらったので試してみた
  • Terraformの「aws_cloudformation_stack」リソースを定義してしまって、そこにyamlファイルを流し込んで、terraform applyterraform 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の中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内

技術書コーナー

北海道の駅巡りコーナー


Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です