CodePipeline イベントのモニタリング - AWS CodePipeline

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

CodePipeline イベントのモニタリング

EventBridge で CodePipeline イベントをモニタリングできます。このイベントでは、お客様独自のアプリケーション、Software-as-a-Service (SaaS) アプリケーション、AWSのサービス。EventBridge は、そのデータをAWS LambdaAmazon Simple Notification Service. これらのイベントは、Amazon CloudWatch Events に表示されるイベントと同じで、システムイベントのほぼリアルタイムのストリームを配信します。AWSリソースの使用料金を見積もることができます。詳細については、「」を参照してください。Amazon EventBridge とは()Amazon EventBridge ユーザーガイド

注記

イベントを管理するには、Amazon EventBridge が好ましい方法です。Amazon CloudWatch Events と EventBridge は同じ基盤となるサービスと API ですが、EventBridge はより多くの機能を提供します。CloudWatch イベントまたは EventBridge で行った変更は、各コンソールに表示されます。

イベントはルールで構成されています。ルールを設定するには、次の項目を選択します。

  • イベントパターン。 各ルールは、監視するイベントのソースとタイプ、およびイベントターゲットを含むイベントパターンとして表されます。イベントを監視するには、CodePipeline など、監視対象のサービスをイベントソースとしてルールを作成します。たとえば、CodePipeline をイベントソースとして使用するイベントパターンを持つルールを作成し、パイプライン、ステージ、またはアクションの状態が変更された場合にルールをトリガーできます。

  • ターゲット。 新しいルールは選択したサービスをイベントターゲットとして受け取ります。ターゲットサービスのセットアップでは、通知を送信したり、状態情報を取得したり、是正措置を取ったり、イベントを開始したり、その他の措置を取ることができます。ターゲットを追加するときは、Amazon CloudWatch Events へアクセス権限を付与し、選択したターゲットサービスの呼び出しを許可する必要があります。

各タイプの実行の状態変更イベントは、以下の特定のメッセージ内容で通知を送信します。

  • 最初のversionエントリには、イベントのバージョン番号が表示されます。

  • パイプライン detailversion エントリは、パイプライン構造のバージョン番号を示します。

  • パイプライン detailexecution-id エントリは、状態変更の原因となったパイプラインの実行 ID を示します。を参照してください。GetPipelineExecutionAPI コールをAWS CodePipelineAPI リファレンス

CodePipeline は、Amazon CloudWatch Events にイベントをレポートします。AWSアカウントが変更されます。イベントは、次のリソースに対して、最低1回保証された状態で発行されます。

  • パイプライン実行

  • ステージの実行

  • アクション実行

次の例は、CodePipeline のイベントを示しています。

詳細タイプ

監視するイベントを設定するときに、イベントの詳細タイプを選択できます。

以下の状態が変わった時に通知が送信されるように設定できます。

  • 指定したパイプラインまたはすべてのパイプライン。これを制御するには、"detail-type": "CodePipeline Pipeline Execution State Change" を使用します。

  • 指定したパイプラインまたはすべてのパイプライン内の、指定したステージまたはすべてのステージ。これを制御するには、"detail-type": "CodePipeline Stage Execution State Change" を使用します。

  • 指定したパイプラインまたはすべてのパイプライン内の、指定したステージまたはすべてのステージ内の、指定したアクションまたはすべてのアクション。これを制御するには、"detail-type": "CodePipeline Action Execution State Change" を使用します。

詳細タイプ 状態 説明
CodePipeline プラインの実行の状態変更 キャンセル済み パイプライン構造が更新されたため、パイプライン実行がキャンセルされました。
FAILED パイプライン実行が正常に完了しませんでした。
再開 失敗したパイプライン実行が RetryStageExecution API コールに応じて再試行されました。
開始 パイプライン実行が現在実行中です。
停止 停止プロセスが完了し、パイプラインの実行が停止します。
停止中 パイプライン実行は、パイプライン実行を [Stop and wait (停止して待機)] するか、[Stop and abandon (停止して中止)] する要求により、停止しています。
成功 パイプライン実行が正常に完了しました。
置き換え済み

このパイプライン実行が次のステージの完了を待機している間に、新しいパイプライン実行が進行し、代わりにパイプラインを継続しました。

