のビルド通知のサンプル CodeBuild - AWS CodeBuild

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

のビルド通知のサンプル CodeBuild

Amazon CloudWatch Events には、 のサポートが組み込まれています AWS CodeBuild。 CloudWatch Events は、 AWS リソースの変更を記述するシステムイベントのストリームです。Events では CloudWatch 、対象となるイベントを実行される自動アクションに関連付ける宣言ルールを記述します。このサンプルでは、Amazon CloudWatch Events と Amazon Simple Notification Service (Amazon SNS) を使用して、ビルドが成功したとき、失敗したとき、ビルドフェーズから別のビルドフェーズに移行するとき、またはこれらのイベントが任意の組み合わせでサブスクライバーにビルド通知を送信します。

重要

このサンプルを実行すると、 AWS アカウントに料金が発生する可能性があります。これには、Amazon CodeBuild および Amazon に関連する AWS リソースとアクションに対する CloudWatch および の料金が含まれますSNS。詳細については、「 のCodeBuild 料金」、「Amazon CloudWatch の料金」、「Amazon のSNS料金」を参照してください。

ビルド通知サンプルを実行する

ビルド通知サンプルを実行するには、次の手順に従います。

このサンプルを実行するには
  1. このサンプルに使用するトピックが既に Amazon で設定され、サブスクライブSNSされている場合は、ステップ 4 に進みます。それ以外の場合、 AWS ルートアカウントまたは管理者IAMユーザーの代わりに ユーザーを使用して Amazon を操作する場合はSNS、次のステートメントを追加します ( ### BEGIN ADDING STATEMENT HERE ### また、### END ADDING STATEMENT HERE ###) をユーザー (またはユーザーが関連付けられているIAMグループ) に。 AWS ルートアカウントの使用はお勧めしません。このステートメントにより、Amazon のトピックへの通知の表示、作成、サブスクライブ、および送信のテストが可能になりますSNS。省略記号 (...) は、簡潔にするために使用され、ステートメントを追加する場所の特定に役立ちます。ステートメントを削除しないでください、また、これらの省略記号を既存のポリシーに入力しないでください。

    { "Statement": [ ### BEGIN ADDING STATEMENT HERE ### { "Action": [ "sns:CreateTopic", "sns:GetTopicAttributes", "sns:List*", "sns:Publish", "sns:SetTopicAttributes", "sns:Subscribe" ], "Resource": "*", "Effect": "Allow" }, ### END ADDING STATEMENT HERE ### ... ], "Version": "2012-10-17" }
    注記

    このポリシーを変更するIAMエンティティには、ポリシーを変更するアクセス許可が IAMにある必要があります。

    詳細については、「 ユーザーガイド」の「インラインポリシーの使用 (コンソール)」の「カスタマー管理ポリシーの編集」または「グループ、ユーザー、またはロールのインラインポリシーを編集または削除するには」セクションを参照してください。 IAM

  2. Amazon SNS. AWS CodeBuild uses Events でトピックを作成または識別 CloudWatch して、Amazon を介してこのトピックにビルド通知を送信しますSNS。

    トピックを作成するには:

    1. https://console.aws.amazon.com/sns で Amazon SNSコンソールを開きます。

    2. [トピックの作成] を選択します。

    3. [新しいトピックの作成] で、[トピック名] にトピックの名前 (CodeBuildDemoTopic など) を入力します。(別の名前を選択する場合は、このサンプル全体でそれを置き換えてください。)

    4. [トピックの作成] を選択します。

    5. トピックの詳細: CodeBuildDemoTopic ページで、トピックARN値をコピーします。この値は次のステップで必要になります。

      トピックARN値。

    詳細については、「Amazon SNS デベロッパーガイド」の「トピックの作成」を参照してください。

  3. 1 つかそれ以上の受信者にトピックをサブスクライブさせ、E メール通知を受け取ります。

    受信者にトピックをサブスクライブさせるには:

    1. 前のステップで Amazon SNSコンソールを開き、ナビゲーションペインでサブスクリプション を選択し、サブスクリプションの作成 を選択します。

    2. 「サブスクリプションの作成」の「トピックARN」で、前のステップからARNコピーしたトピックを貼り付けます。

    3. [Protocol] で [Email] を選択します。

    4. [エンドポイント] に、受信者の完全な E メールアドレスを入力します。

      サブスクリプション設定。

    5. [Create Subscription] を選択します。

    6. Amazon SNSは、受信者にサブスクリプション確認メールを送信します。E メール通知の受信を開始するには、受信者は受信登録確認メールで [Confirm subscription] リンクを選択する必要があります。受信者がリンクをクリックした後、正常にサブスクライブされると、Amazon は受信者のウェブブラウザに確認メッセージSNSを表示します。

    詳細については、「Amazon SNSデベロッパーガイド」の「トピックをサブスクライブする」を参照してください。

  4. AWS ルートアカウントまたは管理者ユーザーの代わりに ユーザーを使用して CloudWatch イベントを操作する場合は、次のステートメントを追加します ( ### BEGIN ADDING STATEMENT HERE ### また、### END ADDING STATEMENT HERE ###) をユーザー (またはユーザーが関連付けられているIAMグループ) に。 AWS ルートアカウントの使用はお勧めしません。このステートメントは、ユーザーが CloudWatch Events を使用できるようにするために使用されます。省略記号 (...) は、簡潔にするために使用され、ステートメントを追加する場所の特定に役立ちます。ステートメントを削除しないでください、また、これらの省略記号を既存のポリシーに入力しないでください。

    { "Statement": [ ### BEGIN ADDING STATEMENT HERE ### { "Action": [ "events:*", "iam:PassRole" ], "Resource": "*", "Effect": "Allow" }, ### END ADDING STATEMENT HERE ### ... ], "Version": "2012-10-17" }
    注記

    このポリシーを変更するIAMエンティティには、ポリシーを変更するアクセス許可が IAMにある必要があります。

    詳細については、「 ユーザーガイド」の「インラインポリシーの使用 (コンソール)」の「カスタマー管理ポリシーの編集」または「グループ、ユーザー、またはロールのインラインポリシーを編集または削除するには」セクションを参照してください。 IAM

  5. Events でルールを作成します CloudWatch 。これを行うには、 CloudWatch /https://console.aws.amazon.comcloudwatch でコンソールを開きます。

  6. ナビゲーションペインの [Events] で、[Rules] を選択してから、[Create rule] を選択します。

  7. [ステップ 1: ルールの作成] ページで、[イベントパターン] と [サービス別のイベントに一致するイベントパターンの構築] が選択済みであることを確認します。

  8. [Service Name] (サービス名)には CodeBuild を選択します。[イベントタイプ] で、[すべてのイベント] が選択済みであることを確認します。

  9. [イベントパターンのプレビュー] には、次のコードが表示されます。

    { "source": [ "aws.codebuild" ] }
  10. [編集] を選択し、[イベントパターンのプレビュー] のコードを、次の 2 つのルールパターンのいずれかに置き換えます。

    この最初のルールパターンは、 AWS CodeBuildで指定されたビルドプロジェクトのビルドが開始または完了すると、イベントをトリガーします。

    { "source": [ "aws.codebuild" ], "detail-type": [ "CodeBuild Build State Change" ], "detail": { "build-status": [ "IN_PROGRESS", "SUCCEEDED", "FAILED", "STOPPED" ], "project-name": [ "my-demo-project-1", "my-demo-project-2" ] } }

    前述のルールで、必要に応じて次のコードを変更します。

    • ビルドが開始または完了したときにイベントをトリガーするには、build-status 配列に表示されているすべての値をそのままにするか、build-status 配列を完全に削除します。

    • ビルドが完了したときにのみイベントをトリガーするには、IN_PROGRESS 配列から build-status を削除します。

    • ビルドの開始時にのみイベントをトリガーするには、IN_PROGRESS 配列から build-status を除くすべての値を削除します。

    • すべてのビルドプロジェクトのイベントをトリガーするには、project-name 配列を完全に削除します。

    • 個々のビルドプロジェクトのイベントのみをトリガーするには、project-name 配列に各ビルドプロジェクトの名前を指定します。

    この 2 番目のルールパターンでは、 AWS CodeBuildで指定されたビルドプロジェクトのビルドフェーズが別のビルドフェーズに移動するたびに、イベントをトリガーします。

    { "source": [ "aws.codebuild" ], "detail-type": [ "CodeBuild Build Phase Change" ], "detail": { "completed-phase": [ "SUBMITTED", "PROVISIONING", "DOWNLOAD_SOURCE", "INSTALL", "PRE_BUILD", "BUILD", "POST_BUILD", "UPLOAD_ARTIFACTS", "FINALIZING" ], "completed-phase-status": [ "TIMED_OUT", "STOPPED", "FAILED", "SUCCEEDED", "FAULT", "CLIENT_ERROR" ], "project-name": [ "my-demo-project-1", "my-demo-project-2" ] } }

    前述のルールで、必要に応じて次のコードを変更します。

    • ビルドフェーズの変更 (各ビルドで送信される通知は最大 9 個) ごとにイベントをトリガーするには、completed-phase 配列に表示されているすべての値をそのままにするか、completed-phase 配列を完全に削除します。

    • 個々のビルドフェーズの変更に対してのみイベントをトリガーするには、イベントをトリガーしない completed-phase 配列の各ビルドフェーズの名前を削除します。

    • 各ビルドフェーズステータスが変更するたびにイベントをトリガーするには、completed-phase-status 配列に示すように、すべて値をそのままにするか、completed-phase-status 配列を完全に削除します。

    • 個々のビルドフェーズステータスの変更に対してのみイベントをトリガーするには、イベントをトリガーしない completed-phase-status 配列の各ビルドフェーズステータスの名前を削除します。

    • すべてのビルドプロジェクトのイベントをトリガーするには、project-name 配列を削除します。

    • 個々のビルドプロジェクトのイベントをトリガーするには、project-name 配列に各ビルドプロジェクトの名前を指定します。

    イベントパターンの詳細については、「Amazon EventBridge ユーザーガイド」の「イベントパターン」を参照してください。

    イベントパターンによるフィルタリングの詳細については、「Amazon EventBridge ユーザーガイド」の「イベントパターンによるコンテンツベースのフィルタリング」を参照してください。

    注記

    ビルド状態の変更とビルドフェーズの変更の両方に応じてイベントをトリガーする場合は、ビルド状態の変更用とビルドフェーズの変更用に 2 つの別個のルールを作成する必要があります。両方のルールを 1 つのルールに結合すると、結合したルールは予期しない結果を引き起こすか、まったく動作しなくなる可能性があります。

    コードの置換を完了したら、[Save] を選択します。

  11. [Targets] で、[Add target] を選択します。

  12. ターゲットのリストで、SNSトピック を選択します。

  13. [Topic] で、以前に指定した、または作成したトピックを選択します。

  14. [入力の設定] を展開して、[インプットトランスフォーマー] を閉じます。

  15. [Input Path] ボックスに、次のいずれかの入力パスを入力します。

    detail-type の値が CodeBuild Build State Change であるルールの場合は、次のように入力します。

    {"build-id":"$.detail.build-id","project-name":"$.detail.project-name","build-status":"$.detail.build-status"}

    detail-type の値が CodeBuild Build Phase Change であるルールの場合は、次のように入力します。

    {"build-id":"$.detail.build-id","project-name":"$.detail.project-name","completed-phase":"$.detail.completed-phase","completed-phase-status":"$.detail.completed-phase-status"}

    他のタイプの情報を取得するには、「ビルド通知の入力形式に関するリファレンス」を参照してください。

  16. [入力テンプレート] ボックスに、次のいずれかの入力テンプレートを入力します。

    detail-type の値が CodeBuild Build State Change であるルールの場合は、次のように入力します。

    "Build '<build-id>' for build project '<project-name>' has reached the build status of '<build-status>'."

    detail-type の値が CodeBuild Build Phase Change であるルールの場合は、次のように入力します。

    "Build '<build-id>' for build project '<project-name>' has completed the build phase of '<completed-phase>' with a status of '<completed-phase-status>'."
  17. [設定の詳細] を選択します。

  18. [ステップ 2: ルールの詳細を設定する] ページで、名前と説明 (オプション) を入力します。[状態] は、[有効] のままとします。

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

  20. ビルドプロジェクトを作成し、ビルドを実行し、ビルド情報を表示します。

  21. CodeBuild がビルド通知を正常に送信していることを確認します。たとえば、ビルド通知 E メールが受信トレイにあるかどうかを確認します。

ルールの動作を変更するには、 CloudWatch コンソールで変更するルールを選択し、アクション を選択し、編集 を選択します。ルールを編集し、[設定の詳細]、[ルールの更新] の順に選択します。

ルールを使用してビルド通知を送信するのを停止するには、 CloudWatch コンソールで、使用を停止するルールを選択し、アクション を選択し、 を無効化 を選択します。

ルールを完全に削除するには、 CloudWatch コンソールで削除するルールを選択し、アクション を選択し、削除 を選択します。