TL;DR
DigitalOcean APIs verwalten Droplets, Volumes, Firewalls, Load Balancer, Kubernetes-Cluster und vieles mehr. Authentifizieren Sie sich mit persönlichen Zugriffstokens, rufen Sie `api.digitalocean.com/v2` auf und berücksichtigen Sie Ratenbegrenzungen. Für Tests verwenden Sie Apidog, um Konfigurationen zu validieren, die Bereitstellung der Infrastruktur zu testen und Ihre Automatisierungs-Workflows zu dokumentieren.
Einführung
DigitalOcean vereinfacht Cloud Computing. Während AWS und GCP Hunderte von Diensten anbieten, konzentriert sich DigitalOcean auf das Wesentliche: Compute (Droplets), Speicher (Volumes), Networking (Floating IPs, Firewalls), verwaltetes Kubernetes und die App-Plattform. Die API spiegelt diese Einfachheit wider.
Entwickler nutzen die API von DigitalOcean für:
- Automatisches Hochfahren von Entwicklungsumgebungen
- Verwalten von Kubernetes-Clustern
- Infrastruktur als Code mit Terraform oder Pulumi
- Bereitstellung von CI/CD-Pipelines
- Multi-Region-Bereitstellungen
Authentifizierung
Persönliche Zugriffstokens
- Gehen Sie zu DigitalOcean Dashboard → API → Neues Token generieren
- Benennen Sie das Token und legen Sie die Gültigkeitsdauer fest
- Kopieren und sicher speichern
Verwendung des Tokens:
curl -X GET "https://api.digitalocean.com/v2/account" \
-H "Authorization: Bearer YOUR_TOKEN"
Antwortformat
{
"account": {
"droplet_limit": 25,
"email": "you@example.com",
"name": "Your Name",
"uuid": "abc123xyz",
"email_verified": true,
"status": "active"
}
}
Droplets (virtuelle Maschinen)
Alle Droplets auflisten
curl -X GET "https://api.digitalocean.com/v2/droplets" \
-H "Authorization: Bearer YOUR_TOKEN"
Ein Droplet erstellen
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"]
}'
Beliebte Größen:
s-1vcpu-1gb- 1 vCPU, 1 GB RAM (5 $/Monat)s-2vcpu-2gb- 2 vCPU, 2 GB RAM (10 $/Monat)s-2vcpu-4gb- 2 vCPU, 4 GB RAM (20 $/Monat)s-4vcpu-8gb- 4 vCPU, 8 GB RAM (40 $/Monat)
Regionen:
nyc1,nyc3- New Yorksfo3- San Franciscoams3- Amsterdamsgp1- Singapur
Droplet-Details abrufen
curl -X GET "https://api.digitalocean.com/v2/droplets/DROPLET_ID" \
-H "Authorization: Bearer YOUR_TOKEN"
Ein Droplet löschen
curl -X DELETE "https://api.digitalocean.com/v2/droplets/DROPLET_ID" \
-H "Authorization: Bearer YOUR_TOKEN"
Droplet-Aktionen
Neustart:
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"
}'
Größe ändern:
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"
}'
Volumes (Block-Speicher)
Ein Volume erstellen
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"
}'
Volume an Droplet anhängen
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
}'
Volumes auflisten
curl -X GET "https://api.digitalocean.com/v2/volumes" \
-H "Authorization: Bearer YOUR_TOKEN"
Netzwerk
Floating IPs auflisten
curl -X GET "https://api.digitalocean.com/v2/floating_ips" \
-H "Authorization: Bearer YOUR_TOKEN"
Floating IP zuweisen
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"
}'
Firewall erstellen
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]
}'
Load Balancer
Einen Load Balancer erstellen
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]
}'
Kubernetes-Cluster
Einen Kubernetes-Cluster erstellen
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
}
]
}'
Node-Pools auflisten
curl -X GET "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/node_pools" \
-H "Authorization: Bearer YOUR_TOKEN"
Node-Pool skalieren
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
}'
Cluster löschen
curl -X DELETE "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID" \
-H "Authorization: Bearer YOUR_TOKEN"
Testen mit Apidog
Die Bereitstellung von Infrastruktur ist kostspielig. Testen Sie gründlich, bevor Sie Ressourcen erstellen.

