Environment オブジェクトと設定構造。
Environment オブジェクト
作成、取得、一覧、更新、アーカイブの各エンドポイントで返される構造です。
| フィールド | 型 | 説明 |
|---|---|---|
id | string | Environment ID(env_ プレフィックス付き) |
type | string | 固定値 "environment" |
name | string | Environment 名 |
description | string | Environment の説明 |
config | Environment config | Environment 設定 |
metadata | object | Metadata オブジェクト、デフォルト {} |
archived_at | string | null | UTC アーカイブ時刻。未アーカイブ時は null |
created_at | string | UTC 作成時刻 |
updated_at | string | UTC 最終更新時刻 |
Environment config
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
type | string | はい | "cloud" または "self_hosted" |
packages | Environment packages | いいえ | Environment に関連付けられたパッケージ宣言 |
setup_script | string | いいえ | ユーザーセットアップスクリプトのテキスト。詳細は Environment setup script を参照 |
startup_script | string | いいえ | サンドボックスの各起動時に実行するスクリプト。Environment startup script を参照 |
storage | Environment storage | いいえ | 所有する OSS バケットのマウント設定。cloud config のみ対応 |
self_hosted の場合、config には type と任意の setup_script、startup_script を指定できます:
self_hosted config で使用できるのは type と任意の setup_script、startup_script のみです。self_hosted の startup_script は保存されてそのまま返されるだけで、実行するかどうかは外部 worker が決定します。
Environment packages
packages はパッケージマネージャーからパッケージ仕様文字列の配列へのマッピングです。リクエストでは apt、npm、pip を指定できます。Cloud Environment のレスポンスには予約済みフィールドも含まれ、省略された配列は [] として返されます。
| キー | 型 | 説明 | 例 |
|---|---|---|---|
type | string | レスポンスでは固定値 "packages" | "packages" |
apt | string の配列 | Debian/Ubuntu システムパッケージ宣言 | ["git", "curl", "build-essential"] |
npm | string の配列 | Node.js パッケージ宣言 | ["typescript@5.0.0", "eslint"] |
pip | string の配列 | Python パッケージ宣言 | ["pandas", "PyYAML==6.0.1"] |
cargo | string の配列 | 予約済みのレスポンスフィールド。現在、このフィールドからのパッケージインストールはサポートされません | [] |
gem | string の配列 | 予約済みのレスポンスフィールド。現在、このフィールドからのパッケージインストールはサポートされません | [] |
go | string の配列 | 予約済みのレスポンスフィールド。現在、このフィールドからのパッケージインストールはサポートされません | [] |
Environment setup script
setup_script はサンドボックスの準備段階で packages のインストール完了後に実行されるシェルスクリプトで、/bin/bash -lc で実行されます。リポジトリのクローン、設定ファイルの書き込み、キャッシュのウォームアップなど、packages では表現できない初期化手順に使用します。
| 制約 | 値 |
|---|---|
| 型 | string |
| 最大長 | 64 KB |
| インタープリタ | /bin/bash -lc |
| タイムアウト | 10 分 |
| 実行タイミング | サンドボックス準備段階、packages インストール完了後 |
setup_script の終了コードと stderr の抜粋が含まれ、障害の原因を特定するのに役立ちます。
Environment startup script
startup_script はサンドボックスが起動するたびに実行される shell スクリプトです。初回起動時は setup_script の後に実行され、一時停止から再開するたびに再実行されます。データベースや dev server など、一時停止をまたいで保持されないバックグラウンドサービスの起動に使用します。
サンドボックスを一時停止して再開すると、ディスク上のファイルは保持されますが、プロセスは保持されません。結果がディスクに残る手順(依存関係のインストール、リポジトリのクローン、キャッシュの生成)は setup_script に、プロセスの起動は startup_script に記述します。
setup_script | startup_script | |
|---|---|---|
| 実行回数 | サンドボックスごとに 1 回 | サンドボックスの各起動時(初回起動と各再開)に 1 回 |
| 用途 | 依存関係のインストール、リポジトリのクローン、キャッシュの生成 | サービスとバックグラウンドプロセスの起動 |
| 制約 | 値 |
|---|---|
| 型 | string |
| 最大長 | 64 KB |
| インタープリター | /bin/bash -lc。作業ディレクトリと環境変数は setup_script と同じ |
| タイムアウト | 5 分 |
| 実行タイミング | サンドボックスの各起動後、最初のツールの実行前。初回起動時は setup_script の後 |
- スクリプトは終了する必要があります。常駐プロセスはバックグラウンドで実行し、出力をファイルにリダイレクトします(例:
nohup pnpm dev > /tmp/dev.log 2>&1 &)。これらのプロセスはスクリプトの正常終了後も動作し続けます。フォアグラウンドで動作して終了しないコマンドは、タイムアウトまでツール呼び出しをブロックします。 - スクリプトの終了はサービスの準備完了を意味しません。スクリプトが終了するとすぐに agent の最初のツール呼び出しが始まりますが、バックグラウンドで起動したサービスは待ち受け開始まで数秒かかる場合があります。agent がすぐにサービスを使用する必要がある場合は、スクリプトの末尾でポートが利用可能になるのを待ってから終了します(例:
for i in $(seq 30); do curl -sf -o /dev/null localhost:3000 && break; sleep 1; done)。 - タイムアウト時はスクリプトと、それが起動したバックグラウンドプロセスが停止され、失敗として扱われます。
- 再開時に以前のプロセスが動作している場合があります(一部のランタイムは一時停止中もメモリを保持)。そのため、スクリプトはサービスがすでに動作している場合に対応する必要があります(例:
pgrep -x redis-server || redis-server --daemonize yes)。スクリプトにも含まれる文字列をpgrep -fで検索しないでください。実行中の shell のコマンドラインにスクリプト全文が含まれて一致してしまい、サービスが起動されなくなります。pgrep -xでプロセス名を確認するか、サービスのポートを確認してください。 - 同じ起動内では最大 1 回実行されます。実行開始前に記録されるため、途中で中断されても同じ起動内では再実行されず、次回起動時に再実行されます。
error.type が environment_startup_failed_error の session.error が 1 件発生します。message には終了コードと出力の末尾が含まれ、agent にも失敗が通知されます。同じ起動内では再試行されません。
Environment storage
storage.buckets[] は、サンドボックスの /mnt/buckets/<name> にマウントする OSS バケットを宣言します。cloud config のみで使用でき、最大 8 個のバケットを指定できます。認証情報、マウント許可、権限、サンドボックス内での動作については 所有する OSS バケットのマウント(Beta)を参照してください。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
name | string | はい | マウントディレクトリ名。Environment 内で一意 |
provider | string | はい | 固定値 "aliyun-oss" |
region | string | はい | OSS リージョン ID(例:cn-hangzhou) |
bucket | string | はい | バケット名 |
prefix | string | いいえ | このプレフィックスのみをマウント。省略するとバケット全体 |
access | string | いいえ | read_only(デフォルト)または read_write |
accelerator_endpoint | string | いいえ | <label>.oss-data-acc.aliyuncs.com |
credential | object | はい | {"type":"ram_role","role_arn":"..."} または {"type":"access_key","access_key_id":"...","access_key_secret":"..."} |
credential は書き込み専用です。レスポンスには type のみが返され、access_key の場合はマスク済みの access_key_id(例:LTAI****sKey)も返されます。更新時にこのフィールドを省略するか、マスク済みの値をそのまま送信すると、保存済みの認証情報が保持されます。