> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/ja/roboflow-cloud/dedicated-deployments/startup-scripts.md).

# 起動スクリプト

推論開始前に、専用デプロイメント上で Bash スクリプトを root として実行します。

スタートアップスクリプトは、推論が始まる前に専用デプロイメント上でパッケージをインストールしたりデータをダウンロードしたりします。モデルや Workflows に、推論コンテナに含まれていない Python パッケージ、システムツール、またはデータファイルが必要な場合に使用してください。

{% hint style="info" %}
スタートアップスクリプトはデフォルトで無効です。 [営業にお問い合わせください](https://roboflow.com/sales) ワークスペースで有効にするには。
{% endhint %}

## 概要

このスクリプトは Bash です。新しいレプリカや再起動を含む、すべてのコンテナ起動時に root として実行されます。その後、推論は root 以外のユーザーとして実行されます。

スクリプトは 10 分以内に完了する必要があります。エラーまたはタイムアウトが発生すると推論の開始が停止し、コンテナは再試行します。スクリプトは次で始めてください `set -e` これにより、コマンド失敗時に停止し、再実行しても安全なように記述してください。

あらかじめ用意されているものはありません。pip など、必要なツールは自分でインストールしてください。以下の下にあるファイルは `/userdata` コンテナが置き換えられたり、デプロイメントが一時停止されたりすると失われる可能性があるため、起動のたびに再ダウンロードしてください。スクリプトが export した環境変数は推論には渡されません。

`INFERENCE_UID` と `INFERENCE_GID` 推論が実行されるユーザー ID とグループ ID の数値が格納されています。これを使って、スクリプトが作成したファイルへの推論のアクセス権を付与してください。

```bash
#!/bin/bash
set -e
apt-get update
apt-get install -y --no-install-recommends curl jq python3-pip
python3 -m pip install 'humanize==4.12.3'
mkdir -p /userdata/custom-data
curl --fail --location 'https://YOUR_HOST/data.json' --output /userdata/custom-data/data.json
chown -R "$INFERENCE_UID:$INFERENCE_GID" /userdata/custom-data
```

スクリプトは最大 64 KiB で、NUL 文字を含めることはできません。

## Web アプリ

スクリプトは「Startup Script (Bash)」フィールドに入力してください。このフィールドは「Create a Dedicated Deployment」ダイアログと既存デプロイメントの設定内にあります。削除するには「Clear Script」を選択してください。

スクリプトを保存しても、実行中のコンテナは再起動されません。変更は次回コンテナが起動したときに適用されます。すぐに適用するには、デプロイメントを一時停止してから再開してください。

スクリプトの出力を読むには、デプロイメントで「View Logs」を選択し、次に新しいエントリのために「Refresh」を選択してください。このダイアログには、すべてのレプリカにわたる直近 1 時間分の最大 300 件のエントリが表示され、エントリの表示には少し時間がかかることがあります。スクリプトが出力した内容はすべてここに表示されるため、認証情報は出力しないでください。

## 失敗

各レプリカがスタートアップスクリプトに 5 回連続で失敗すると、デプロイメントは一時停止されます。成功すると、そのレプリカのカウントはリセットされます。ステータスは「Paused: Startup Script Failures」と表示されます。スクリプトを修正または削除してから、「Resume」を選択してください。受信したリクエストではデプロイメントは再開されません。

スクリプトの失敗が始まると、そのデプロイメントを作成した人とワークスペースの所有者に 1 通のメールが送信されます。同じ失敗については、デプロイメントが復旧するかスクリプトを変更するまで、Roboflow から追加のメールは送信されません。

## HTTP API

専用デプロイメントのエンドポイントは次の場所でホストされています `https://roboflow.cloud`。参照： [Dedicated Deployments](/deployment/ja/roboflow-cloud/dedicated-deployments.md#http-api) 残りについてはそちらを参照してください。

[デプロイメントを作成](/deployment/ja/roboflow-cloud/dedicated-deployments.md#create-a-deployment) はオプションの `startup_script` 文字列を本文に受け付けます。既存のデプロイメントのスクリプトを変更するには、次へ POST します `/update_startup_script`.

<mark style="color:緑;">`POST`</mark> `/update_startup_script`

<table data-search="false"><thead><tr><th width="200">名前</th><th width="120">型</th><th>説明</th><th data-type="checkbox">必須</th></tr></thead><tbody><tr><td><code>api_key</code></td><td>文字列</td><td>ワークスペースの API キー。</td><td>true</td></tr><tr><td><code>deployment_name</code></td><td>文字列</td><td>更新するデプロイメント。</td><td>true</td></tr><tr><td><code>startup_script</code></td><td>文字列</td><td>スクリプトの内容。スクリプトを削除するには空文字列を送信してください。</td><td>true</td></tr></tbody></table>

```bash
curl -X POST "https://roboflow.cloud/update_startup_script" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "'$ROBOFLOW_API_KEY'",
    "deployment_name": "my-deployment",
    "startup_script": "#!/bin/bash\nset -e\napt-get update\n"
  }'
```
