こしあん
2025-02-05

CloudFormationでSQSを1個デプロイするのがあまりに面倒で投げた話(アンチ記事注意)


3{icon} {views}

注意:CloudFormationアンチ記事です。信者の方はブラウザバック推奨!

CloudFormationを使ってみたが、SQSひとつ作るだけでもコマンドの長さやエンコード問題など作業工程が多く、非常に面倒だと感じた。AWS公式のメリットはあるが、現状ではTerraformの手軽さに軍配が上がるという結論だった。

はじめに

  • CloudFormationの問題をさんざん見たのでいい加減触ってみるかと思って触ってみた
  • SQSを1個するためだけのもの
  • 触った結果、あまりに不便だったので「もう二度とこんなの使うか」ってなった

コード

AWSTemplateFormatVersion: '2010-09-09'
Description: "CloudFormation を使用して SQS キューを作成するテンプレート"

Resources:
  MySQSQueue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: MyQueueName  # 任意の名前に変更可能です

これをsqs-queue.yamlに保存する

デプロイ

aws cloudformation create-stack --stack-name MySQSStack --template-body file://./sqs-queue.yaml --profile hogehoge

ローカルファイルはfile://でつなぐ。一応相対パスも可能。

な…なげえ……。Terraformならterraform applyで終わりなのに。いちいちこんなの入力したくない

はまりどころ💩

日本語コメントがある場合は、ファイルのエンコードがUTF-8だとエラーになる。Shift-JISで保存する必要がある

UTF-8の場合に出たエラー

Error parsing parameter '--template-body': Unable to load paramfile (./sqs-queue.yaml), text contents could not be decoded.  If this is a binary file, please use the fileb:// prefix instead of the file:// prefix.

参考:CloudFormationでUnable to load paramfileエラー

さすがにこれは……

やっと成功

はい。SQS1個作るだけでなんでこんなに面倒なんだ

リソース削除

(スタック名忘れたらどうするんだろう)

aws cloudformation delete-stack --stack-name MySQSStack --profile hogehoge

(経過メッセージなし)

あくまでスタックの削除がトリガーされるだけで、削除が成功したかどうかはCLIのコマンドだとわからないんですね。

terraform destroyだとそこらへん表示してくれるのに

所感

微妙なところ

  • 日本語エンコード問題💩
  • コマンドが長すぎる。Dockerでいうところの、Terraformがdocker composeで、CloudFormationは素のDockerコマンドみたい。もっとちゃんと抽象化してほしい
  • Terraformだとできた、LambdaのPythonファイルのZip圧縮→デプロイがEnd-to-Endでできない。SAMかパッケージ化を挟まないといけなくてだるい
  • SAMとか使えばできると思うが、CloudFormation単体だとyamlファイルが複数におそらくできない。スタック間で依存関係作れば理論上はできるが、GitHub見てると1個のモノリスyamlな例が多いので、可読性が非常に落ちる💩
  • おそらく別コマンド叩けばあると思うのだが、delete-stackで経過が表示できないので、削除が成功しているか失敗しているかすぐわからなくてUXが悪い

良いところ

  • AWS公式なところ。Stack Setsとか使えばマルチアカウントにデプロイできるところ

自分の意見

  • 良いところはあくまでこれは理屈的な話で、自分が使ってみて良かったみたいなの特になかった。逆に「なんでこんなにめんどいの(ドン引き)」みたいな感じだった。擁護できる部分がない
  • このあとVPC作る例やってみようかと思ったが、やる気すらなくなったので、Terraform使おうと思う
  • 現状、CloudFormationは技術検討するときの選択肢から普通に外すかな。


Shikoan's ML Blogの中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内

技術書コーナー

北海道の駅巡りコーナー


Add a Comment

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