1. Umgebung einrichten
DIGITALOCEAN_TOKEN: your_token
BASE_URL: https://api.digitalocean.com/v2
DEFAULT_REGION: nyc1
DEFAULT_SIZE: s-2vcpu-4gb
2. Antworten validieren
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. Dry-Run-Konzepte
DigitalOcean bietet keine echten Dry Runs, aber Sie können Eingaben validieren:
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)
})
Testen Sie DigitalOcean Infrastruktur-APIs mit Apidog - kostenlos
Häufige Fehler und Behebungen
401 Nicht autorisiert
Ursache: Ungültiges oder abgelaufenes Token.
Behebung: Generieren Sie Ihr Token im Dashboard neu. Überprüfen Sie das Format des Authorization-Headers.
422 Unverarbeitbare Entität
Ursache: Ungültige Parameter (falsche Region, Größe, Image usw.).
Behebung: Überprüfen Sie die API-Dokumentation von DigitalOcean auf gültige Werte. Häufige Probleme:
- Region unterstützt die angeforderte Größe nicht
- Image-ID existiert nicht
- Droplet-Limit erreicht
429 Zu viele Anfragen
Ursache: Ratenbegrenzung überschritten (standardmäßig 2000 Anfragen/Stunde).
Behebung: Backoff implementieren:
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')
}
Droplet-Limit erreicht
Ursache: Konto hat zu viele Droplets.
Behebung: Löschen Sie ungenutzte Droplets oder bitten Sie den Support um eine Limiterhöhung.
Alternativen und Vergleiche
| Funktion | DigitalOcean | AWS | GCP |
|---|---|---|---|
| Droplet-Größen | Fest | Benutzerdefiniert | Benutzerdefiniert |
| Kubernetes | Verwaltetes DOKS | EKS | GKE |
| Objektspeicher | Spaces | S3 | Cloud Storage |
| Block-Speicher | Volumes | EBS | Persistent Disk |
| Load Balancer | Integriert | ELB | Cloud Load Balancing |
| Kostenlose Stufe | 200 $ Guthaben | Begrenzt | 300 $ Guthaben |
| API-Einfachheit | ★★★★★ | ★★☆☆☆ | ★★★☆☆ |
DigitalOcean gewinnt in puncto Einfachheit. Die API ist unkompliziert, und die meisten Operationen funktionieren, ohne sich mit Dutzenden von verschachtelten Diensten auseinandersetzen zu müssen.
Praxisfälle
Entwicklungsumgebungen. Ein Startup erstellt isolierte Entwicklungsumgebungen pro Branch. Jeder Pull Request löst API-Aufrufe aus, um ein Droplet mit dem neuesten Code zu erstellen. Nach dem Merge wird das Droplet zerstört. Entwickler testen in produktionsähnlichen Umgebungen ohne manuelle Einrichtung.
Automatisch skalierende Webserver. Eine Webanwendung überwacht die Auslastung. Wenn die CPU 70 % überschreitet, erstellt die API neue Droplets und fügt sie dem Load Balancer hinzu. Wenn die Last sinkt, werden Droplets zerstört. Die Kosten bleiben niedrig, während die Leistung hoch bleibt.
Datenbank-Cluster. Ein verwalteter Datenbankdienst stellt primäre und Replika-Volumes regionsübergreifend bereit. Die API übernimmt automatisch die Replikationskonfiguration, die Sicherungsplanung und die Failover-Einrichtung.
Fazit
Das haben Sie gelernt:
- Authentifizieren Sie sich mit persönlichen Zugriffstokens
- Droplets programmgesteuert erstellen und verwalten
- Mit Volumes für persistenten Speicher arbeiten
- Firewalls und Load Balancer konfigurieren
- Kubernetes-Cluster verwalten
- Infrastruktur mit Apidog testen, bevor sie bereitgestellt wird
FAQ
Wie viel kostet ein Droplet?Die Preise beginnen bei 5 $/Monat für 1 vCPU/1 GB. Überprüfen Sie die Preisseite für aktuelle Tarife. Abrechnung pro Stunde ist verfügbar.
Kann ich SSH-Schlüssel mit über die API erstellten Droplets verwenden?Ja. Fügen Sie den SSH-Schlüssel-Fingerprint in das `ssh_keys`-Array ein, wenn Sie Droplets erstellen.
Was ist der Unterschied zwischen Volumes und Spaces?Volumes sind Block-Speicher, die an Droplets angehängt werden. Spaces sind Objektspeicher (wie S3). Verwenden Sie Volumes für Datenbanken, Spaces für Dateien.
Wie erhalte ich die Kubernetes-Konfiguration?
curl -X GET "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/kubeconfig" \
-H "Authorization: Bearer YOUR_TOKEN"
Kann ich ein Droplet skalieren?Ja, verwenden Sie die Aktion zur Größenänderung. Downgrades erfordern ein Ausschalten. Upgrades können während des Betriebs durchgeführt werden.
Was ist der Unterschied zwischen Backups und Snapshots?Backups sind automatische wöchentliche/tägliche Kopien, die von DigitalOcean verwaltet werden. Snapshots sind manuelle, bei Bedarf erstellte Images, die Sie erstellen.
Wie lange dauert es, Droplets zu erstellen?Normalerweise 30-60 Sekunden. Einige Regionen und Größen können länger dauern.
Kann ich Terraform mit DigitalOcean verwenden?Ja. DigitalOcean hat einen offiziellen Terraform-Provider. Er eignet sich hervorragend für Infrastruktur als Code.
