Skip to main content
Environments

Environment スキーマ

Environment オブジェクトと設定構造。

Environment オブジェクト

作成、取得、一覧、更新、アーカイブの各エンドポイントで返される構造です。
フィールド型説明
idstringEnvironment ID(env_ プレフィックス付き)
typestring固定値 "environment"
namestringEnvironment 名
descriptionstringEnvironment の説明
configEnvironment configEnvironment 設定
metadataobjectMetadata オブジェクト、デフォルト {}
archived_atstring | nullUTC アーカイブ時刻。未アーカイブ時は null
created_atstringUTC 作成時刻
updated_atstringUTC 最終更新時刻

Environment config

フィールド型必須説明
typestringはい"cloud" または "self_hosted"
packagesEnvironment packagesいいえEnvironment に関連付けられたパッケージ宣言
setup_scriptstringいいえユーザーセットアップスクリプトのテキスト。詳細は Environment setup script を参照
startup_scriptstringいいえサンドボックスの各起動時に実行するスクリプト。Environment startup script を参照
storageEnvironment storageいいえ所有する OSS バケットのマウント設定。cloud config のみ対応
self_hosted の場合、config には type と任意の setup_script、startup_script を指定できます:
{"type": "self_hosted", "setup_script": "./initialize-worker.sh"}
self_hosted config で使用できるのは type と任意の setup_script、startup_script のみです。self_hosted の startup_script は保存されてそのまま返されるだけで、実行するかどうかは外部 worker が決定します。

Environment packages

packages はパッケージマネージャーからパッケージ仕様文字列の配列へのマッピングです。リクエストでは apt、npm、pip を指定できます。Cloud Environment のレスポンスには予約済みフィールドも含まれ、省略された配列は [] として返されます。
キー型説明例
typestringレスポンスでは固定値 "packages""packages"
aptstring の配列Debian/Ubuntu システムパッケージ宣言["git", "curl", "build-essential"]
npmstring の配列Node.js パッケージ宣言["typescript@5.0.0", "eslint"]
pipstring の配列Python パッケージ宣言["pandas", "PyYAML==6.0.1"]
cargostring の配列予約済みのレスポンスフィールド。現在、このフィールドからのパッケージインストールはサポートされません[]
gemstring の配列予約済みのレスポンスフィールド。現在、このフィールドからのパッケージインストールはサポートされません[]
gostring の配列予約済みのレスポンスフィールド。現在、このフィールドからのパッケージインストールはサポートされません[]

Environment setup script

setup_script はサンドボックスの準備段階で packages のインストール完了後に実行されるシェルスクリプトで、/bin/bash -lc で実行されます。リポジトリのクローン、設定ファイルの書き込み、キャッシュのウォームアップなど、packages では表現できない初期化手順に使用します。
制約値
型string
最大長64 KB
インタープリタ/bin/bash -lc
タイムアウト10 分
実行タイミングサンドボックス準備段階、packages インストール完了後
実行成功時にはサンドボックス内に完了マーカーが書き込まれ、同一サンドボックス内では再実行されません。サンドボックスが再作成された場合は再度実行されます。 スクリプトがゼロ以外の終了ステータスで終了すると、セッションの起動が失敗します。エラーレスポンスには setup_script の終了コードと stderr の抜粋が含まれ、障害の原因を特定するのに役立ちます。
{
  "config": {
    "type": "cloud",
    "setup_script": "set -euo pipefail\n[ -d /data/workspace/repo/.git ] || git clone https://github.com/me/repo /data/workspace/repo\ncd /data/workspace/repo && pnpm install --frozen-lockfile"
  }
}

Environment startup script

startup_script はサンドボックスが起動するたびに実行される shell スクリプトです。初回起動時は setup_script の後に実行され、一時停止から再開するたびに再実行されます。データベースや dev server など、一時停止をまたいで保持されないバックグラウンドサービスの起動に使用します。 サンドボックスを一時停止して再開すると、ディスク上のファイルは保持されますが、プロセスは保持されません。結果がディスクに残る手順(依存関係のインストール、リポジトリのクローン、キャッシュの生成)は setup_script に、プロセスの起動は startup_script に記述します。
setup_scriptstartup_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 回実行されます。実行開始前に記録されるため、途中で中断されても同じ起動内では再実行されず、次回起動時に再実行されます。
スクリプトが失敗しても Session に影響せず、サンドボックスは引き続き使用できます。起動ごとに失敗すると、error.type が environment_startup_failed_error の session.error が 1 件発生します。message には終了コードと出力の末尾が含まれ、agent にも失敗が通知されます。同じ起動内では再試行されません。
{
  "config": {
    "type": "cloud",
    "packages": {"apt": ["redis-server"]},
    "startup_script": "pgrep -x redis-server || redis-server --daemonize yes\ncurl -s -o /dev/null localhost:3000 || (cd /data/workspace/repo && nohup pnpm dev > /tmp/dev.log 2>&1 &)"
  }
}

Environment storage

storage.buckets[] は、サンドボックスの /mnt/buckets/<name> にマウントする OSS バケットを宣言します。cloud config のみで使用でき、最大 8 個のバケットを指定できます。認証情報、マウント許可、権限、サンドボックス内での動作については 所有する OSS バケットのマウント(Beta)を参照してください。
フィールド型必須説明
namestringはいマウントディレクトリ名。Environment 内で一意
providerstringはい固定値 "aliyun-oss"
regionstringはいOSS リージョン ID(例:cn-hangzhou)
bucketstringはいバケット名
prefixstringいいえこのプレフィックスのみをマウント。省略するとバケット全体
accessstringいいえread_only(デフォルト)または read_write
accelerator_endpointstringいいえ<label>.oss-data-acc.aliyuncs.com
credentialobjectはい{"type":"ram_role","role_arn":"..."} または {"type":"access_key","access_key_id":"...","access_key_secret":"..."}
credential は書き込み専用です。レスポンスには type のみが返され、access_key の場合はマスク済みの access_key_id(例:LTAI****sKey)も返されます。更新時にこのフィールドを省略するか、マスク済みの値をそのまま送信すると、保存済みの認証情報が保持されます。
{
  "type": "cloud",
  "storage": {
    "buckets": [
      {
        "name": "datasets",
        "provider": "aliyun-oss",
        "region": "cn-hangzhou",
        "bucket": "my-bucket",
        "prefix": "team/data/",
        "access": "read_only",
        "credential": {"type": "ram_role", "role_arn": "acs:ram::1234567890123456:role/qoder-oss-mount"}
      }
    ]
  }
}