トラブルシューティング

パイプライン実行の失敗

ソース取得の失敗

症状:
  • GitHubやCodeCommitからのソースコード取得が失敗する
原因と対処:
  • 【認証エラー】
    CodePipelineのサービスロールにソースリポジトリへのアクセス権限がない → IAMポリシーを確認・修正
  • 【ブランチ不一致】
    指定したブランチが存在しない → パイプライン設定でブランチ名を確認
  • 【接続エラー】
    GitHub接続の期限切れ → CodePipelineのコンソールで接続を再認証
  • 【Webhook未設定】
    自動トリガーが動作しない → リポジトリのWebhook設定を確認

ビルドの失敗

症状
  • CodeBuildでのビルドプロセスが失敗する
原因と対処
  • 【buildspec.ymlの構文エラー】
    YAMLのインデントやコマンドミス → buildspec.ymlを検証し、ローカルでも動作確認
  • 【環境変数の不足】
    必要な環境変数が設定されていない → CodeBuildプロジェクトの環境変数を確認
  • 【依存関係のインストール失敗】
    パッケージマネージャーのエラー → ビルドログで具体的なエラーを確認、バージョン指定を見直し
  • 【タイムアウト】
    ビルド時間が制限を超過 → CodeBuildのタイムアウト設定を延長、ビルドプロセスを最適化
  • 【権限不足】
    ECRへのpush権限やS3へのアクセス権限がない → CodeBuildのサービスロールを確認

デプロイの失敗

症状
  • デプロイステージで失敗する
原因と対処
  • 【デプロイ先リソースの不在】
    EC2インスタンス、ECSサービス、Lambda関数が存在しない → デプロイ先を事前に作成
  • 【権限エラー】
    デプロイアクションに必要な権限がない → サービスロールのIAMポリシーを確認
  • 【CloudFormationスタックエラー】
    テンプレートの構文エラーやリソース制限 →CloudFormationのイベントログを確認
  • 【ヘルスチェック失敗】
    デプロイ後のアプリケーションが正常起動しない → アプリケーションログとヘルスチェック設定を確認

権限とロールの問題

サービスロールの権限不足

症状
  • 「Access Denied」エラーが発生する
対処方法
  • CodePipelineサービスロールに必要な権限を付与
    S3へのアクセス権限(アーティファクト保存)
    CodeBuildプロジェクトの実行権限
    デプロイ先サービス(ECS、Lambda、EC2など)への権限
    CloudFormationの実行権限
  • 最小権限の原則を守りつつ、必要な権限を段階的に追加
  • CloudTrailログでどのAPI呼び出しが失敗しているかを特定

クロスアカウントデプロイの問題

症状
  • 別AWSアカウントへのデプロイが失敗する
対処方法
  • KMSキーのキーポリシーで両アカウントからのアクセスを許可
  • デプロイ先アカウントのサービスロールに信頼関係を設定
  • S3バケットポリシーでクロスアカウントアクセスを許可
  • アーティファクトの暗号化設定を確認

パイプラインのパフォーマンス問題

実行時間が長すぎる

症状
  • パイプライン全体の実行に時間がかかる
対処方法
  • 【ビルドの最適化】
    キャッシュの活用、並列ビルド、ビルド環境のスペック向上
  • 【テストの並列化】
    複数のCodeBuildプロジェクトで並列実行
  • 【不要なステップの削除】
    必須でないステージやアクションを見直し
  • 【段階的デプロイ】
    Blue/Greenデプロイやカナリアデプロイで影響範囲を限定

頻繁なパイプライン実行

症状
  • 意図しないタイミングでパイプラインが実行される
対処方法
  • トリガー設定を見直し(全てのpushではなく特定ブランチのみ)
  • ポーリング間隔の調整
  • 手動承認ステージの追加で不要なデプロイを防止

複数環境デプロイ特有の問題

環境間の設定ミス

症状
  • 開発環境用の設定が本番環境にデプロイされる
対処方法
  • 環境変数の明確な分離(パラメータストア、Secrets Managerの活用)
  • デプロイ前の設定値検証ステップを追加
  • 環境ごとに異なるブランチ戦略を採用
  • タグやパラメータで環境を明示的に指定

手動承認の見落とし

症状
  • 本番デプロイ前の承認が見落とされる
対処方法
  • SNS通知の設定で承認者に確実に通知
  • 承認期限の設定
  • 承認者の複数設定やエスカレーションフロー
  • Slackなどのチャットツールとの連携

モニタリングとログ

ログの確認方法

問題の特定に必要なログ
  • 【CodePipelineの実行履歴】
    各ステージの成功/失敗状態
  • 【CodeBuildログ】
    ビルドプロセスの詳細(CloudWatch Logs)
  • 【CloudFormationイベント】
    スタック作成/更新の詳細
  • 【CloudTrail】
    API呼び出しの監査ログ
  • 【アプリケーションログ】
    デプロイ後のアプリケーション動作

アラートの設定

推奨される監視項目
  • パイプライン失敗時のSNS通知
  • ビルド失敗率の監視
  • デプロイ所要時間の監視
  • CloudWatch Eventsでパイプライン状態変更を検知

よくあるトラブルと対処

アーティファクトの破損

症状
  • 次のステージでアーティファクトが見つからない、または破損している
対処方法
  • S3バケットのバージョニング有効化
  • アーティファクトの暗号化設定確認
  • ステージ間のアーティファクト名の一致を確認

同時実行の競合

症状
  • 複数のパイプライン実行が競合する
対処方法
  • パイプラインの実行モードを「QUEUED」に設定
  • デプロイ対象リソースのロック機構実装
  • 実行履歴の確認と不要な実行のキャンセル

ロールバック失敗

症状
  • 問題のあるデプロイ後にロールバックできない
対処方法
  • Blue/Greenデプロイの採用で即座に切り戻し可能に
  • CloudFormationのロールバック設定を有効化
  • 以前のアーティファクトを保持しておき手動で再デプロイ
  • バージョン管理された設定の保持