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

# Weave Op を使用して独自のバケット内のメディアを参照する (BYOB)

> 独自のクラウドバケットにある画像や動画の URI をログすることで、データを Weave にインポートせずに Weave トレース内でレンダリングします。

Weave で表示したいメディアがすでに独自のバケットに保存されている場合は、この手法を使用します。例:

* 動画パイプラインのフレーム
* ブラウザーエージェントのスクリーンショット
* モデルが S3 に書き込んだ画像

これらのバイトを Weave に再アップロードする代わりに、オブジェクトの URI を string としてログすると、Weave がバケットから画像や動画をインラインでレンダリングします。Weave に送信されるのは URI のみで、バイトデータはバケット内に残ります。2 GB の動画をログする場合でも、コストはパスをログする場合と変わりません。

これは、[Content API](/ja/products/wandb/weave/guides/core-types/media#contents-api) を使用したメディアのログとは異なります。Content API ではバイトデータを読み取り、Weave に保存します。

<Note>
  これは Weave のフィーチャーであり、W\&B のアーティファクトおよび run のストレージに使用される [プラットフォーム BYOB (セキュアストレージコネクタ) ](/ja/products/wandb/platform/hosting/data-security/secure-storage-connector) とは別のものです。参照メディア用のバケットはチームごとに設定し、必要なのは読み取りアクセス権のみです。
</Note>

<h2 id="how-it-works">
  仕組み
</h2>

参照メディアのレンダリングは、次の 3 つのステップで行われます。

1. メディアオブジェクトをバケットに保存します (例: `s3://[YOUR-BUCKET]/frames/000123.png`) 。
2. その URI を string 値として、トレース内の任意の場所 (Op の入力や出力、エージェントのツール結果など) にログします。フィールド名は問いません。
3. トレースを開くと、Weave が URI を有効期間の短い[事前署名付き URL](/ja/products/wandb/platform/hosting/data-security/presigned-urls) に解決し、インラインでレンダリングします。レンダリング方法はファイル拡張子によって決まります。一般的な画像形式 (`.png`、`.jpg`、`.gif` など) や動画形式 (`.mp4`、`.mov`、`.webm` など) はインラインでレンダリングされ、それ以外の形式はダウンロードリンクとして表示されます。

Weave が解決するのは、チームに登録されたバケットを指す URI のみです。サポートされるスキームは `s3://` と `gs://` です。

<h2 id="prerequisites">
  前提条件
</h2>

* このフィーチャーは [W\&B Multi-tenant Cloud](/ja/products/wandb/platform/hosting/hosting-options/multi_tenant_cloud) でサポートされています。[専用クラウド](/ja/products/wandb/platform/hosting/hosting-options/dedicated-cloud) および [セルフマネージド](/ja/products/wandb/platform/hosting/hosting-options/self-managed) v0.84.0 以降では、プレビューとして提供されています。
* CoreWeave Forge アカウントと [APIキー](https://forge.coreweave.com/settings#apikeys)。
* 自身が管理するクラウドストレージバケット (S3 または GCS)。バケットには 1 つ以上のオブジェクトが含まれている必要があります。
* 組織管理者の権限。参照バケットの追加には、組織内でのチーム作成と同じ権限が必要です。

<h2 id="configure-your-bucket">
  バケットを設定する
</h2>

W\&B にバケットへの読み取りアクセス権を付与し、ブラウザーが CORS を使用してオブジェクトを取得できるようにします。

トレースを表示すると、W\&B は参照されている各オブジェクトについて、有効期間の短い署名付きダウンロード URL を生成します。署名付き URL を正しく生成できるよう、W\&B インテグレーションのプリンシパルにバケットへの読み取りアクセス権を付与してください。このアクセス権は、インラインでのレンダリングに使用する読み取り専用のものです。

<Tabs>
  <Tab title="AWS S3">
    1. W\&B インテグレーションのプリンシパルに `s3:GetObject` を付与するバケットポリシーを適用します。以下の内容を `bucket-policy.json` として保存し、`[YOUR-BUCKET]` を実際のバケット名に置き換えます。

       ```json lines theme={"system"}
       {
         "Version": "2012-10-17",
         "Id": "WandBAccess",
         "Statement": [{
           "Sid": "WandbAccess",
           "Effect": "Allow",
           "Principal": {"AWS": "arn:aws:iam::725579432336:role/WandbIntegration"},
           "Action": "s3:GetObject",
           "Resource": "arn:aws:s3:::[YOUR-BUCKET]/*"
         }]
       }
       ```

       次に、このポリシーをバケットに適用します。

       ```bash theme={"system"}
       aws s3api put-bucket-policy --bucket [YOUR-BUCKET] --policy file://bucket-policy.json
       ```

    2. アプリがブラウザーでオブジェクトを取得できるように、CORS 設定を適用します。以下の内容を `cors.json` として保存します。

       ```json lines theme={"system"}
       {
         "CORSRules": [{
           "AllowedHeaders": ["*"],
           "AllowedMethods": ["GET", "HEAD"],
           "AllowedOrigins": ["https://forge.coreweave.com"],
           "ExposeHeaders": ["ETag"],
           "MaxAgeSeconds": 3000
         }]
       }
       ```

       次に、この設定をバケットに適用します。

       ```bash theme={"system"}
       aws s3api put-bucket-cors --bucket [YOUR-BUCKET] --cors-configuration file://cors.json
       ```

    <Note>
      オブジェクトがカスタマー管理の KMS キーで暗号化されている場合は、そのキーポリシーでも `arn:aws:iam::725579432336:role/WandbIntegration` に `kms:Decrypt` を付与する必要があります。バケットポリシーだけでは不十分です。
    </Note>
  </Tab>

  <Tab title="Google Cloud Storage">
    1. W\&B インテグレーションのサービスアカウントに、バケットに対する `roles/storage.objectViewer` を付与します。`[YOUR-BUCKET]` は実際のバケット名に置き換えてください。

       ```bash theme={"system"}
       gcloud storage buckets add-iam-policy-binding gs://[YOUR-BUCKET] \
         --member="serviceAccount:wandb-integration@wandb-production.iam.gserviceaccount.com" \
         --role="roles/storage.objectViewer"
       ```

    2. アプリがブラウザーでオブジェクトを取得できるように、CORS 設定を適用します。以下の内容を `cors.json` として保存します。

       ```json lines theme={"system"}
       [{
         "origin": ["https://forge.coreweave.com"],
         "method": ["GET", "HEAD"],
         "responseHeader": ["ETag"],
         "maxAgeSeconds": 3000
       }]
       ```

       次に、この設定をバケットに適用します。

       ```bash theme={"system"}
       gcloud storage buckets update gs://[YOUR-BUCKET] --cors-file=cors.json
       ```
  </Tab>
</Tabs>

これで、Weight & Biases がバケットからオブジェクトを読み取れるようになり、UI でもブラウザー上でオブジェクトを取得できるようになります。

<h2 id="register-the-reference-bucket">
  参照バケットを登録する
</h2>

Weave が参照先の URI の署名付き URL を生成して表示できるように、チーム設定でバケットを登録します。

1. チーム設定ページ (`https://forge.coreweave.com/wandb/[YOUR-TEAM]/settings`) に移動します。
2. **Reference buckets** セクションで、**Add bucket** を選択します。
3. クラウドプロバイダー (**AWS** または **Google Cloud**) を選択します。
4. バケット名には、`s3://` や `gs://` の接頭辞を付けずに `[YOUR-BUCKET]` のみを入力します。
5. オブジェクトキーには、バケット内の既存オブジェクトのキーを入力します (例: `photos/cat.png`) 。完全な URL ではなく、オブジェクトキーのみを入力してください。W\&B はこのオブジェクトを 1 つ読み取り、読み取りアクセス権があることと、CORS が正しく設定されていることを確認します。この確認はアクセスをチェックするためだけのものです。検証が完了すると、バケット内のどのオブジェクトに対しても署名付き URL を生成できます。
6. 必要に応じて **Test connection** を選択し、保存せずに設定を検証します。
7. **Add bucket** を選択して保存します。

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/add-ref-bucket.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=7ab906b46a48b51e085530aaaf1e47a4" alt="チーム設定の「Add reference bucket」ダイアログ。クラウドプロバイダー、バケット名、既存のオブジェクトキーの各フィールドと、Test connection ボタンおよび Add bucket ボタンが表示されています。" width="548" height="449" data-path="products/wandb/weave/_media/add-ref-bucket.png" />
</Frame>

<Warning>
  バケットを登録するまで、参照先の URI はレンダリングされません。Weave がオブジェクトの署名付き URL を生成して表示するには、登録が必要です。
</Warning>

<h2 id="log-a-media-reference-using-weave-op-function-tracing">
  Weave Op の関数トレースを使用してメディア参照をログする
</h2>

URI を string 値としてトレースにログします。値がバケット URI である string フィールドは、すべてレンダリングされます。バイトデータはバケット内に保持されたままなので、コンテンツのアノテーションは不要です。次の例の Op は、バケット内にある既存の画像にキャプションを付け、各 URI をキャプションとともにログします。`[YOUR-TEAM]`、`[YOUR-PROJECT]`、`[YOUR-BUCKET]` はご自身の値に置き換えてください。

<Tip>
  エージェント型アプリケーションに参照メディアを追加する場合は、[エージェント スパンでのメディア参照](/ja/products/wandb/weave/guides/tracking/agents-byob-references) を参照してください。
</Tip>

<Tabs>
  <Tab title="Python">
    ```python lines theme={"system"}
    import weave

    weave.init("[YOUR-TEAM]/[YOUR-PROJECT]")

    @weave.op
    def caption_image(image_uri: str) -> dict:
        caption = my_captioner(image_uri)  # 使用するモデルまたは API 呼び出し。
        # image_uri はその値に基づいてインラインでレンダリングされます。フィールド名は任意で、
        # 画像か動画かは拡張子（ここでは .png）によって決まります。
        return {"image": image_uri, "caption": caption}

    caption_image("s3://[YOUR-BUCKET]/photos/cat.png")
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript lines theme={"system"}
    import * as weave from 'weave';

    await weave.init('[YOUR-TEAM]/[YOUR-PROJECT]');

    const captionImage = weave.op(async function captionImage(imageUri: string) {
      const caption = await myCaptioner(imageUri); // 使用するモデルまたは API 呼び出し。
      // imageUri はその値に基づいてインラインでレンダリングされます。フィールド名は任意です。
      return {image: imageUri, caption};
    });

    await captionImage('s3://[YOUR-BUCKET]/photos/cat.png');
    ```
  </Tab>
</Tabs>

<h2 id="view-the-reference-in-weave-traces">
  Weave トレースで参照を表示する
</h2>

`weave.init()` が出力するリンクからトレースを開きます。参照先の画像や動画は、**Traces** ビューにインラインでレンダリングされます。オブジェクトが存在しない、バケット が登録されていないなどの理由で Weave が URI を解決できない場合は、URI 文字列がそのまま表示されます。

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/traces-byob.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=1089bf820959dde0fd237d7cc8e239d2" alt="独自のクラウド バケット 内のオブジェクトを指す バケット URI から解決され、Weave トレースビューにインラインでレンダリングされた参照画像。" width="1442" height="422" data-path="products/wandb/weave/_media/traces-byob.png" />
</Frame>


## Related topics

- [エージェント スパンを使用して独自のバケット（BYOB）内のメディアを参照する](/ja/products/wandb/weave/guides/tracking/agents-byob-references.md)