CodePipeline ステージ実行の状態変更 キャンセル済み パイプライン構造が更新されたため、ステージはキャンセルされました。
FAILED ステージは正常に完了しませんでした。
再開 失敗したステージが RetryStageExecution API コールに応じて再試行されました。
開始 このステージは現在実行中です。
停止 停止プロセスが完了し、ステージの実行が停止します。
停止中 ステージ実行は、パイプライン実行を [Stop and wait (停止して待機)] するか、[Stop and abandon (停止して中止)] する要求により、停止しています。
成功 ステージは正常に完了しました。
CodePipeline アクションの実行の状態変更 中止 パイプラインの実行を [Stop and abandon (停止して中止)] する要求により、アクションは中止されます。
キャンセル済み パイプライン構造が更新されたため、アクションはキャンセルされました。
FAILED 承認アクションでは、失敗の状態は、アクションがレビュー者により拒否されたか、または誤ったアクション設定のために失敗したことを意味します。
開始 アクションは現在実行中です。
成功 アクションは正常に完了しました。

パイプラインレベルのイベント

パイプラインレベルのイベントは、パイプライン実行の状態変更がある場合に発行されます。

パイプライン開始イベント

パイプライン実行が開始すると、以下の内容の通知が送信されます。この例は、"myPipeline"()us-east-1リージョン。-idフィールドはイベント ID を表し、accountフィールドは、パイプラインが作成されるアカウント ID を表します。

{ "version": "0", "id": "01234567-EXAMPLE", "detail-type": "CodePipeline Pipeline Execution State Change", "source": "aws.codepipeline", "account": "123456789012", "time": "2020-01-24T22:03:07Z", "region": "us-east-1", "resources": [ "arn:aws:codepipeline:us-east-1:123456789012:myPipeline" ], "detail": { "pipeline": "myPipeline", "execution-id": "12345678-1234-5678-abcd-12345678abcd", "execution-trigger": { "trigger-type": "StartPipelineExecution", "trigger-detail": "arn:aws:sts::123456789012:assumed-role/Admin/my-user" }, "state": "STARTED", "version": 1 } }

パイプライン停止イベント

パイプライン実行が停止すると、以下の内容の通知が送信されます。この例は、myPipeline()us-east-1リージョン。

{ "version": "0", "id": "01234567-EXAMPLE", "detail-type": "CodePipeline Pipeline Execution State Change", "source": "aws.codepipeline", "account": "123456789012", "time": "2020-01-24T22:02:20Z", "region": "us-west-2", "resources": [ "arn:aws:codepipeline:us-west-2:123456789012:myPipeline" ], "detail": { "pipeline": "myPipeline", "execution-id": "12345678-1234-5678-abcd-12345678abcd", "state": "STOPPING", "version": 3, "stop-execution-comments": "Stopping the pipeline for an update" } }

パイプラインに成功したイベント

パイプライン実行に成功すると、以下の内容の通知が送信されます。この例は、myPipeline()us-west-2リージョン。

{ "version": "0", "id": "01234567-EXAMPLE", "detail-type": "CodePipeline Pipeline Execution State Change", "source": "aws.codepipeline", "account": "123456789012", "time": "2020-01-24T22:03:44Z", "region": "us-west-2", "resources": [ "arn:aws:codepipeline:us-west-2:123456789012:myPipeline" ], "detail": { "pipeline": "myPipeline", "execution-id": "12345678-1234-5678-abcd-12345678abcd", "state": "SUCCEEDED", "version": 3 } }

パイプラインの失敗イベント

パイプライン実行に失敗すると、以下の内容の通知が送信されます。この例は、"myPipeline"()us-west-2リージョン。

{ "version": "0", "id": "01234567-EXAMPLE", "detail-type": "CodePipeline Pipeline Execution State Change", "source": "aws.codepipeline", "account": "123456789012", "time": "2020-01-31T18:55:43Z", "region": "us-west-2", "resources": [ "arn:aws:codepipeline:us-west-2:123456789012:myPipeline" ], "detail": { "pipeline": "myPipeline", "execution-id": "12345678-1234-5678-abcd-12345678abcd", "state": "FAILED", "version": 4 } }

ステージレベルのイベント

ステージレベルのイベントは、ステージ実行の状態変更がある場合に発行されます。

