> ## 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.

# 웹훅 자동화 만들기

> 특정 이벤트가 발생하면 외부 서비스로 HTTP 요청을 보내는 웹훅 자동화를 W&B에서 만듭니다.

이 페이지에서는 W\&B에서 특정 이벤트가 발생하면 외부 서비스로 HTTP 요청을 보내는 웹훅 [자동화](/ko/products/wandb/automations)를 만드는 방법을 설명합니다. 웹훅 자동화를 사용하면 W\&B를 CI/CD 파이프라인, 알림 서비스, 맞춤형 도구 같은 외부 시스템과 통합할 수 있습니다. Slack 자동화를 만들려면 [Slack 자동화 만들기](/ko/products/wandb/automations/create-automations/slack)를 참고하세요.

웹훅 자동화를 만드는 전체 과정은 다음과 같습니다.

1. 필요한 경우 액세스 토큰, 비밀번호, SSH 키 등 자동화에 필요한 민감한 문자열마다 [W\&B 시크릿을 만드세요](/ko/products/wandb/platform/secrets). 시크릿은 **Team Settings**에서 정의합니다.
2. [웹훅을 만들어](#create-a-webhook) 엔드포인트와 인증 정보를 정의하고, 인테그레이션이 필요한 시크릿에 액세스할 수 있도록 권한을 부여하세요.
3. [자동화를 만들어](#create-an-automation) 감시할 [이벤트](/ko/products/wandb/automations/automation-events)와 W\&B가 보낼 페이로드를 정의하세요. 그런 다음 자동화가 페이로드에 필요한 시크릿에 액세스할 수 있도록 권한을 부여하세요.

<h2 id="create-a-webhook">
  웹훅 만들기
</h2>

팀 관리자는 팀에 웹훅을 추가할 수 있습니다. 웹훅에는 W\&B가 요청을 보낼 엔드포인트와 해당 엔드포인트 인증에 필요한 자격 증명이 정의됩니다.

<Note>
  웹훅에 Bearer 토큰이 필요하거나 페이로드에 민감한 문자열이 필요한 경우, 웹훅을 만들기 전에 [해당 값을 담은 시크릿을 만드세요](/ko/products/wandb/platform/secrets#add-a-secret). 웹훅 하나에는 액세스 토큰 하나와 기타 시크릿 하나까지만 설정할 수 있습니다. 웹훅의 인증 및 권한 부여 요구 사항은 웹훅 서비스에 따라 결정됩니다.
</Note>

1. W\&B에 로그인한 후 **Team Settings** 페이지로 이동합니다.
2. **Webhooks** 섹션에서 **New webhook**을 클릭합니다.
3. 웹훅의 이름을 입력합니다.
4. 웹훅의 엔드포인트 URL을 입력합니다.
5. 웹훅에 Bearer 토큰이 필요한 경우, **Access token**을 해당 토큰이 담긴 [시크릿](/ko/products/wandb/platform/secrets)으로 설정합니다. 웹훅 자동화를 사용하면 W\&B가 `Authorization: Bearer` HTTP 헤더에 액세스 토큰을 설정하며, `${ACCESS_TOKEN}` [페이로드 변수](#payload-variables)로 토큰에 액세스할 수 있습니다. W\&B가 웹훅 서비스로 보내는 `POST` 요청의 구조에 대한 자세한 내용은 [웹훅 문제 해결](#troubleshoot-your-webhook)을 참고하세요.
6. 웹훅의 페이로드에 비밀번호나 기타 민감한 문자열이 필요한 경우, **Secret**을 해당 값이 담긴 시크릿으로 설정합니다. 웹훅을 사용하는 자동화를 설정할 때 시크릿 이름 앞에 `$`를 붙이면 [페이로드 변수](#payload-variables)로 시크릿에 액세스할 수 있습니다.

   웹훅의 액세스 토큰이 시크릿에 저장되어 있다면, 다음 단계도 *함께* 완료하여 해당 시크릿을 액세스 토큰으로 지정해야 합니다.
7. W\&B가 엔드포인트에 연결하고 인증할 수 있는지 확인하려면 다음을 수행합니다.

   1. (선택 사항) 테스트할 페이로드를 입력합니다. 페이로드에서 웹훅이 액세스할 수 있는 시크릿을 참조하려면 이름 앞에 `$`를 붙입니다. W\&B는 이 페이로드를 테스트에만 사용하며 저장하지 않습니다. 자동화의 페이로드는 [자동화를 만들 때](#create-an-automation) 설정합니다. `POST` 요청에서 시크릿과 액세스 토큰이 들어가는 위치에 대한 자세한 내용은 [웹훅 문제 해결](#troubleshoot-your-webhook)을 참고하세요.
   2. **Test**를 클릭합니다. W\&B가 설정된 자격 증명을 사용하여 웹훅의 엔드포인트에 연결을 시도합니다. 페이로드를 입력했다면 W\&B가 해당 페이로드도 함께 전송합니다.

   테스트에 실패하면 웹훅 설정을 확인한 후 다시 시도하세요. 필요한 경우 [웹훅 문제 해결](#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="팀에 등록된 웹훅 두 개를 보여 주는 스크린샷" width="515" height="131" data-path="products/wandb/_media/webhooks.png" />
</Frame>

이제 웹훅을 사용하는 [자동화를 만들 수 있습니다](#create-an-automation).

<h2 id="create-an-automation">
  자동화 만들기
</h2>

[웹훅을 설정](#create-a-webhook)한 후에는 어떤 W\&B 이벤트가 웹훅을 트리거하고 어떤 페이로드를 보낼지 정의하는 자동화를 만드세요. 원하는 범위에 따라 **Registry** 또는 **Project**를 선택한 다음, 아래 단계에 따라 웹훅을 트리거하는 자동화를 만드세요.

<Note>
  자동화를 더 넓은 범위에 적용하려면 전역 **Automations** 허브에서 자동화를 만들고 **Team** 또는 **Organization** 범위를 선택하세요. 단계는 아래와 동일합니다. 이 범위에서 W\&B App은 아티팩트 및 컬렉션 이벤트만 지원합니다. 자세한 내용은 [Automations 허브](/ko/products/wandb/automations#automations-hub)를 참조하세요.
</Note>

<Tabs>
  <Tab title="Registry">
    레지스트리 관리자는 해당 레지스트리에서 자동화를 만들 수 있습니다. 레지스트리 자동화는 앞으로 추가될 컬렉션을 포함하여 레지스트리의 모든 컬렉션에 적용됩니다.

    1. W\&B에 로그인하세요.

    2. 레지스트리 이름을 클릭하여 세부 정보를 확인하세요.

    3. 레지스트리 범위의 자동화를 만들려면 **Automations** 탭을 클릭한 다음 **Create automation**을 클릭하세요.

    4. 감시할 [이벤트](/ko/products/wandb/automations/automation-events#registry-events)를 선택하세요.

       추가로 표시되는 필드가 있으면 입력하세요. 예를 들어 **An artifact alias is added**를 선택한 경우 **Alias regex**를 지정해야 합니다.

       **Next step**을 클릭하세요.

    5. [웹훅](#create-a-webhook)을 소유한 팀을 선택하세요.

    6. **Action type**을 **Webhooks**로 설정한 다음 사용할 [웹훅](#create-a-webhook)을 선택하세요.

    7. 웹훅에 액세스 토큰을 설정한 경우 `${ACCESS_TOKEN}` [페이로드 변수](#payload-variables)로 토큰에 액세스할 수 있습니다. 웹훅에 시크릿을 설정한 경우 이름 앞에 `$`를 붙여 페이로드에서 사용할 수 있습니다. 웹훅의 요구 사항은 웹훅 서비스에 따라 다릅니다.

    8. **Next step**을 클릭하세요.

    9. 자동화 이름을 입력하고, 필요하면 설명도 입력하세요. **Create automation**을 클릭하세요.
  </Tab>

  <Tab title="Project">
    W\&B Admin은 프로젝트에서 자동화를 만들 수 있습니다.

    1. W\&B에 로그인하고 프로젝트 페이지로 이동하세요.
    2. 프로젝트 사이드바에서 **Automations**를 클릭한 다음 **Create automation**을 클릭하세요.

       또는 워크스페이스의 선형 플롯에서 해당 플롯에 표시된 메트릭에 대한 [run 메트릭 자동화](/ko/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. 아티팩트 별칭이 추가되거나 run 메트릭이 지정된 임계값에 도달하는 경우 등 감시할 [이벤트](/ko/products/wandb/automations/automation-events#project)를 선택하세요.

       1. 이벤트에 따라 추가로 표시되는 필드가 있으면 입력하세요. 예를 들어 **An artifact alias is added**를 선택한 경우 **Alias regex**를 지정해야 합니다.

          1. run으로 트리거되는 자동화의 경우 필요하면 run 필터를 하나 이상 지정할 수 있습니다.

             * **Filter to one user's runs**: 지정한 사용자가 생성한 run만 포함합니다. 토글을 클릭하여 필터를 켠 다음 사용자 이름을 지정하세요.
             * **Filter on run name**: 이름이 지정한 정규 표현식과 일치하는 run만 포함합니다. 토글을 클릭하여 필터를 켠 다음 정규 표현식을 지정하세요.

          자동화는 앞으로 추가될 컬렉션을 포함하여 프로젝트의 모든 컬렉션에 적용됩니다.
       2. **Next step**을 클릭하세요.
    4. [웹훅](#create-a-webhook)을 소유한 팀을 선택하세요.
    5. **Action type**을 **Webhooks**로 설정한 다음 사용할 [웹훅](#create-a-webhook)을 선택하세요.
    6. 웹훅에 페이로드가 필요한 경우 페이로드를 작성하여 **Payload** 필드에 붙여넣으세요. 웹훅에 액세스 토큰을 설정한 경우 `${ACCESS_TOKEN}` [페이로드 변수](#payload-variables)로 토큰에 액세스할 수 있습니다. 웹훅에 시크릿을 설정한 경우 이름 앞에 `$`를 붙여 페이로드에서 사용할 수 있습니다. 웹훅의 요구 사항은 웹훅 서비스에 따라 다릅니다.
    7. **Next step**을 클릭하세요.
    8. 자동화 이름을 입력하고, 필요하면 설명도 입력하세요. **Create automation**을 클릭하세요.
  </Tab>
</Tabs>

이 단계를 완료하면 자동화가 활성화되며, 레지스트리 또는 프로젝트에서 지정한 이벤트가 발생할 때마다 웹훅이 실행됩니다.

<h2 id="view-and-manage-automations">
  자동화 보기 및 관리
</h2>

**Automations** 탭에서 자동화를 검토, 편집하거나 삭제할 수 있습니다.

<Tabs>
  <Tab title="Registry">
    레지스트리의 **Automations** 탭에서 해당 레지스트리의 자동화를 관리하세요.

    * 자동화의 세부 정보를 보려면 자동화 이름을 클릭하세요.
    * 자동화를 편집하려면 해당 자동화의 **액션(<Icon icon="ellipsis" iconType="solid" />)** 메뉴를 클릭한 다음 **Edit automation**을 클릭하세요.
    * 자동화를 삭제하려면 해당 자동화의 **액션(<Icon icon="ellipsis" iconType="solid" />)** 메뉴를 클릭한 다음 **Delete automation**을 클릭하세요. W\&B에서 삭제 여부를 확인하는 메시지가 표시됩니다.
  </Tab>

  <Tab title="Project">
    W\&B Admin은 프로젝트의 **Automations** 탭에서 해당 프로젝트의 자동화를 확인하고 관리할 수 있습니다.

    * 자동화의 세부 정보를 보려면 자동화 이름을 클릭하세요.
    * 자동화를 편집하려면 해당 자동화의 **액션(<Icon icon="ellipsis" iconType="solid" />)** 메뉴를 클릭한 다음 **Edit automation**을 클릭하세요.
    * 자동화를 삭제하려면 해당 자동화의 **액션(<Icon icon="ellipsis" iconType="solid" />)** 메뉴를 클릭한 다음 **Delete automation**을 클릭하세요. W\&B에서 삭제 여부를 확인하는 메시지가 표시됩니다.
  </Tab>
</Tabs>

<h2 id="payload-reference">
  페이로드 레퍼런스
</h2>

이 섹션을 참고하여 웹훅의 페이로드를 구성하세요. 다음 섹션에서는 페이로드에서 사용 가능한 변수를 설명하고, 주요 서비스별 페이로드 예시를 보여 줍니다. 웹훅과 페이로드를 테스트하는 방법에 대한 자세한 내용은 [웹훅 문제 해결](#troubleshoot-your-webhook)을 참고하세요.

<h3 id="payload-variables">
  페이로드 변수
</h3>

다음 표는 웹훅 페이로드를 구성할 때 사용할 수 있는 변수를 설명합니다.

| 변수 | 세부 정보 |
| - | - |
| `${project_name}` | 액션을 트리거한 변경 사항을 소유한 프로젝트의 이름입니다. |
| `${entity_name}` | 액션을 트리거한 변경 사항을 소유한 entity 또는 팀의 이름입니다. |
| `${event_type}` | 액션을 트리거한 이벤트의 유형입니다. |
| `${event_author}` | 액션을 트리거한 사용자입니다. |
| `${alias}` | **An artifact alias is added** 이벤트로 자동화가 트리거된 경우 아티팩트의 별칭이 담깁니다. 그 밖의 자동화에서는 이 변수가 비어 있습니다. |
| `${tag}` | **An artifact tag is added** 이벤트로 자동화가 트리거된 경우 아티팩트의 태그가 담깁니다. 그 밖의 자동화에서는 이 변수가 비어 있습니다. |
| `${artifact_collection_name}` | 아티팩트 버전이 연결된 아티팩트 컬렉션의 이름입니다. |
| `${artifact_metadata.<KEY>}` | 액션을 트리거한 아티팩트 버전의 임의의 최상위 메타데이터 키 값입니다. `<KEY>`를 최상위 메타데이터 키의 이름으로 바꾸세요. 웹훅 페이로드에서는 최상위 메타데이터 키만 사용할 수 있습니다. |
| `${artifact_version}` | 액션을 트리거한 아티팩트 버전의 [`Wandb.Artifact`](/ko/products/wandb/ref/python/experiments/artifact) 표현입니다. |
| `${artifact_version_string}` | 액션을 트리거한 아티팩트 버전의 `string` 표현입니다. |
| `${ACCESS_TOKEN}` | [웹훅](#create-a-webhook)에 액세스 토큰을 설정한 경우 해당 액세스 토큰의 값입니다. W\&B는 이 값을 `Authorization: Bearer` HTTP 헤더에 담아 자동으로 전달합니다. |
| `${SECRET_NAME}` | [웹훅](#create-a-webhook)에 시크릿을 설정한 경우 해당 시크릿의 값입니다. `SECRET_NAME`을 시크릿의 이름으로 바꾸세요. |

<h3 id="payload-examples">
  페이로드 예시
</h3>

다음 예시는 일반적인 사용 사례에 대한 웹훅 페이로드를 보여줍니다. 예시는 [페이로드 변수](#payload-variables)를 사용하는 방법을 보여줍니다.

<Tabs>
  <Tab title="GitHub 저장소 dispatch">
    <Note>
      액세스 토큰에 GitHub Actions 워크플로를 트리거할 수 있는 필수 권한 세트가 있는지 확인하세요. 자세한 내용은 [GitHub 저장소 디스패치 이벤트 문서](https://docs.github.com/en/rest/repos/repos?#create-a-repository-dispatch-event)를 참조하세요.
    </Note>

    W\&B에서 저장소 디스패치를 전송하여 GitHub 액션을 트리거하세요. 예를 들어, `on` 키에 대한 트리거로 저장소 디스패치를 받아들이는 GitHub 워크플로 파일이 있다고 가정해 보겠습니다.

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

    저장소에 대한 payload는 다음과 같을 수 있습니다:

    ```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>
      웹훅 페이로드의 `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](/ko/products/wandb/artifacts/download-and-use-an-artifact)를 통해 등록된 모델 아티팩트를 사용할 수 있습니다.

    자세한 내용은 다음 리소스를 참조하세요:

    * 저장소 디스패치에 대한 자세한 내용은 [GitHub Marketplace의 공식 문서](https://github.com/marketplace/actions/repository-dispatch)를 참조하세요.
    * [모델 평가를 위한 웹훅 자동화](https://www.youtube.com/watch?v=7j-Mtbo-E74\&ab_channel=Weights%26Biases) 및 [모델 배포를 위한 웹훅 자동화](https://www.youtube.com/watch?v=g5UiAFjM2nA\&ab_channel=Weights%26Biases) 비디오를 시청하세요. 이 비디오들은 모델 평가 및 배포를 위한 자동화를 만드는 방법을 안내합니다.
    * W\&B Reports [Model CI/CD with W\&B](https://forge.coreweave.com/wandb/wandb/wandb-model-cicd/reports/Model-CI-CD-with-W-B--Vmlldzo0OTcwNDQw)를 검토하세요. 이 보고서는 모델 CI를 위한 GitHub Actions 웹훅 자동화 사용 방법을 보여줍니다.
    * Modal Labs 웹훅을 사용한 모델 CI 예시는 [wandb-modal-webhook GitHub 저장소](https://github.com/hamelsmu/wandb-modal-webhook)를 참조하세요.
  </Tab>

  <Tab title="Microsoft Teams 알림">
    이 예제 payload는 웹훅을 사용하여 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>
      이 섹션은 역사적 목적으로 제공됩니다. 웹훅을 사용하여 Slack과 통합하는 경우, W\&B에서는 [Slack 인테그레이션](/ko/products/wandb/automations/create-automations/slack)을 대신 사용하도록 설정을 업데이트할 것을 권장합니다.
    </Note>

    Slack 앱을 설정하고 수신 웹훅 인테그레이션을 추가하려면 [Slack API 문서](https://api.slack.com/messaging/webhooks)의 지침을 따르세요. `Bot User OAuth Token` 아래에 지정된 시크릿을 W\&B 웹훅의 액세스 토큰으로 사용하세요.

    다음은 예시 페이로드입니다:

    ```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">
  웹훅 문제 해결
</h2>

웹훅이 예상대로 작동하지 않으면 W\&B App UI에서 대화형으로 문제를 해결하거나, 셸 스크립트를 사용해 프로그래밍 방식으로 해결할 수 있습니다. 웹훅 문제 해결은 웹훅을 생성하는 중에도, 생성한 후에도 할 수 있습니다.

W\&B가 `POST` 요청에 사용하는 형식에 대한 자세한 내용은 **셸 스크립트** 탭을 참고하세요.

<Tabs>
  <Tab title="W&B App UI">
    팀 관리자는 W\&B App UI에서 대화형으로 웹훅을 테스트할 수 있습니다.

    1. 팀 페이지로 이동한 다음 **Settings**를 클릭하세요.
    2. **Webhooks** 섹션으로 스크롤하세요.
    3. 웹훅 이름 옆에 있는 **액션 (<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="웹훅 페이로드 테스트 데모" width="2610" height="1764" data-path="products/wandb/_media/webhook_ui.png" />
           </Frame>
    6. **Test webhook**을 클릭하세요. W\&B가 엔드포인트의 응답을 W\&B App UI에 표시합니다.
           <Frame>
             <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/_media/webhook_ui_testing.gif?s=e93752b2105a0278f94163e62062a729" alt="웹훅 테스트 데모" 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="셸 스크립트">
    이 셸 스크립트는 웹훅 자동화가 트리거될 때 W\&B가 보내는 요청과 유사한 `POST` 요청을 생성하는 한 가지 방법을 보여 줍니다.

    웹훅 문제를 해결하려면 다음 코드를 복사하여 셸 스크립트에 붙여 넣으세요. 다음 항목에는 직접 값을 지정하세요.

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

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

    # 액세스 토큰과 시크릿
    ACCESS_TOKEN="your_api_key"
    SECRET="your_api_secret"

    # 웹훅 엔드포인트의 URL
    API_ENDPOINT="https://your.webhook.endpoint/path"

    # 전송할 데이터(예: JSON 형식)
    PAYLOAD='{"key1": "value1", "key2": "value2"}'

    # HMAC 시그니처를 생성합니다. 보안을 위해 W&B는 페이로드와
    # 웹훅에 연결된 공유 시크릿으로 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>
