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のシンタックスハイライトのあるエディタを使えばもっと早く気づけたと思うので、そういうの使いましょう。