ステージ開始イベント

ステージ実行が開始すると、以下の内容の通知が送信されます。この例は、"myPipeline"()us-east-1リージョン、ステージ用Prod

{ "version": "0", "id": 01234567-EXAMPLE, "detail-type": "CodePipeline Stage Execution State Change", "source": "aws.codepipeline", "account": 123456789012, "time": "2020-01-24T22:03:07Z", "region": "us-east-1", "resources": [ "arn:aws:codepipeline:us-east-1:123456789012:myPipeline" ], "detail": { "pipeline": "myPipeline", "version": "1", "execution-id": 12345678-1234-5678-abcd-12345678abcd, "stage": "Prod", "state": "STARTED" } }

ステージ停止イベント

ステージ実行が停止すると、以下の内容の通知が送信されます。この例は、myPipeline()us-west-2リージョン、ステージ用Deploy

{ "version": "0", "id": "01234567-EXAMPLE", "detail-type": "CodePipeline Stage Execution State Change", "source": "aws.codepipeline", "account": "123456789012", "time": "2020-01-24T22:02:20Z", "region": "us-west-2", "resources": [ "arn:aws:codepipeline:us-west-2:123456789012:myPipeline" ], "detail": { "pipeline": "myPipeline", "execution-id": "12345678-1234-5678-abcd-12345678abcd", "stage": "Deploy", "state": "STOPPING", "version": 3 } }

ステージ停止イベント

ステージ実行が停止すると、以下の内容の通知が送信されます。この例は、myPipeline()us-west-2リージョン、ステージ用Deploy

{ "version": "0", "id": "01234567-EXAMPLE", "detail-type": "CodePipeline Stage Execution State Change", "source": "aws.codepipeline", "account": "123456789012", "time": "2020-01-31T18:21:39Z", "region": "us-west-2", "resources": [ "arn:aws:codepipeline:us-west-2:123456789012:myPipeline" ], "detail": { "pipeline": "myPipeline", "execution-id": "12345678-1234-5678-abcd-12345678abcd", "stage": "Deploy", "state": "STOPPED", "version": 3 } }

アクションレベルのイベント

アクションレベルのイベントは、アクション実行の状態変更がある場合に発行されます。

アクション開始イベント

アクション実行が開始すると、以下の内容の通知が送信されます。この例は、myPipeline()us-east-1リージョン (展開アクション用)myAction

{ "version": "0", "id": 01234567-EXAMPLE, "detail-type": "CodePipeline Action Execution State Change", "source": "aws.codepipeline", "account": 123456789012, "time": "2020-01-24T22:03:07Z", "region": "us-east-1", "resources": [ "arn:aws:codepipeline:us-east-1:123456789012:myPipeline" ], "detail": { "pipeline": "myPipeline", "execution-id": 12345678-1234-5678-abcd-12345678abcd, "stage": "Prod", "action": "myAction", "state": "STARTED", "type": { "owner": "AWS", "category": "Deploy", "provider": "CodeDeploy", "version": 1 }, "input-artifacts": [ { "name": "SourceArtifact", "s3location": { "bucket": "codepipeline-us-east-1-BUCKETEXAMPLE", "key": "myPipeline/SourceArti/KEYEXAMPLE" } } ] } }

アクションが成功しました

アクション実行に成功すると、以下の内容の通知が送信されます。この例は、"myPipeline"()us-west-2ソースアクションのリージョン"Source"。このイベントタイプには、2 つの異なるregionフィールド。イベントのregionフィールドは、パイプラインイベントのリージョンを指定します。-regionの下のdetailセクションは、アクションのリージョンを指定します。

{ "version": "0", "id": "01234567-EXAMPLE", "detail-type": "CodePipeline Action Execution State Change", "source": "aws.codepipeline", "account": "123456789012", "time": "2020-01-24T22:03:11Z", "region": "us-west-2", "resources": [ "arn:aws:codepipeline:us-west-2:123456789012:myPipeline" ], "detail": { "pipeline": "myPipeline", "execution-id": "12345678-1234-5678-abcd-12345678abcd", "stage": "Source", "execution-result": { "external-execution-url": "https://us-west-2.console.aws.amazon.com/codecommit/home#/repository/my-repo/commit/8cf40f2EXAMPLE", "external-execution-summary": "Added LICENSE.txt", "external-execution-id": "8cf40fEXAMPLE" }, "output-artifacts": [ { "name": "SourceArtifact", "s3location": { "bucket": "codepipeline-us-west-2-BUCKETEXAMPLE", "key": "myPipeline/SourceArti/KEYEXAMPLE" } } ], "action": "Source", "state": "SUCCEEDED", "region": "us-west-2", "type": { "owner": "AWS", "provider": "CodeCommit", "category": "Source", "version": "1" }, "version": 3 } }

