[AWS]CodeDeploy 実行時に taskdef.json と appspec.yaml が読み込めない時の対処法

AWSCodePipeline から CodeDeployECSBlue/Green デプロイを実行した時に下記のエラーが発生しました。

Exception while trying to read the task definition artifact file from: config

taskdef.jsonappspec.yaml の読み込みに失敗するとこのエラーが発生するみたいです。

対処法

自分の場合は下記の方法で対応しました。

  1. taskdef.json と appspec.yaml を 一つのzipファイル にする
  2. zip ファイルを S3 のバケットにアップロード
  3. CodePipeline の Source にアップロードした zip ファイルを指定し出力アーティファクトを設定
  4. 出力アーティファクト名を Deploy の入力アーティファクトに設定
  5. この入力アーティファクトから Amazon ECS タスク定義AWS CodeDeploy AppSpec ファイルを設定

ECS Blue/Green デプロイの場合、 taskdef.jsonappspec.yaml を含むアーティファクトの容量を3MB未満にする必要があるみたいです。
通常、プロジェクトを作成すると3MB未満で収まることはあまりなさそうなので、今回のように taskdef.jsonappspec.yaml を別にして S3 のバケットにアップロードするのが良いと思います。

気になるところ

taskdef.jsonappspec.yaml を別にするのはいいんですが、コードの管理がちょっと煩雑になりそうなので、そこは良い方法がないか調べてみないといけないかもです。

最後に

今回のエラーはチュートリアルだと発生せず、実際に自分の作成したプロジェクトをデプロイする際に発生しました。最初は何か設定ミスかと思っていたので、対処法が見つかるまでかなり時間がかかってしまいました。
AWS でアーティファクトのサイズの上限を緩和してくれるとありがたいんですけどねぇ。

コメントする

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