選択したサイト () では 現在 CI Visibility は利用できません。

概要

AWS CodePipeline は、フルマネージド型の継続的デリバリーサービスで、アプリケーションとインフラストラクチャーを高速かつ確実にアップデートできるよう、リリースパイプラインの自動化を支援します。

AWS CodePipeline でトレースをセットアップすると、パイプラインの実行に関するデータを収集し、パフォーマンスのボトルネックや運用上の問題を分析し、デプロイメントワークフローを監視できます。

互換性

Pipeline Visibilityプラットフォーム定義
部分的なリトライ部分的なパイプライン部分的にリトライされたパイプラインの実行を表示します。
*実行中のパイプライン実行中のパイプライン実行中のパイプラインを表示します。キューに置かれているパイプラインや待機中のパイプラインは、Datadog で “Running” のステータスと共に表示されます。
**ログの相関付けログの相関付けパイプラインとジョブスパンを相関付けして、ジョブログの相関付けを可能にします。
承認待ち時間承認待ち時間ジョブとパイプラインの相互承認の待ち時間を表示します。
カスタムスパンカスタムスパンパイプラインのカスタムスパンを構成します。

*AWS CodePipeline の実行中のパイプラインは、終了するまで Git の情報を持ちません。
**AWS CodePipeline のログの相関付けは、AWS CodeBuild のアクションにのみ利用可能です。

Datadog インテグレーションの構成

AWS CodePipeline と Datadog CI Visibility との間のインテグレーションを設定するには、2 つの AWS リソースを作成します。

  1. API 送信先: Datadog のインテークを指す HTTP エンドポイント。
  2. AWS EventBridge ルール: CodePipeline イベントを API 送信先に転送するするルール。

これらのリソースは、EventBridge ルールの作成プロセス内で個別に作成することも、同時に作成することもできます。 パイプラインイベントの監視の詳細については、AWS 公式ガイドを参照してください。

API 送信先の作成

  1. AWS Console で EventBridge > API destinations に移動し、Create API destination をクリックします。
  2. API 送信先の名前を選択し (例: datadog-ci-visibility-api)、オプションで説明を追加します。
  3. API destination endpointhttps://webhook-intake./api/v2/webhook と入力します。
  4. HTTP methodPOST を選択します。
  5. Connection type で Create a new connection を選択します。
    1. 接続名を選択し (例: datadog-ci-visibility-connection)、オプションで説明を追加します。
    2. Destination typeOther を選択します。
    3. Authorization typeAPI key を選択します。 API key nameDD-API-KEY と入力し、Value フィールドに Datadog API キーを入力します。
  6. Create をクリックします。

EventBridge ルールの作成

  1. AWS Console で EventBridge > Rules に移動し、Create Rule をクリックします。
  2. ルール名を選択し (例: datadog-ci-visibility-integration)、オプションで説明を追加します。
  3. イベントバスはデフォルトのままとし、Rule TypeRule with an event pattern を選択します。Next をクリックします。
  4. Event SourceAWS events or EventBridge partner events を選択します。
  5. Creation MethodCustom pattern (JSON editor) を選択し、Event Pattern で次の JSON を入力します。
    {
      "source": ["aws.codepipeline"],
      "detail-type": ["CodePipeline Pipeline Execution State Change", "CodePipeline Action Execution State Change", "CodePipeline Stage Execution State Change"]
    }
    
    上記の JSON ですべてのパイプラインのインテグレーションが設定されます。パイプラインのセットを制限するには、下の特定のパイプラインのみ監視セクションに従います。
  6. Next をクリックします。
  7. Target TypesEventBridge API destination を選択します。次に Use an existing API Destination を選択し、先ほど作成した API 宛先を選択します。または、API 宛先の作成 セクションで説明した手順に従って API 宛先を作成することもできます。
  8. Headers ParametersAdd header parameter をクリックします。キーに DD-CI-PROVIDER-AWSCODEPIPELINE と入力し、値に true と入力します。
  9. Create a new role for this specific resource を選択します (または、既存のロールを使用)。
  10. 情報が正しいことを確認し、ルールを作成します。

ルールの作成が完了したら、インテグレーションは完了で、Datadog でパイプラインを監視できます。

特定のパイプラインのみ監視

オプションで、Pipeline Visibility で監視するパイプラインを制限することもできます。 これを行うには、EventBridge ルールの作成時に定義したルールイベント パターンに detail.pipeline フィルターを追加します。例:

 {
   "source": ["aws.codepipeline"],
   "detail-type": ["CodePipeline Pipeline Execution State Change", "CodePipeline Action Execution State Change", "CodePipeline Stage Execution State Change"],
   "detail": {
     "pipeline": ["first-pipeline", "second-pipeline"]
   }
 }

上記のイベントパターンでは、first-pipelinesecond-pipeline のパイプラインに対してのみ、インテグレーションが設定されます。

パイプラインとテストの相関付け

Test Visibility を使用していて、パイプラインにテストを実行する AWS CodeBuild アクションが 1 つ以上含まれている場合、Datadog Pipeline Visibility 内でテストを関連するパイプラインと相関付けることができます。手順については、パイプライン実行 ID の追加 を参照してください。

ログの相関付けの有効化

AWS CodePipeline インテグレーション は、CodeBuild アクションとそれぞれのジョブおよびパイプラインスパンとの相関付けをサポートしています。CodeBuild アクションに対してログ収集を有効にするには、AWS ログ転送ガイドを参照してください。

: CodeBuild アクションを対象としたログの相関付けを行うには、CodeBuild プロジェクトにデフォルトの CloudWatch ロググループおよびログストリーム名が必要です。
: ログは CI Visibility とは別に課金されます。ログの保持、除外、インデックスの構成は、ログの設定で行います。AWS CodeBuild のログは source:codebuildsourcecategory:aws のタグで識別できます。
: ログの収集は、PCI 準拠の組織では利用できません。

パイプライン実行 ID を環境変数として追加する

パイプライン実行 ID は、Datadog がパイプライン実行を一意に識別するために必要とする識別子です。以下の手順を実行してパイプライン実行 ID を割り当て、パイプラインとテストおよびカスタムコマンドを相関付けます。

  1. AWS Console でパイプライン構成に移動し、Edit をクリックします。
  2. AWS CodeBuild アクションを含むステージに移動し、Edit Stage をクリックして、該当するアクションを編集します。
  3. Environment variables で環境変数を追加します。 変数名は DD_PIPELINE_EXECUTION_ID とし、値は #{codepipeline.PipelineExecutionId} にします。タイプは Plaintext のままにします。
  4. Done をクリックして変更内容を保存します。

上記の手順で、パイプライン実行 ID を CodeBuild アクション環境変数に追加できます。変数の扱い方については、AWS 公式ガイド を参照してください。

Datadog でパイプラインデータを視覚化する

パイプラインが終了した後に、CI Pipeline ListExecutions のページでデータを確認します。

CI Pipeline List ページには、各リポジトリのデフォルトブランチのデータのみが表示されます。

参考資料

PREVIEWING: evan.li/clarify-agentless