Panduan Developer: Cara Menggunakan DigitalOcean API untuk Infrastruktur Cloud

Ashley Innocent

Ashley Innocent

24 March 2026

Panduan Developer: Cara Menggunakan DigitalOcean API untuk Infrastruktur Cloud

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

TL;DR

API DigitalOcean mengelola droplet, volume, firewall, penyeimbang beban, klaster Kubernetes, dan lainnya. Autentikasi dengan token akses pribadi, panggil api.digitalocean.com/v2, dan tangani batas laju. Untuk pengujian, gunakan Apidog untuk memvalidasi konfigurasi, menguji penyediaan infrastruktur, dan mendokumentasikan alur kerja otomatisasi Anda.

Pengantar

DigitalOcean menyederhanakan komputasi awan. Sementara AWS dan GCP menawarkan ratusan layanan, DigitalOcean berfokus pada hal-hal penting: komputasi (droplet), penyimpanan (volume), jaringan (IP mengambang, firewall), Kubernetes terkelola, dan platform aplikasi. API-nya sesuai dengan kesederhanaan ini.

Pengembang menggunakan API DigitalOcean untuk:

💡
Jika Anda mengotomatiskan infrastruktur, Apidog membantu Anda menguji panggilan API, menyimpan konfigurasi infrastruktur sebagai templat yang dapat digunakan kembali, dan berkolaborasi dengan tim Anda dalam alur kerja penyediaan.
tombol

Autentikasi

Token akses pribadi

  1. Buka DigitalOcean Dashboard → API → Generate New Token
  2. Beri nama token dan atur masa berlaku
  3. Salin dan simpan dengan aman

Menggunakan token:

curl -X GET "https://api.digitalocean.com/v2/account" \
  -H "Authorization: Bearer YOUR_TOKEN"

Format respons

{
  "account": {
    "droplet_limit": 25,
    "email": "you@example.com",
    "name": "Your Name",
    "uuid": "abc123xyz",
    "email_verified": true,
    "status": "active"
  }
}

Droplet (mesin virtual)

Daftar semua droplet

curl -X GET "https://api.digitalocean.com/v2/droplets" \
  -H "Authorization: Bearer YOUR_TOKEN"

Buat droplet

curl -X POST "https://api.digitalocean.com/v2/droplets" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-droplet",
    "region": "nyc1",
    "size": "s-2vcpu-4gb",
    "image": "ubuntu-20-04-x64",
    "ssh_keys": ["ssh-rsa AAAA..."],
    "backups": false,
    "ipv6": true,
    "tags": ["web", "production"]
  }'

Ukuran populer:

Wilayah:

Dapatkan detail droplet

curl -X GET "https://api.digitalocean.com/v2/droplets/DROPLET_ID" \
  -H "Authorization: Bearer YOUR_TOKEN"

Hapus droplet

curl -X DELETE "https://api.digitalocean.com/v2/droplets/DROPLET_ID" \
  -H "Authorization: Bearer YOUR_TOKEN"

Tindakan droplet

Reboot:

curl -X POST "https://api.digitalocean.com/v2/droplets/DROPLET_ID/actions" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "reboot"
  }'

Ubah ukuran:

curl -X POST "https://api.digitalocean.com/v2/droplets/DROPLET_ID/actions" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "resize",
    "size": "s-4vcpu-8gb"
  }'

Snapshot:

curl -X POST "https://api.digitalocean.com/v2/droplets/DROPLET_ID/actions" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "snapshot",
    "name": "my-snapshot"
  }'

Volume (penyimpanan blok)

Buat volume

curl -X POST "https://api.digitalocean.com/v2/volumes" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "size_gigabytes": 100,
    "name": "my-volume",
    "region": "nyc1",
    "description": "Data volume for web servers"
  }'

Lampirkan volume ke droplet

curl -X POST "https://api.digitalocean.com/v2/volumes/VOLUME_ID/actions" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "attach",
    "droplet_id": DROPLET_ID
  }'

Daftar volume

curl -X GET "https://api.digitalocean.com/v2/volumes" \
  -H "Authorization: Bearer YOUR_TOKEN"

Jaringan

Daftar IP mengambang

curl -X GET "https://api.digitalocean.com/v2/floating_ips" \
  -H "Authorization: Bearer YOUR_TOKEN"

Tetapkan IP mengambang

