> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-docs-sandboxes-integrations-placement.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Secrets

> Serverless Sandboxes でシークレットを管理する方法を説明します。

<Warning>
  Serverless Sandboxes はパブリックプレビューです。
</Warning>

サンドボックス内で APIキーやトークン などの機密情報にアクセスするには、W\&B Python SDK で [W\&B Secrets Manager](/ja/platform/secrets) を使用します。

サンドボックスでシークレットを使用するには、まずチームの Secrets Manager に追加します。次に、サンドボックスの作成時にそのシークレットを名前で参照します。

<Caution>
  シークレットの値をコードやサンドボックスの設定に直接含めないでください。シークレットは名前でのみ参照してください。
</Caution>

W\&B は、要求された各シークレットを環境変数としてサンドボックスに挿入します。デフォルトでは、環境変数名はシークレット名と一致します。`env_var` パラメーターを使用すると、環境変数名をカスタマイズできます。

<Note>
  W\&B アカウントでシークレットを作成および管理する方法については、[Manage secrets](/ja/platform/secrets) を参照してください。
</Note>

<div id="access-secrets-in-a-sandbox">
  ## サンドボックスでシークレットにアクセスする
</div>

サンドボックスに含めるシークレットを指定するには、`Secret` クラスを使用します。1 つ以上の `Secret` オブジェクトを `Sandbox.run()` の `secrets` パラメーターに渡します。各 `Secret` オブジェクトでは、シークレットを名で指定します。W\&B はシークレット値を環境変数としてサンドボックスに設定します。

<Tip>シークレット値ではなく、シークレット名を渡してください。サンドボックス内では、対応する環境変数からシークレットを読み取ってください。</Tip>

次の例では、既存の 2 つのシークレット `HF_TOKEN` と `OPENAI_API_KEY` をサンドボックスで使用可能にします。

```python theme={null}
from wandb.sandbox import Sandbox, Secret

with Sandbox.run(
    secrets=[
        Secret(name="HF_TOKEN"),
        Secret(name="OPENAI_API_KEY"),
    ],
) as sandbox:
    result = sandbox.exec([
        "python",
        "-c",
        """
import os
if "HF_TOKEN" in os.environ:
    print(f"Hugging Face token found.")
if "OPENAI_API_KEY" in os.environ:
    print(f"OpenAI key token found.")
""",
    ]).result()
    print(result.stdout)
```

サンドボックス内では、各シークレットに対応する環境変数を通じてアクセスします。この例では、`HF_TOKEN` は `os.environ["HF_TOKEN"]` として利用でき、`OPENAI_API_KEY` は `os.environ["OPENAI_API_KEY"]` として利用できます。

シークレットの環境変数名をカスタマイズするには、[カスタム環境変数名を使用する](#use-a-custom-environment-variable-name)を参照してください。

<div id="use-a-custom-environment-variable-name">
  ## カスタムの環境変数名を使用する
</div>

デフォルトでは、シークレットの環境変数名はシークレット名と同じです。特定のシークレットについてサンドボックスで使用する環境変数名を変更するには、`Secret` の `env_var` パラメーターを設定します (`Secret(env_var="CUSTOM_NAME")`) 。

次の例では、`HF_TOKEN` シークレットがサンドボックス内で利用可能であることを確認します。

```python theme={null}
from wandb.sandbox import Sandbox, Secret

with Sandbox.run(
    secrets=[
        Secret(name="HF_TOKEN", env_var="HUGGINGFACE_TOKEN")
    ],
) as sandbox:
    result = sandbox.exec([
        "python",
        "-c",
        """
import os
if "HUGGINGFACE_TOKEN" in os.environ:
    print(f"Hugging Face token found!")
""",
    ]).result()
    print(result.stdout)
```
