CodePipelineが突然すべて失敗した話とAWS CI/CD制限まとめ
AWSのCI/CD環境を構築した際に、
最初は正常に動いていたのに、数日後にすべてのパイプラインが失敗する
という問題に遭遇しました。
調査した結果、原因は AWSの仕様によるArtifactサイズ制限 でした。
本記事では、実際に起きた問題と対応方法、さらにCI/CD構築時に注意すべきAWS制限をまとめます。
背景
プロジェクト内で、開発効率を上げるために CI/CDの自動化 を導入しました。
構成は次の通りです。
- CodeCommit(Gitリポジトリ)
- CodePipeline(CI/CDパイプライン)
- CodeDeploy(デプロイ処理)
- ECS(コンテナ実行)
- ECR (ソースコード管理)
開発者が CodeCommitにPushすると自動でデプロイされる環境 を構築しました。
CodePipelineの処理の流れ
- CodeCommitへソースコードをPush
- CodePipelineが自動起動
- Artifact(成果物)を生成
- CodeDeployへ受け渡し
- ECSへデプロイ
ここで重要になるのが Artifact です。
Artifactとは
Artifactとは、
パイプライン間で受け渡される成果物 のことです。
以下は、本件のCodePipelineのArtifactのみに注目した図です。

※各ステージに関しては、案件など構築するものにより異なります。
イメージとしては zipファイルのようなもの で、次のようなファイルが含まれます。
- ソースコード
- 設定ファイル
- デプロイ定義
ECSデプロイで必要なファイル
ECSにCodeDeployでデプロイする場合、次のファイルが必要になります。
taskdef.json
appspec.yml
それぞれの役割は次の通りです。
| ファイル | 役割 |
|---|---|
| taskdef.json | ECSタスク定義 |
| appspec.yml | CodeDeployのデプロイ設定 |
最初は正常に動作していた
CI/CD環境構築後、確認のため軽微な修正をコミットしました。
その結果
- CodePipeline起動
- ECSデプロイ成功
問題なく動作していることを確認しました。
数日後にすべてのパイプラインが失敗
その後、開発にてコミットを使用したところ、
CodePipelineが次のエラーで失敗するようになりました。

Exception while trying to read the task definition artifact file from: SourceArtifact
原因
原因は Artifactサイズ制限 でした。
ECSデプロイで使用するArtifactには3MB制限というAWS仕様があります。
Artifactのサイズがこの制限を超えると
CodeDeployがファイルを読み取れずエラーになります。

なぜ最初は成功していたのか
最初の確認コミットでは
- 構築当初でソースファイルが小さかった。
- Artifactサイズが小さい
ため、問題なく動作していました。
しかし開発が進みファイルが増えた結果、
Artifactサイズが 3MBを超えてしまった ためエラーが発生しました。
つまり
CI/CDが壊れたのではなく
AWSの仕様制限に引っかかっていた
という状態でした。
対応方法
対応として、Artifactの構成を整理しました。
具体的には
- 不要ファイルを削除
- デプロイに必要なファイルのみArtifactに含める
- デプロイ専用ディレクトリを作成
例
deploy/
├ taskdef.json
└ appspec.yml
これによりArtifactサイズを削減し、
CodePipelineは正常に動作するようになりました。
再発防止
同様の問題を防ぐため、CI/CD構成を見直しました。
- Artifact専用ディレクトリを作成
- 不要ファイルを除外
- デプロイ構成の整理
CI/CDでは Artifactの設計が非常に重要 だと学びました。
学んだこと
今回の経験から次のことを学びました。
- CI/CDは最初の成功だけでは安心できない
- AWS構築時には仕様制限の確認が必要
まとめ
CodePipelineは非常に便利ですが、AWSの仕様制限に注意が必要です。
特にECSデプロイでは Artifactサイズ制限(3MB) があるため、
- デプロイ専用ディレクトリの作成
- Artifact構成の整理
を最初に設計しておくことが重要です。
CI/CD構築時の参考になれば幸いです。
参考文献
- iret.media 「[ECS] タスク定義ファイル(taskdef.json)の運用について考える」
(URL:https://iret.media/91083) - AWS公式ドキュメント 「Troubleshooting CodePipeline」
(URL:https://docs.aws.amazon.com/codepipeline/latest/userguide/troubleshooting.ht
ml) - Quiita 「CodePipeline『Exception while trying to read the task definition artifact file
from: SourceArtifact』エラーの原因と対処法」
(URL: https://qiita.com/tarian/items/aa6a5f0f960fc7c24a82)
