All Products
Search
Document Center

Seri Qoder CN:Lingkungan cloud

Last Updated:Jun 07, 2026

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

id

string

ID yang dihasilkan sistem dengan awalan env_.

type

string

Ditetapkan ke "environment".

name

string

Ya

Nama lingkungan.

description

string

Tidak

Deskripsi opsional. Nilai default-nya adalah "".

config

objek

Ya

Konfigurasi lingkungan (tipe, jaringan, paket).

config.type

string

Ya

Jenis kontainer. Saat ini tetap diatur ke "cloud".

config.networking

objek

Tidak

Menentukan kebijakan jaringan. Ini harus berupa objek di mana properti type bernilai salah satu dari "unrestricted", "limited", atau "allowed_hosts".

config.packages

objek

Tidak

Konfigurasi untuk paket yang telah dipra-instal.

status

string

Status lingkungan. Selalu ready.

archived

boolean

Menunjukkan apakah lingkungan tersebut diarsipkan. Nilai default-nya adalah false.

archived_at

string|null

Timestamp arsip (ISO 8601). null jika belum diarsipkan.

created_at

string

Timestamp pembuatan (ISO 8601).

updated_at

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

{"type": "unrestricted"}

Kontainer dapat mengakses alamat eksternal apa pun.

Limited

{"type": "limited", "allow_package_managers": true}

Hanya mengizinkan akses ke layanan publik dan manajer paket yang dikenal aman.

Allowlist

{"type": "allowed_hosts", "allowed_hosts": [...]}

Membatasi akses hanya ke daftar hostname tertentu.

Bidang networking

Parameter

Tipe

Deskripsi

networking.type

string

Jenis kebijakan jaringan: unrestricted, limited, atau allowed_hosts.

networking.allow_package_managers

boolean

Apakah manajer paket (seperti pip, npm, dan apt) diizinkan mengakses internet dalam mode limited.

networking.allowed_hosts

array

Daftar hostname yang diizinkan dalam mode allowed_hosts.

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

packages.apt

Paket sistem Debian/Ubuntu.

pip

packages.pip

Paket Python.

npm

packages.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 default; tidak perlu konfigurasi tambahan.

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.