> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# webhook オートメーションを作成する

> W&B で webhook オートメーションを作成し、特定のイベントが発生したときに外部サービスへ HTTP リクエストを送信します。

このページでは、webhook [オートメーション](/ja/products/wandb/automations)の作成方法を説明します。webhook オートメーションは、W\&B で特定のイベントが発生したときに外部サービスへ HTTP リクエストを送信します。webhook オートメーションを使用すると、CI/CD パイプライン、通知サービス、独自のツールなどの外部システムと W\&B を統合できます。Slack オートメーションを作成する場合は、[Slack オートメーションを作成する](/ja/products/wandb/automations/create-automations/slack)を参照してください。

webhook オートメーションを作成する大まかな手順は次のとおりです。

1. 必要に応じて、アクセストークン、パスワード、SSH キーなど、オートメーションで使用する機密性の高い文字列ごとに [W\&B シークレットを作成](/ja/products/wandb/platform/secrets)します。シークレットは **Team Settings** で定義します。
2. [webhook を作成](#create-a-webhook)し、エンドポイントと認証情報を定義して、インテグレーションに必要なシークレットへのアクセス権を付与します。
3. [オートメーションを作成](#create-an-automation)し、監視する[イベント](/ja/products/wandb/automations/automation-events)と W\&B が送信するペイロードを定義します。また、ペイロードで使用するシークレットへのアクセス権をオートメーションに付与します。

<h2 id="create-a-webhook">
  webhook を作成する
</h2>

チーム管理者は、チームに webhook を追加できます。webhook では、W\&B がリクエストを送信するエンドポイントと、そのエンドポイントでの認証に必要な認証情報を定義します。

<Note>
  webhook で Bearer token が必要な場合、またはペイロードに機密性の高い文字列が必要な場合は、webhook を作成する前に[その値を含むシークレットを作成](/ja/products/wandb/platform/secrets#add-a-secret)してください。1 つの webhook に設定できるのは、アクセストークン 1 つとその他のシークレット 1 つまでです。webhook の認証および認可の要件は、webhook の送信先サービスによって決まります。
</Note>

1. W\&B にログインし、**Team Settings** ページに移動します。
2. **Webhooks** セクションで **New webhook** をクリックします。
3. webhook の名前を入力します。
4. webhook のエンドポイント URL を入力します。
5. webhook で Bearer token が必要な場合は、**Access token** にそのトークンを含む[シークレット](/ja/products/wandb/platform/secrets)を設定します。webhook オートメーションの使用時、W\&B は `Authorization: Bearer` HTTP ヘッダーにアクセストークンを設定します。また、`${ACCESS_TOKEN}` [ペイロード変数](#payload-variables)でトークンにアクセスできます。W\&B が webhook サービスに送信する `POST` リクエストの構造の詳細については、[webhook のトラブルシューティング](#troubleshoot-your-webhook)を参照してください。
6. webhook のペイロードにパスワードやその他の機密性の高い文字列が必要な場合は、**Secret** にその値を含むシークレットを設定します。webhook を使用するオートメーションを設定する際は、シークレット名の先頭に `$` を付けることで、そのシークレットに[ペイロード変数](#payload-variables)としてアクセスできます。

   webhook のアクセストークンがシークレットに保存されている場合は、次のステップ\_も\_完了して、そのシークレットをアクセストークンとして指定する必要があります。
7. W\&B がエンドポイントに接続して認証できることを確認するには、次の手順を実行します。

   1. 必要に応じて、テスト用のペイロードを入力します。webhook がアクセスできるシークレットをペイロード内で参照するには、シークレット名の先頭に `$` を付けます。このペイロードはテストにのみ使用され、保存されません。オートメーションのペイロードは、[オートメーションを作成](#create-an-automation)するときに設定します。シークレットとアクセストークンが `POST` リクエストのどこに含まれるかについては、[webhook のトラブルシューティング](#troubleshoot-your-webhook)を参照してください。
   2. **Test** をクリックします。W\&B は、設定した認証情報を使用して webhook のエンドポイントへの接続を試みます。ペイロードを入力した場合は、そのペイロードも送信されます。

   テストが失敗した場合は、webhook の設定を確認してから再試行してください。必要に応じて、[webhook のトラブルシューティング](#troubleshoot-your-webhook)を参照してください。

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/webhooks.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=1607f84f87713463eacbae31c0fe01ff" alt="チーム内の 2 つの webhook を示すスクリーンショット" width="515" height="131" data-path="products/wandb/_media/webhooks.png" />
</Frame>

これで、この webhook を使用する[オートメーションを作成](#create-an-automation)できます。

<h2 id="create-an-automation">
  オートメーションを作成する
</h2>

[webhook を設定](#create-a-webhook)したら、webhook をトリガーする W\&B イベントと送信するペイロードを定義するオートメーションを作成します。目的のスコープに応じて **Registry** または **Project** を選択し、以下の手順に従って webhook をトリガーするオートメーションを作成します。

<Note>
  オートメーションをより広い範囲に適用するには、グローバルな **Automations** ハブから作成し、**Team** または **Organization** スコープを選択します。手順は以下と同じです。これらのスコープでは、W\&B アプリはアーティファクトイベントとコレクションイベントのみをサポートします。詳しくは [Automations ハブ](/ja/products/wandb/automations#automations-hub)を参照してください。
</Note>

<Tabs>
  <Tab title="Registry">
    Registry 管理者は、その registry 内でオートメーションを作成できます。Registry のオートメーションは、今後追加されるものも含め、registry 内のすべてのコレクションに適用されます。

    1. W\&B にログインします。

    2. registry 名をクリックして詳細を表示します。

    3. registry をスコープとするオートメーションを作成するには、**Automations** タブをクリックし、**Create automation** をクリックします。

    4. 監視する[イベント](/ja/products/wandb/automations/automation-events#registry-events)を選択します。

       表示される追加フィールドに入力します。たとえば、**An artifact alias is added** を選択した場合は、**Alias regex** を指定する必要があります。

       **Next step** をクリックします。

    5. [webhook](#create-a-webhook) を所有するチームを選択します。

    6. **Action type** を **Webhooks** に設定し、使用する [webhook](#create-a-webhook) を選択します。

    7. webhook にアクセストークンを設定した場合は、`${ACCESS_TOKEN}` [ペイロード変数](#payload-variables)でトークンを参照できます。webhook にシークレットを設定した場合は、名前の先頭に `$` を付けるとペイロード内で参照できます。webhook の要件は、送信先のサービスによって異なります。

    8. **Next step** をクリックします。

    9. オートメーションの名前を入力します。必要に応じて説明も入力します。**Create automation** をクリックします。
  </Tab>

  <Tab title="Project">
    W\&B 管理者は、project 内でオートメーションを作成できます。

    1. W\&B にログインし、project ページに移動します。
    2. プロジェクトのサイドバーで **Automations** をクリックし、**Create automation** をクリックします。

       または、Workspace 内の折れ線グラフから、そのグラフに表示されているメトリクスの [run メトリクスオートメーション](/ja/products/wandb/automations/automation-events#run-events)をすばやく作成することもできます。パネルにカーソルを合わせ、パネル上部のベルアイコンをクリックします。

           <Frame>
             <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/run_metric_automation_from_panel.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=122de71b7adaba2a371fb0697b4662a0" alt="オートメーションのベルアイコンの位置" width="385" height="258" data-path="products/wandb/_media/run_metric_automation_from_panel.png" />
           </Frame>
    3. 監視する[イベント](/ja/products/wandb/automations/automation-events#project)を選択します。たとえば、アーティファクトのエイリアスが追加されたときや、run のメトリクスが指定したしきい値に達したときなどです。

       1. イベントに応じて表示される追加フィールドに入力します。たとえば、**An artifact alias is added** を選択した場合は、**Alias regex** を指定する必要があります。

          1. run によってトリガーされるオートメーションでは、必要に応じて 1 つ以上の run フィルターを指定します。

             * **Filter to one user's runs**: 指定したユーザーが作成した run のみを対象にします。トグルをクリックしてフィルターを有効にし、ユーザー名を指定します。
             * **Filter on run name**: 名前が指定した正規表現に一致する run のみを対象にします。トグルをクリックしてフィルターを有効にし、正規表現を指定します。

          このオートメーションは、今後追加されるものも含め、project 内のすべてのコレクションに適用されます。
       2. **Next step** をクリックします。
    4. [webhook](#create-a-webhook) を所有するチームを選択します。
    5. **Action type** を **Webhooks** に設定し、使用する [webhook](#create-a-webhook) を選択します。
    6. webhook にペイロードが必要な場合は、ペイロードを作成して **Payload** フィールドに貼り付けます。webhook にアクセストークンを設定した場合は、`${ACCESS_TOKEN}` [ペイロード変数](#payload-variables)でトークンを参照できます。webhook にシークレットを設定した場合は、名前の先頭に `$` を付けるとペイロード内で参照できます。webhook の要件は、送信先のサービスによって異なります。
    7. **Next step** をクリックします。
    8. オートメーションの名前を入力します。必要に応じて説明も入力します。**Create automation** をクリックします。
  </Tab>
</Tabs>

これらの手順を完了するとオートメーションが有効になり、registry または project で指定したイベントが発生するたびに webhook が実行されます。

<h2 id="view-and-manage-automations">
  オートメーションの表示と管理
</h2>

**Automations** タブでは、オートメーションの確認、編集、削除を行えます。

<Tabs>
  <Tab title="Registry">
    registry のオートメーションは、その registry の **Automations** タブで管理します。

    * オートメーションの詳細を表示するには、オートメーション名をクリックします。
    * オートメーションを編集するには、対象の **action (<Icon icon="ellipsis" iconType="solid" />)** メニューをクリックし、**Edit automation** をクリックします。
    * オートメーションを削除するには、対象の **action (<Icon icon="ellipsis" iconType="solid" />)** メニューをクリックし、**Delete automation** をクリックします。確認を求めるメッセージが W\&B に表示されます。
  </Tab>

  <Tab title="Project">
    W\&B の管理者は、project の **Automations** タブで、その project のオートメーションを表示および管理できます。

    * オートメーションの詳細を表示するには、オートメーション名をクリックします。
    * オートメーションを編集するには、対象の **action (<Icon icon="ellipsis" iconType="solid" />)** メニューをクリックし、**Edit automation** をクリックします。
    * オートメーションを削除するには、対象の **action (<Icon icon="ellipsis" iconType="solid" />)** メニューをクリックし、**Delete automation** をクリックします。確認を求めるメッセージが W\&B に表示されます。
  </Tab>
</Tabs>

<h2 id="payload-reference">
  ペイロードリファレンス
</h2>

webhook のペイロードを作成する際は、以下のセクションを使用してください。これらのセクションでは、ペイロードで使用できる変数について説明し、一般的なサービス向けのペイロード例を紹介します。webhook とそのペイロードのテスト方法について詳しくは、[webhook のトラブルシューティング](#troubleshoot-your-webhook) を参照してください。

<h3 id="payload-variables">
  ペイロード変数
</h3>

次の表は、webhook のペイロードを構築する際に使用できる変数を示しています。

| 変数 | 詳細 |
| - | - |
| `${project_name}` | action をトリガーしたミューテーションを所有する project の名前。 |
| `${entity_name}` | action をトリガーしたミューテーションを所有する entity またはチームの名前。 |
| `${event_type}` | action をトリガーしたイベントのタイプ。 |
| `${event_author}` | action をトリガーしたユーザー。 |
| `${alias}` | **An artifact alias is added** イベントによってオートメーションがトリガーされた場合に、アーティファクトのエイリアスが格納されます。その他のオートメーションでは、この変数は空になります。 |
| `${tag}` | **An artifact tag is added** イベントによってオートメーションがトリガーされた場合に、アーティファクトのタグが格納されます。その他のオートメーションでは、この変数は空になります。 |
| `${artifact_collection_name}` | アーティファクトのバージョンがリンクされているアーティファクト コレクションの名前。 |
| `${artifact_metadata.<KEY>}` | action をトリガーしたアーティファクトのバージョンに含まれる、任意のトップレベルのメタデータキーの値。`<KEY>` はトップレベルのメタデータキーの名前に置き換えてください。webhook のペイロードで使用できるのは、トップレベルのメタデータキーのみです。 |
| `${artifact_version}` | action をトリガーしたアーティファクトのバージョンの [`Wandb.Artifact`](/ja/products/wandb/ref/python/experiments/artifact) 表現。 |
| `${artifact_version_string}` | action をトリガーしたアーティファクトのバージョンの `string` 表現。 |
| `${ACCESS_TOKEN}` | [webhook](#create-a-webhook) にアクセストークンを設定した場合の、そのアクセストークンの値。W\&B はこの値を `Authorization: Bearer` HTTP ヘッダーで自動的に渡します。 |
| `${SECRET_NAME}` | [webhook](#create-a-webhook) にシークレットを設定した場合の、そのシークレットの値。`SECRET_NAME` はシークレットの名前に置き換えてください。 |

<h3 id="payload-examples">
  ペイロードの例
</h3>

以下に、一般的なユースケースにおける webhook ペイロードの例を示します。これらの例では、[ペイロード変数](#payload-variables)の使い方も紹介しています。

<Tabs>
  <Tab title="GitHub リポジトリディスパッチ">
    <Note>
      アクセストークンに、GitHub Actions ワークフローのトリガーに必要な権限が付与されていることを確認してください。詳細については、[GitHub の repository dispatch イベントに関するドキュメント](https://docs.github.com/en/rest/repos/repos?#create-a-repository-dispatch-event)を参照してください。
    </Note>

    W\&B から repository dispatch を送信すると、GitHub Actions をトリガーできます。たとえば、`on` キーのトリガーとして repository dispatch を受け入れる GitHub ワークフローファイルがあるとします。

    ```yaml theme={"system"}
    on:
    repository_dispatch:
      types: BUILD_AND_DEPLOY
    ```

    リポジトリのペイロードは、たとえば次のようになります。

    ```json theme={"system"}
    {
      "event_type": "BUILD_AND_DEPLOY",
      "client_payload":
      {
        "event_author": "${event_author}",
        "artifact_version": "${artifact_version}",
        "artifact_version_string": "${artifact_version_string}",
        "artifact_collection_name": "${artifact_collection_name}",
        "project_name": "${project_name}",
        "entity_name": "${entity_name}"
        }
    }
    ```

    <Note>
      webhook ペイロード内の `event_type` キーは、GitHub ワークフローの YAML ファイル内の `types` フィールドと一致させる必要があります。
    </Note>

    レンダリングされるテンプレート文字列の内容と位置は、オートメーションの対象として設定したイベントまたはモデルのバージョンによって異なります。`${event_type}` は `LINK_ARTIFACT` または `ADD_ARTIFACT_ALIAS` としてレンダリングされます。マッピングの例を次に示します。

    ```text theme={"system"}
    ${event_type} --> "LINK_ARTIFACT" or "ADD_ARTIFACT_ALIAS"
    ${event_author} --> "<wandb-user>"
    ${artifact_version} --> "wandb-artifact://_id/QXJ0aWZhY3Q6NTE3ODg5ODg3"
    ${artifact_version_string} --> "<entity>/model-registry/<registered_model_name>:<alias>"
    ${artifact_collection_name} --> "<registered_model_name>"
    ${project_name} --> "model-registry"
    ${entity_name} --> "<entity>"
    ```

    テンプレート文字列を使用すると、W\&B から GitHub Actions などのツールにコンテキストを動的に渡せます。これらのツールが Python スクリプトを呼び出せる場合は、[W\&B API](/ja/products/wandb/artifacts/download-and-use-an-artifact) を通じて登録済みのモデル アーティファクトを利用できます。

    詳細については、以下のリソースを参照してください。

    * repository dispatch の詳細については、[GitHub Marketplace の公式ドキュメント](https://github.com/marketplace/actions/repository-dispatch)を参照してください。
    * 動画 [Webhook Automations for Model Evaluation](https://www.youtube.com/watch?v=7j-Mtbo-E74\&ab_channel=Weights%26Biases) と [Webhook Automations for Model Deployment](https://www.youtube.com/watch?v=g5UiAFjM2nA\&ab_channel=Weights%26Biases) をご覧ください。モデル評価とデプロイメント向けのオートメーションを作成する手順が解説されています。
    * W\&B の report [Model CI/CD with W\&B](https://forge.coreweave.com/wandb/wandb/wandb-model-cicd/reports/Model-CI-CD-with-W-B--Vmlldzo0OTcwNDQw) を参照してください。GitHub Actions の webhook オートメーションをモデル CI に使用する方法が紹介されています。
    * Modal Labs の webhook を使用したモデル CI の例については、[wandb-modal-webhook GitHub リポジトリ](https://github.com/hamelsmu/wandb-modal-webhook)を参照してください。
  </Tab>

  <Tab title="Microsoft Teams の通知">
    次のペイロード例は、webhook を使用して Teams チャンネルに通知する方法を示しています。

    ```json theme={"system"}
    {
    "@type": "MessageCard",
    "@context": "http://schema.org/extensions",
    "summary": "New Notification",
    "sections": [
      {
        "activityTitle": "Notification from WANDB",
        "text": "This is an example message sent via Teams webhook.",
        "facts": [
          {
            "name": "Author",
            "value": "${event_author}"
          },
          {
            "name": "Event Type",
            "value": "${event_type}"
          }
        ],
        "markdown": true
      }
    ]
    }
    ```

    テンプレート文字列を使用すると、実行時に W\&B のデータをペイロードに注入できます。[Teams の例](#microsoft-teams-notification)を参照してください。
  </Tab>

  <Tab title="Slack 通知">
    <Note>
      このセクションは参考情報として残しています。webhook を使用して Slack と統合している場合は、代わりに [Slack インテグレーション](/ja/products/wandb/automations/create-automations/slack) を使用するよう設定を更新することを W\&B は推奨しています。
    </Note>

    [Slack API ドキュメント](https://api.slack.com/messaging/webhooks) の手順に従って Slack アプリを設定し、Incoming Webhook インテグレーションを追加します。`Bot User OAuth Token` に指定されているシークレットが、W\&B webhook のアクセストークンとして設定されていることを確認してください。

    以下はペイロードの例です。

    ```json theme={"system"}
    {
        "text": "New alert from WANDB!",
    "blocks": [
        {
                "type": "section",
            "text": {
                "type": "mrkdwn",
                "text": "Registry event: ${event_type}"
            }
        },
            {
                "type":"section",
                "text": {
                "type": "mrkdwn",
                "text": "New version: ${artifact_version_string}"
            }
            },
            {
            "type": "divider"
        },
            {
                "type": "section",
            "text": {
                "type": "mrkdwn",
                "text": "Author: ${event_author}"
            }
            }
        ]
    }
    ```
  </Tab>
</Tabs>

<h2 id="troubleshoot-your-webhook">
  webhook のトラブルシューティング
</h2>

webhook が想定どおりに動作しない場合は、W\&B アプリ UI を使用してインタラクティブに、またはシェルスクリプトを使用してプログラムでトラブルシューティングできます。トラブルシューティングは、webhook の作成中でも作成後でも行えます。

W\&B が `POST` リクエストに使用する形式の詳細については、**Shell script** タブを参照してください。

<Tabs>
  <Tab title="W&B App UI">
    チーム管理者は、W\&B アプリ UI を使用して webhook をインタラクティブにテストできます。

    1. チームページに移動し、**Settings** をクリックします。
    2. **Webhooks** セクションまでスクロールします。
    3. 対象の webhook 名の横にある **action (<Icon icon="ellipsis" iconType="solid" />)** メニューをクリックします。
    4. **Test** を選択します。
    5. 表示された UI パネルのフィールドに、`POST` リクエストを貼り付けます。
           <Frame>
             <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/webhook_ui.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=e675758e82251cd4b5275210b6e414db" alt="webhook ペイロードのテストのデモ" width="2610" height="1764" data-path="products/wandb/_media/webhook_ui.png" />
           </Frame>
    6. **Test webhook** をクリックします。エンドポイントからの応答が W\&B アプリ UI 内に表示されます。
           <Frame>
             <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/webhook_ui_testing.gif?s=e93752b2105a0278f94163e62062a729" alt="webhook のテストのデモ" width="2396" height="2304" data-path="products/wandb/_media/webhook_ui_testing.gif" />
           </Frame>

    実際の操作については、動画 [Testing Webhooks in W\&B](https://www.youtube.com/watch?v=bl44fDpMGJw\&ab_channel=Weights%26Biases) をご覧ください。
  </Tab>

  <Tab title="Shell script">
    このシェルスクリプトは、webhook オートメーションがトリガーされたときに W\&B が送信するリクエストと同様の `POST` リクエストを生成する方法の一例です。

    webhook をトラブルシューティングするには、次のコードをシェルスクリプトにコピー＆ペーストし、以下の値を独自の値に置き換えてください。

    * `ACCESS_TOKEN`
    * `SECRET`
    * `PAYLOAD`
    * `API_ENDPOINT`

    ```bash webhook_test.sh theme={"system"}
    #!/bin/bash

    # アクセストークンとシークレット
    ACCESS_TOKEN="your_api_key"
    SECRET="your_api_secret"

    # webhook エンドポイントの URL
    API_ENDPOINT="https://your.webhook.endpoint/path"

    # 送信するデータ（例: JSON 形式）
    PAYLOAD='{"key1": "value1", "key2": "value2"}'

    # HMAC 署名を生成します。セキュリティのため、W&B は
    # ペイロードと webhook に関連付けられた共有シークレットから
    # HMAC（SHA-256）で計算した X-Wandb-Signature ヘッダーを含めます。
    SIGNATURE=$(echo -n "$PAYLOAD" | openssl dgst -sha256 -hmac "$SECRET" | awk '{print $2}')

    # cURL リクエストを実行します
    curl -X POST \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $ACCESS_TOKEN" \
      -H "X-Wandb-Signature: $SIGNATURE" \
      -d "$PAYLOAD" "$API_ENDPOINT"
    ```
  </Tab>
</Tabs>
