Lingkungan menentukan templat kontainer untuk sebuah session, mencakup sistem operasi, kebijakan jaringan, dan paket yang telah dipra-instal. Anda dapat membuat lingkungan berbeda untuk berbagai kasus penggunaan: lingkungan yang sangat terisolasi untuk audit keamanan, lingkungan analitik dengan pustaka data science yang telah dipra-instal, atau lingkungan pengembangan umum dengan akses jaringan tanpa batas.
Apa itu lingkungan
Lingkungan berfungsi sebagai lapisan infrastruktur untuk sebuah session:
Jenis kontainer — Saat ini mendukung
cloud(kontainer yang di-host di cloud).Kebijakan jaringan — Mengontrol akses jaringan outbound dari kontainer.
Paket — Mempra-instal paket sistem, Python, dan Node.js.
Setiap kali session dimulai, sistem akan membuat instans terisolasi berdasarkan templat lingkungan yang ditentukan.
Bidang
Parameter | Tipe | Wajib | Deskripsi |
| string | — | ID yang dihasilkan sistem dengan awalan |
| string | — | Ditetapkan ke |
| string | Ya | Nama lingkungan. |
| string | Tidak | Deskripsi opsional. Nilai default-nya adalah |
| objek | Ya | Konfigurasi lingkungan (tipe, jaringan, paket). |
| string | Ya | Jenis kontainer. Saat ini tetap diatur ke |
| objek | Tidak | Menentukan kebijakan jaringan. Ini harus berupa objek di mana properti type bernilai salah satu dari |
| objek | Tidak | Konfigurasi untuk paket yang telah dipra-instal. |
| string | — | Status lingkungan. Selalu |
| boolean | — | Menunjukkan apakah lingkungan tersebut diarsipkan. Nilai default-nya adalah |
| string|null | — | Timestamp arsip (ISO 8601). |
| string | — | Timestamp pembuatan (ISO 8601). |
| string | — | Timestamp pembaruan terakhir (ISO 8601). |
Kebijakan jaringan
Bidang config.networking mendukung tiga mode. Semua mode harus menggunakan bentuk objek; singkatan berupa string seperti "unrestricted" tidak didukung dan akan menyebabkan error 400.
Mode | Nilai | Deskripsi |
Unrestricted |
| Kontainer dapat mengakses alamat eksternal apa pun. |
Limited |
| Hanya mengizinkan akses ke layanan publik dan manajer paket yang dikenal aman. |
Allowlist |
| Membatasi akses hanya ke daftar hostname tertentu. |
Bidang networking
Parameter | Tipe | Deskripsi |
| string | Jenis kebijakan jaringan: |
| boolean | Apakah manajer paket (seperti pip, npm, dan apt) diizinkan mengakses internet dalam mode |
| array | Daftar hostname yang diizinkan dalam mode |
Mode Unrestricted
{
"config": {
"type": "cloud",
"networking": {"type": "unrestricted"}
}
}
Gunakan mode ini untuk tugas pengembangan umum yang memerlukan pengunduhan dependensi atau akses ke API eksternal.
Mode Limited
{
"config": {
"type": "cloud",
"networking": {
"type": "limited",
"allow_package_managers": true
}
}
}
Gunakan mode ini untuk tugas yang tidak memerlukan akses internet bebas, tetapi tetap perlu mengambil dependensi melalui manajer paket.
Mode Allowlist
{
"config": {
"type": "cloud",
"networking": {
"type": "allowed_hosts",
"allowed_hosts": [
"api.github.com",
"registry.npmjs.org",
"pypi.org"
]
}
}
}
Gunakan mode ini untuk skenario keamanan tinggi atau kepatuhan regulasi di mana Anda harus mengontrol secara tepat layanan eksternal mana saja yang dapat dijangkau.
Paket yang telah dipra-instal
Gunakan config.packages untuk menentukan paket yang akan dipra-instal saat kontainer dimulai:
{
"config": {
"type": "cloud",
"networking": {"type": "unrestricted"},
"packages": {
"apt": ["git", "build-essential", "libssl-dev"],
"pip": ["pandas", "numpy", "scikit-learn"],
"npm": ["typescript", "eslint", "prettier"]
}
}
}
Manajer paket | Parameter | Deskripsi |
apt |
| Paket sistem Debian/Ubuntu. |
pip |
| Paket Python. |
npm |
| Paket Node.js (diinstal secara global). |
Mempra-instal paket akan memperpanjang waktu inisialisasi lingkungan. Hanya tambahkan paket yang benar-benar Anda butuhkan; instal paket lain sesuai kebutuhan selama session berlangsung.
Membuat lingkungan
# Membuat lingkungan data science khusus
curl -s -X POST https://api.qoder.com.cn/api/v1/cloud/environments \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-d '{
"name": "data-science",
"config": {
"type": "cloud",
"networking": {"type": "unrestricted"},
"packages": {
"apt": ["build-essential"],
"pip": ["pandas", "numpy", "matplotlib", "scikit-learn", "jupyter"]
}
}
}' | jq .
Jika berhasil, API akan mengembalikan status 201 Created:
{
"id": "env_019e44eb66bb748cabcd1489f6fa4428",
"type": "environment",
"name": "data-science",
"description": "",
"config": {
"type": "cloud",
"networking": {"type": "unrestricted"},
"packages": {
"apt": ["build-essential"],
"pip": ["pandas", "numpy", "matplotlib", "scikit-learn", "jupyter"]
}
},
"status": "ready",
"archived": false,
"archived_at": null,
"created_at": "2026-05-18T10:00:00Z",
"updated_at": "2026-05-18T10:00:00Z"
}
Membuat lingkungan aman
# Membuat lingkungan aman yang hanya mengizinkan akses ke API internal
curl -s -X POST https://api.qoder.com.cn/api/v1/cloud/environments \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-d '{
"name": "secure-internal",
"config": {
"type": "cloud",
"networking": {
"type": "allowed_hosts",
"allowed_hosts": ["internal-api.mycompany.com", "git.mycompany.com"]
},
"packages": {
"apt": ["git", "curl"]
}
}
}' | jq .
Mendapatkan daftar lingkungan
# Menampilkan semua lingkungan
curl -s https://api.qoder.com.cn/api/v1/cloud/environments \
-H "Authorization: Bearer $QODER_PAT"
# Mendapatkan detail satu lingkungan
curl -s https://api.qoder.com.cn/api/v1/cloud/environments/env_ds456 \
-H "Authorization: Bearer $QODER_PAT"
Memperbarui lingkungan
# Menambahkan paket baru ke lingkungan yang sudah ada
curl -s -X PUT https://api.qoder.com.cn/api/v1/cloud/environments/env_ds456 \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-d '{
"name": "data-science",
"config": {
"type": "cloud",
"networking": {"type": "unrestricted"},
"packages": {
"apt": ["build-essential", "libpq-dev"],
"pip": ["pandas", "numpy", "matplotlib", "scikit-learn", "jupyter", "sqlalchemy"]
}
}
}' | jq .
Memperbarui lingkungan tidak memengaruhi session yang sedang berjalan. Konfigurasi baru hanya berlaku untuk session yang dibuat setelah pembaruan.
Menghapus lingkungan
# Menghapus lingkungan kustom
curl -s -X DELETE https://api.qoder.com.cn/api/v1/cloud/environments/env_ds456 \
-H "Authorization: Bearer $QODER_PAT"Jika lingkungan sedang digunakan oleh session aktif, permintaan DELETE akan gagal dengan error 409 Conflict dan pesan "Environment is in use and cannot be deleted". Untuk mengatasinya, arsipkan atau hapus session yang terkait. Atau, gunakan POST /environments/{id}/archive untuk melakukan soft delete pada lingkungan, yang melewati batasan ini.
Konfigurasi yang direkomendasikan
Skenario | Konfigurasi yang direkomendasikan |
Pengembangan umum | Gunakan lingkungan |
Analisis data | Pra-instal pandas/numpy; gunakan jaringan unrestricted. |
Audit keamanan | Gunakan allowlist untuk jaringan dan instal paket seminimal mungkin. |
Pengembangan frontend | Pra-instal alat ekosistem Node.js; izinkan akses ke registri npm. |
Integrasi CI/CD | Pra-instal CLI Git dan Docker; gunakan mode allowlist. |
FAQ
T: Berapa lama saya harus menunggu sebelum bisa menggunakan lingkungan setelah membuatnya?J: Setelah lingkungan dibuat, statusnya langsung diatur menjadi ready, sehingga Anda dapat langsung menggunakannya untuk membuat session. Inisialisasi kontainer—termasuk instalasi dependensi—terjadi saat session dimulai.T: Apakah saya bisa menentukan versi paket yang dipra-instal?J: Ya, Anda dapat menentukan versi untuk paket pip dan npm, misalnya "pandas==2.1.0" atau "typescript@5.0.0". Paket apt menggunakan versi default dari repositori sistem.T: Apa yang harus saya lakukan jika Agent gagal berjalan karena konfigurasi jaringan yang salah?J: Buat lingkungan baru atau perbarui yang sudah ada, ubah kebijakan jaringan, lalu restart session.T: Berapa jumlah maksimum lingkungan yang dapat dibuat oleh satu akun?J: Tidak ada batas ketat. Namun, kami menyarankan Anda membuat lingkungan sesuai kebutuhan aktual agar tidak mengalami masalah manajemen. Gunakan konvensi penamaan untuk mengorganisasinya.