tkd2017の勉強ブログ

日々の勉強をアウトプットするブログ

appspec.ymlが原因でCodeDeployがエラーになって失敗した

こんにちは、お久しぶりです。最近CloudFormationやCodeDeployを触っているんですが、その中で大分ハマった現象を紹介します。

appspec.ymlが原因?

CodeDeploy用に次のようなappspec.ymlを作りました。ベースはネットからコピってきて、hooksやコメントなどを取り除いたものです。

version: 0.0
os: windows
files:
  – source: app
    destination: c:\temp

このappspec.ymlをディレクトリのルートに置き、aws deploy pushしてaws deploy create-deploymentしました。そうすると次のようなエラーが吐かれてデプロイが失敗します。

(<unknown>): mapping values are not allowed in this context at line 5 column 16

はてさて、一体何がいけないんでしょうか?

そうですね、悪いのは4行目ですね。これを次のように直すと無事にデプロイできるようになりました。

version: 0.0
os: windows
files:
  - source: app
    destination: c:\temp

結局原因はなんだったのか

原因は4行目のが正しくありませんでした。これは ダッシュであってハイフンではありません 。どういうことかというと、これはU+2013(UTF-8だとe28093)のエムダッシュという記号なんです。正しくはU+002Dのハイフンマイナスを使う必要があります。

どうやらコピーした際にダッシュとしてコピーしてしまい、それが原因でYAMLとして正しくないということでエラーになっていたようでした。

そんなんわかるか!

とは言え、「あれ、なんかこのハイフン(エディタ上での)表示おかしくね?」と疑問に思ったのがきっかけなので、気づけるもんですね。大分かかりましたが。

最後に

多分YAMLのシンタックスハイライトのあるエディタを使えばもっと早く気づけたと思うので、そういうの使いましょう。