1
0

More than 1 year has passed since last update.

【AWS】『Exception while trying to read the task definition artifact file from: SourceArtifact』エラーの解決方法

Posted at

概要

  • AWSでCodeDeployを走らせたら以下のエラーになりました。
  • 本記事では以下のエラー対応について記載します。
Invalid action configuration: Exception while trying to read the task definition artifact file

image.png

原因の追求

The maximum artifact ZIP size in the CodeDeployToECS deploy action is 3 MB.

  • 上記ドキュメントには「CodeDeployToECSのデプロイアクションでの最大アーティファクトZIPサイズは3MB」とあり、圧縮ファイルが3MB未満ではない場合は上述のエラーメッセージが表示されるらしいです。
  • あれ、そんな重いファイルあったかな...と思いソースを確認してみる。すると先日自動テスト用に40MBのSQLファイルを追加していたことを思い出す。お、こやつが原因か?
  • ビルド・デプロイを設定しているCodePipelineを確認しておく。ビルド・デプロイはGithubウェブフックによってGitリポジトリから該当ブランチにマージがあったら自動で走るようにしてあります。ただし、パイプラインの中で、Codebuildによって入力アーティファクトにSourceArtifactを選択しており、これはCloudFormationによってS3にZip形式で保存されるようにしてあります。
  • デプロイ方法としては、ブルーグリーンデプロイメントのフローを採用しています。SourceArtifactをCodeBuildでビルドしてS3に保存し、CodeDeployがそのS3のSourceArtifactを使用してデプロイを実行するという手法です。CodeDeployはSourceArtifactをS3から取得し、デプロイメントグループに指定されたリソース(EC2インスタンス、Amazon ECSタスクなど)にデプロイします。

解決手順

  • ということで、今回引っかかった「最大アーティファクトZIPサイズは3MB」は、上記手順の

CodeDeployがそのS3のSourceArtifactを使用してデプロイを実行

  • で該当してしまったと考えられます。SourceArtifactは、S3に保存されているので、確認してみると、3.9MBになっていました。ちなみに今までのS3オブジェクトに保存されているSourceArtifactのZIPはどれも160KBとかで軽いものだったのに対し、今回だけ3MBを超えていることがわかりました。
  • 該当ファイルを削除してpushし直すと、無事にデプロイまで成功しました。
  • エラーメッセージをあらためて確認すると「CodeDeployToECSのデプロイアクション」「SourceArtifact」とあるので、間違いなさそうですね。このアクションで指定されているアーティファクトのZIPファイルが、3MBを超えていたため、上述のエラーで失敗してしまったのでしょう。

3MB以上を出力したい場合...

1
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
1
0