curl -X POST "https://api.digitalocean.com/v2/floating_ips" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "droplet_id": DROPLET_ID,
    "region": "nyc1"
  }'

Buat firewall

curl -X POST "https://api.digitalocean.com/v2/firewalls" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "web-firewall",
    "inbound_rules": [
      {
        "protocol": "tcp",
        "ports": "80",
        "sources": {
          "addresses": ["0.0.0.0/0"]
        }
      },
      {
        "protocol": "tcp",
        "ports": "443",
        "sources": {
          "addresses": ["0.0.0.0/0"]
        }
      },
      {
        "protocol": "tcp",
        "ports": "22",
        "sources": {
          "addresses": ["your-ip/32"]
        }
      }
    ],
    "outbound_rules": [
      {
        "protocol": "tcp",
        "ports": "80",
        "destinations": {
          "addresses": ["0.0.0.0/0"]
        }
      }
    ],
    "droplet_ids": [DROPLET_ID]
  }'

Penyeimbang beban

Buat penyeimbang beban

curl -X POST "https://api.digitalocean.com/v2/load_balancers" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-lb",
    "region": "nyc1",
    "algorithm": "round_robin",
    "health_check": {
      "protocol": "http",
      "port": 80,
      "path": "/",
      "check_interval_seconds": 10,
      "response_timeout_seconds": 5,
      "healthy_threshold": 3,
      "unhealthy_threshold": 3
    },
    "forwarding_rules": [
      {
        "entry_protocol": "http",
        "entry_port": 80,
        "target_protocol": "http",
        "target_port": 80
      },
      {
        "entry_protocol": "https",
        "entry_port": 443,
        "target_protocol": "https",
        "target_port": 443,
        "tls_passthrough": true
      }
    ],
    "droplet_ids": [DROPLET_ID_1, DROPLET_ID_2]
  }'

Klaster Kubernetes

Buat klaster Kubernetes

curl -X POST "https://api.digitalocean.com/v2/kubernetes/clusters" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-cluster",
    "region": "nyc1",
    "version": "1.28",
    "node_pools": [
      {
        "name": "worker-pool",
        "size": "s-2vcpu-4gb",
        "count": 3,
        "auto_scale": true,
        "min_nodes": 2,
        "max_nodes": 6
      }
    ]
  }'

Daftar kumpulan node

curl -X GET "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/node_pools" \
  -H "Authorization: Bearer YOUR_TOKEN"

Skalakan kumpulan node

curl -X PUT "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/node_pools/POOL_ID" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "count": 5
  }'

Hapus klaster

curl -X DELETE "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID" \
  -H "Authorization: Bearer YOUR_TOKEN"

Pengujian dengan Apidog

Penyediaan infrastruktur mahal. Uji secara menyeluruh sebelum membuat sumber daya.

Variabel lingkungan Apidog

1. Penyiapan lingkungan

DIGITALOCEAN_TOKEN: your_token
BASE_URL: https://api.digitalocean.com/v2
DEFAULT_REGION: nyc1
DEFAULT_SIZE: s-2vcpu-4gb

2. Validasi respons

pm.test('Droplet created successfully', () => {
  const response = pm.response.json()
  pm.expect(response.droplet).to.have.property('id')
  pm.expect(response.droplet.status).to.eql('new')
})

pm.test('Token is valid', () => {
  const response = pm.response.json()
  pm.expect(response.account).to.exist
  pm.expect(response.account.status).to.eql('active')
})

3. Konsep uji coba

DigitalOcean tidak menawarkan uji coba yang sebenarnya, tetapi Anda dapat memvalidasi masukan:

const validRegions = ['nyc1', 'sfo3', 'ams3', 'sgp1']
const validSizes = ['s-1vcpu-1gb', 's-2vcpu-2gb', 's-2vcpu-4gb']

pm.test('Region is valid', () => {
  const requestBody = JSON.parse(pm.request.body.raw)
  pm.expect(validRegions).to.include(requestBody.region)
})

pm.test('Size is valid', () => {
  const requestBody = JSON.parse(pm.request.body.raw)
  pm.expect(validSizes).to.include(requestBody.size)
})

Uji API infrastruktur DigitalOcean dengan Apidog - gratis

Kesalahan umum dan perbaikan

401 Tidak Sah

Penyebab: Token tidak valid atau kedaluwarsa.