アクションが失敗しました

アクション実行に失敗すると、以下の内容の通知が送信されます。この例は、"myPipeline"()us-west-2リージョン (アクション)"Deploy"

{ "version": "0", "id": "01234567-EXAMPLE", "detail-type": "CodePipeline Action Execution State Change", "source": "aws.codepipeline", "account": "123456789012", "time": "2020-01-31T18:55:43Z", "region": "us-west-2", "resources": [ "arn:aws:codepipeline:us-west-2:123456789012:myPipeline" ], "detail": { "pipeline": "myPipeline", "execution-id": "12345678-1234-5678-abcd-12345678abcd", "stage": "Deploy", "execution-result": { "external-execution-url": "https://us-west-2.console.aws.amazon.com/codedeploy/home?#/deployments/d-DI4YWLUK1", "external-execution-summary": "Deployment d-DI4YWLUK1 failed", "external-execution-id": "d-DIEXAMPLE", "error-code": "JobFailed" }, "action": "Deploy", "state": "FAILED", "region": "us-west-2", "type": { "owner": "AWS", "provider": "CodeDeploy", "category": "Deploy", "version": "1" }, "version": 4 } }

アクション放棄イベント

アクション実行が放棄すると、以下の内容の通知が送信されます。この例は、"myPipeline"()us-west-2リージョン (アクション)"Deploy"

{ "version": "0", "id": "01234567-EXAMPLE", "detail-type": "CodePipeline Action Execution State Change", "source": "aws.codepipeline", "account": "123456789012", "time": "2020-01-31T18:21:39Z", "region": "us-west-2", "resources": [ "arn:aws:codepipeline:us-west-2:123456789012:myPipeline" ], "detail": { "pipeline": "myPipeline", "execution-id": "12345678-1234-5678-abcd-12345678abcd", "stage": "Deploy", "action": "Deploy", "state": "ABANDONED", "region": "us-west-2", "type": { "owner": "AWS", "provider": "CodeDeploy", "category": "Deploy", "version": "1" }, "version": 3 } }

パイプラインイベントで通知を送信するルールの作成

ルールは特定のイベントを監視し、AWSターゲットを選択します。実行するルールを作成するには、AWSアクションを自動的に実行すると、別のAWSアクションが発生するか、AWSアクションを設定したスケジュールで定期的に実行します。

パイプラインの状態が変わるたびに通知を送信する (コンソール)

これらのステップでは、CloudWatch コンソールを使用して、CodePipeline で変更の通知を送信するためのルールを作成する方法を示します。

