AWS
の CodePipeline
から CodeDeploy
で ECS
の Blue/Green
デプロイを実行した時に下記のエラーが発生しました。
Exception while trying to read the task definition artifact file from: config
taskdef.json
や appspec.yaml
の読み込みに失敗するとこのエラーが発生するみたいです。
対処法
自分の場合は下記の方法で対応しました。
- taskdef.json と appspec.yaml を 一つのzipファイル にする
- zip ファイルを S3 のバケットにアップロード
- CodePipeline の Source にアップロードした zip ファイルを指定し出力アーティファクトを設定
- 出力アーティファクト名を Deploy の入力アーティファクトに設定
- この入力アーティファクトから Amazon ECS タスク定義と AWS CodeDeploy AppSpec ファイルを設定
ECS Blue/Green デプロイ
の場合、 taskdef.json
や appspec.yaml
を含むアーティファクトの容量を3MB未満にする必要があるみたいです。
通常、プロジェクトを作成すると3MB未満で収まることはあまりなさそうなので、今回のように taskdef.json
と appspec.yaml
を別にして S3
のバケットにアップロードするのが良いと思います。
気になるところ
taskdef.json
と appspec.yaml
を別にするのはいいんですが、コードの管理がちょっと煩雑になりそうなので、そこは良い方法がないか調べてみないといけないかもです。
最後に
今回のエラーはチュートリアルだと発生せず、実際に自分の作成したプロジェクトをデプロイする際に発生しました。最初は何か設定ミスかと思っていたので、対処法が見つかるまでかなり時間がかかってしまいました。
AWS
でアーティファクトのサイズの上限を緩和してくれるとありがたいんですけどねぇ。
コメント