Perbaikan: Buat ulang token Anda dari dasbor. Periksa format header Otorisasi.

422 Entitas Tidak Dapat Diproses

Penyebab: Parameter tidak valid (wilayah, ukuran, gambar yang salah, dll.).

Perbaikan: Periksa dokumentasi API DigitalOcean untuk nilai yang valid. Masalah umum:

429 Terlalu Banyak Permintaan

Penyebab: Batas laju terlampaui (standar 2000 permintaan/jam).

Perbaikan: Terapkan backoff:

async function doRequest(url, options, retries = 3) {
  for (let i = 0; i < retries; i++) {
    const response = await fetch(url, options)
    if (response.status === 429) {
      await sleep(Math.pow(2, i) * 1000)
      continue
    }
    return response
  }
  throw new Error('Rate limited')
}

Batas droplet tercapai

Penyebab: Akun memiliki terlalu banyak droplet.

Perbaikan: Hapus droplet yang tidak digunakan atau minta peningkatan batas dari dukungan.

Alternatif dan perbandingan

Fitur DigitalOcean AWS GCP
Ukuran droplet Tetap Kustom Kustom
Kubernetes DOKS Terkelola EKS GKE
Penyimpanan objek Spaces S3 Cloud Storage
Penyimpanan blok Volume EBS Persistent Disk
Penyeimbang beban Bawaan ELB Cloud Load Balancing
Tingkat gratis Kredit $200 Terbatas Kredit $300
Kesederhanaan API ★★★★★ ★★☆☆☆ ★★★☆☆

DigitalOcean unggul dalam kesederhanaan. API-nya mudah, dan sebagian besar operasi berfungsi tanpa harus berurusan dengan puluhan layanan bertingkat.

Kasus penggunaan dunia nyata

Lingkungan pengembangan. Sebuah startup membuat lingkungan dev yang terisolasi per cabang. Setiap PR memicu panggilan API untuk membuat droplet dengan kode terbaru. Setelah digabungkan, droplet dihancurkan. Pengembang menguji di lingkungan seperti produksi tanpa penyiapan manual.

Server web yang otomatis skalabel. Aplikasi web memantau beban. Ketika CPU melebihi 70%, API membuat droplet baru dan menambahkannya ke penyeimbang beban. Ketika beban menurun, droplet dihancurkan. Biaya tetap rendah sementara kinerja tetap tinggi.

Klaster database. Layanan database terkelola menyediakan volume primer dan replika di seluruh wilayah. API menangani konfigurasi replikasi, penjadwalan pencadangan, dan penyiapan failover secara otomatis.

Kesimpulan

Berikut adalah apa yang telah Anda pelajari:

tombol

FAQ

Berapa biaya droplet?Harga mulai dari $5/bulan untuk 1 vCPU/1GB. Periksa halaman harga untuk tarif saat ini. Penagihan per jam tersedia.

Bisakah saya menggunakan kunci SSH dengan droplet yang dibuat API?Ya. Sertakan sidik jari kunci SSH dalam array ssh_keys saat membuat droplet.

Apa perbedaan antara volume dan Spaces?Volume adalah penyimpanan blok yang terpasang pada droplet. Spaces adalah penyimpanan objek (seperti S3). Gunakan volume untuk database, Spaces untuk file.

Bagaimana cara mendapatkan konfigurasi Kubernetes?

curl -X GET "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/kubeconfig" \
  -H "Authorization: Bearer YOUR_TOKEN"

Bisakah saya mengubah ukuran droplet?Ya, gunakan tindakan ubah ukuran. Penurunan versi memerlukan pematian. Peningkatan versi dapat dilakukan saat berjalan.

Apa perbedaan antara pencadangan (backup) dan snapshot?Pencadangan adalah salinan otomatis mingguan/harian yang dikelola oleh DigitalOcean. Snapshot adalah gambar manual sesuai permintaan yang Anda buat.

Berapa lama waktu yang dibutuhkan untuk membuat droplet?Biasanya 30-60 detik. Beberapa wilayah dan ukuran mungkin membutuhkan waktu lebih lama.

Bisakah saya menggunakan Terraform dengan DigitalOcean?Ya. DigitalOcean memiliki penyedia Terraform resmi. Ini sangat baik untuk infrastruktur sebagai kode.

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.

Panduan Developer: Cara Menggunakan DigitalOcean API untuk Infrastruktur Cloud