CodePipeline をイベントソースとする CloudWatch イベントルールを作成するには

  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. ナビゲーションペインの [Events] を選択します。

  3. [Create rule] を選択します。[イベントソース] で、[サービス名] ドロップダウンリストから、[CodePipeline] を選択します。

  4. [イベントタイプ] ドロップダウンリストで、通知する状態変更のレベルを選択します。

    • パイプラインイベントに適用されるルールでは、[CodePipeline Pipeline Execution State Change] を選択します。

    • ステージレベルのイベントに適用されるルールでは、[CodePipeline Stage Execution State Change] を選択します。

    • アクションレベルのイベントに適用されるルールでは、[CodePipeline Action Execution State Change] を選択します。

  5. ルールを適用する状態変更を指定します。

    • すべての状態変更に適用されるルールには、[Any state] を選択します。

    • いくつかの状態変更のみに適用されるルールには、[Specific state(s)] を選択してから、リストから 1 つ以上の値を選択します。

  6. セレクタよりも詳細なイベントパターンには、編集オプションのイベントパターンのプレビューウィンドウを使用して、JSON 形式のイベントパターンを指定します。以下に示すのは、手動で JSON 構造を編集して「myPipeline」という名前のパイプラインを指定する例です。

    
              パイプライン名はルールの JSON 構造で手動で編集できます。

    注記

    指定されていない場合、イベントパターンは、すべてのパイプライン/ステージ/アクションの状態に対して作成されます。

    より詳細なイベントパターンについては、次のイベントパターンの例をコピーして [編集] ウィンドウに貼り付けることができます。

    • このイベントパターンのサンプルを使用して、すべてのパイプラインで失敗したデプロイとビルドアクションをキャプチャします。

      { "source": [ "aws.codepipeline" ], "detail-type": [ "CodePipeline Action Execution State Change" ], "detail": { "state": [ "FAILED" ], "type": { "category": ["Deploy", "Build"] } } }
    • このイベントパターンのサンプルを使用して、すべてのパイプラインで、拒否された、または失敗したすべての承認アクションをキャプチャします。

      { "source": [ "aws.codepipeline" ], "detail-type": [ "CodePipeline Action Execution State Change" ], "detail": { "state": [ "FAILED" ], "type": { "category": ["Approval"] } } }
    • このイベントパターンのサンプルを使用して、指定したパイプラインからすべてのイベントをキャプチャします。

      { "source": [ "aws.codepipeline" ], "detail-type": [ "CodePipeline Pipeline Execution State Change", "CodePipeline Action Execution State Change", "CodePipeline Stage Execution State Change" ], "detail": { "pipeline": ["myPipeline", "my2ndPipeline"] } }
  7. [Targets] エリアで、[Add target*] を選択します。

  8. [Select target type] リストで、このルールのターゲットのタイプを選択してから、そのタイプに必要なオプションを設定します。

  9. [Configure details] を選択します。

  10. [Configure rule details] ページで、ルールの名前と説明を入力し、[State] ボックスを選択して、すぐにルールを有効化します。

  11. [Create rule] を選択します。

パイプラインの状態が変わるときに通知を送信する (CLI)

これらのステップでは、CLI を使用して、CodePipeline で変更の通知を送信するための CloudWatch イベントルールを作成する方法を示します。

を使用するにはAWSCLI を使用してルールを作成するには、put-ruleコマンドを使用して、以下を指定します。

  • 作成中のルールを一意に識別する名前。この名前は、CodePipeline で作成するすべてのパイプラインで一意である必要があります。AWSアカウント.

  • ルールで使用するソースと詳細フィールドのイベントパターン。詳細については、「」を参照してください。Amazon CloudWatch Events とイベントパターン

CodePipeline をイベントソースとする CloudWatch イベントルールを作成するには

  1. put-rule コマンドを呼び出して、イベントパターンを指定するルールを作成します。(有効な状態については前のテーブルを参照してください。)

    以下のサンプルコマンドでは、--event-patternというルールを作成するには:“MyPipelineStateChanges”は、「myPipeline」という名前のパイプラインでパイプライン実行に失敗したときに CloudWatch イベントを送信します。

    aws events put-rule --name "MyPipelineStateChanges" --event-pattern "{\"source\":[\"aws.codepipeline\"],\"detail-type\":[\"CodePipeline Pipeline Execution State Change\"],\"detail\":{\"pipeline\":[\"myPipeline\"],\"state\":[\"FAILED\"]}}"
  2. を呼び出します。put-targetsコマンドを実行し、以下のパラメータを含めます。

    • --rule パラメータは、put-rule を使用して作成した rule_name で使用されます。

    • ---targetsパラメーターは、リストIdをターゲットリストのリストとARNAmazon SNS トピックの。

    次のサンプルコマンドでは、MyPipelineStateChanges と呼ばれるルールに対して指定し、ターゲット Id は 1 番で構成されています。これは、ルールのターゲットのリストが何であるかを示し、この場合は ターゲット 1 です。このサンプルコマンドでは、ARNAmazon SNS トピックの」

    aws events put-targets --rule MyPipelineStateChanges --targets Id=1,Arn=arn:aws:sns:us-west-2:11111EXAMPLE:MyNotificationTopic
  3. Amazon CloudWatch Events アクセス権限を追加し、通知を呼び出す指定されたターゲットサービスを使用します。詳細については、「」を参照してください。Amazon CloudWatch Events でのリソースベースのポリシーを使用する