0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudFormationでEC2を作成する際に改行コードでエラー

Posted at

PCセットアップを自動化するための検証環境を作りたく、CloudFormation を触ってみたところ、エラーで詰まったポイントがあったので備忘として残します。

試したこと

発生した事象

  • 以下エラーを出力
 "ResourceStatusReason": "Parameter validation failed: parameter value ec2-testforpcsetup\r for parameter name KeyName does not exist. Rollback requested by user."

一部EC2の名前変更やKeyNameを変更した以外記事に書いてある通りやっている。
にも拘わらずエラーが出た。

原因

windowsのメモ帳でparameter.txtを開いていたため、文字コードが(Windows(CRLF)になったことで、KeyNameの末尾に不要な\r (キャリッジリターン)が混入してしまった。
試しにアップロードしていたparameter.txtを開いてみた。

~ $ cat -v parameter.txt
AppName=ec2-testforpcsetup^M
KeyName=ec2-testforpcsetup^M

^Mがついていると、末尾に不要な\r がついてしまっているらしい。

AIに教えてもらった内容

^M の正体は「キャリッジリターン(\r)」

^M は 制御文字 \r(キャリッジリターン、ASCIIコード 13) をターミナルが可視化表示したものです。

実際のバイナリ値は 0x0D(16進数)または 13(10進数)です。

💡 なぜ ^M なのか?

^ は「制御文字(Ctrlキーとの組み合わせ)」を表します。

M は アルファベット13文字目なので、

Ctrl + M = ASCII 13 = \r = キャリッジリターン

これが ^M として表示されます

🔍 例:Linuxで cat -v を使ったときの見え方
cat -v parameter.txt

内容(実際のファイル内):
KeyName=ec2-testforpcsetup\r\n

出力(見える内容):
KeyName=ec2-testforpcsetup^M

→ ^M は \r
→ 行末に現れるということは、CRLF(Windowsの改行) で保存されていることを意味します。

解消方法

以下コマンドをCLIで実行

~ $ sed -i 's/\r$//' parameter.txt

再度デプロイコマンドを実行したところ、無事EC2が作成されました

Waiting for changeset to be created..
Waiting for stack create/update to complete
Successfully created/updated stack - ec2-testforpcsetup

メモ帳として何のツールを使うかもきちんと意識しないと、思わぬところで詰まってしまうなんて思いもよらなかったので、2時間くらいこれで詰まってしまいました。

CloudFormation を使うときは、改行コードを「CRLF」→「LF」にして使うよう気を付けたいと思います!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?