DEV Community

Cover image for DigitalOcean API Nutzung: Cloud Infrastruktur Entwickler Anleitung
Emre Demir
Emre Demir

Posted on • Originally published at apidog.com

DigitalOcean API Nutzung: Cloud Infrastruktur Entwickler Anleitung

TL;DR

DigitalOcean APIs steuern Droplets, Volumes, Firewalls, Load Balancer, Kubernetes-Cluster und mehr. Authentifizieren Sie sich mit persönlichen Zugriffstokens, senden Sie Requests an api.digitalocean.com/v2 und beachten Sie Ratenlimits. Für Tests empfiehlt sich Apidog, um Konfigurationen zu validieren, Infrastruktur-Bereitstellungen zu prüfen und Automatisierungs-Workflows zu dokumentieren.

Testen Sie Apidog noch heute

Einführung

DigitalOcean vereinfacht Cloud Computing. Während AWS und GCP Hunderte von Diensten anbieten, konzentriert sich DigitalOcean auf das Wesentliche: Compute (Droplets), Storage (Volumes), Networking (Floating IPs, Firewalls), verwaltetes Kubernetes und die App-Plattform. Die API ist entsprechend übersichtlich.

Als Entwickler nutzen Sie die DigitalOcean API für:

  • Automatisiertes Hochfahren von Entwicklungsumgebungen
  • Verwaltung von Kubernetes-Clustern
  • Infrastructure-as-Code mit Terraform oder Pulumi
  • CI/CD-Pipeline-Bereitstellungen
  • Multi-Region-Deployments

💡 Tipp: Mit Apidog können Sie API-Aufrufe testen, Infrastruktur-Konfigurationen als Vorlagen speichern und kollaborativ an Bereitstellungs-Workflows arbeiten.

Authentifizierung

Persönliche Zugriffstokens

  1. Navigieren Sie im DigitalOcean Dashboard zu API → Neues Token generieren.
  2. Benennen Sie das Token und legen Sie die Gültigkeitsdauer fest.
  3. Kopieren und sicher speichern.

Verwendung des Tokens:

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

Antwortformat

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

Droplets (virtuelle Maschinen)

Alle Droplets auflisten

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

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"]
  }'
Enter fullscreen mode Exit fullscreen mode

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 York
  • sfo3 — San Francisco
  • ams3 — Amsterdam
  • sgp1 — Singapur

Droplet-Details abrufen

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

Ein Droplet löschen

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

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"
  }'
Enter fullscreen mode Exit fullscreen mode

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"
  }'
Enter fullscreen mode Exit fullscreen mode

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"
  }'
Enter fullscreen mode Exit fullscreen mode

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"
  }'
Enter fullscreen mode Exit fullscreen mode

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
  }'
Enter fullscreen mode Exit fullscreen mode

Volumes auflisten

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

Netzwerk

Floating IPs auflisten

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

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"
  }'
Enter fullscreen mode Exit fullscreen mode

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]
  }'
Enter fullscreen mode Exit fullscreen mode

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]
  }'
Enter fullscreen mode Exit fullscreen mode

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
      }
    ]
  }'
Enter fullscreen mode Exit fullscreen mode

Node-Pools auflisten

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

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
  }'
Enter fullscreen mode Exit fullscreen mode

Cluster löschen

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

Testen mit Apidog

Die Bereitstellung von Infrastruktur kann teuer sein. Testen Sie vor dem Anlegen von Ressourcen Ihre Konfigurationen gründlich.

Testen mit Apidog

1. Umgebung einrichten

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

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')
})
Enter fullscreen mode Exit fullscreen mode

3. Dry-Run-Konzepte

DigitalOcean bietet keinen echten Dry-Run. Sie können aber Eingaben vorab 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)
})
Enter fullscreen mode Exit fullscreen mode

Testen Sie DigitalOcean Infrastruktur-APIs mit Apidog – kostenlos.

Häufige Fehler und Behebungen

401 Nicht autorisiert

Ursache: Ungültiges oder abgelaufenes Token.

Behebung: Neues Token im Dashboard generieren. Format des Authorization-Headers prüfen.

422 Unverarbeitbare Entität

Ursache: Ungültige Parameter (z. B. falsche Region, Größe, Image).

Behebung: API-Dokumentation prüfen. Häufige Fehler:

  • Region unterstützt die angeforderte Größe nicht
  • Image-ID existiert nicht
  • Droplet-Limit erreicht

429 Zu viele Anfragen

Ursache: Ratenlimit überschritten (Standard: 2000 Requests/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')
}
Enter fullscreen mode Exit fullscreen mode

Droplet-Limit erreicht

Ursache: Zu viele Droplets im Konto.

Behebung: Nicht genutzte Droplets löschen oder Support für Limiterhöhung kontaktieren.

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 punktet bei Einfachheit – die API ist übersichtlich, die meisten Vorgänge funktionieren ohne komplexe Abhängigkeiten.

Praxisfälle

Entwicklungsumgebungen:

Ein Startup erstellt automatisiert für jeden Branch eine eigene Umgebung. Jeder Pull Request erzeugt über die API ein Droplet mit aktuellem Code. Nach dem Merge wird das Droplet zerstört. Entwickler testen damit produktionsnah ohne manuellen Aufwand.

Automatisch skalierende Webserver:

Eine Webanwendung überwacht die Auslastung. Steigt die CPU-Last über 70 %, erstellt die API neue Droplets und bindet sie in den Load Balancer ein. Sinkt die Last, werden Droplets entfernt. So bleiben die Kosten niedrig und die Performance hoch.

Datenbank-Cluster:

Ein verwalteter Datenbankdienst nutzt Volumes für Primär- und Replikadaten. Die API übernimmt Replikation, Backup-Planung und Failover-Konfiguration automatisch.

Fazit

Das haben Sie gelernt:

  • Authentifizierung mit persönlichen Zugriffstokens
  • Programmatisches Erstellen und Verwalten von Droplets
  • Arbeiten mit Volumes für persistenten Speicher
  • Konfiguration von Firewalls und Load Balancern
  • Verwaltung von Kubernetes-Clustern
  • Testen von Infrastruktur mit Apidog vor der Bereitstellung

FAQ

Wie viel kostet ein Droplet?

Ab 5 $/Monat für 1 vCPU/1 GB. Aktuelle Preise auf der Preisseite prüfen. Abrechnung pro Stunde ist möglich.

Kann ich SSH-Schlüssel mit über die API erstellten Droplets verwenden?

Ja, SSH-Schlüssel-Fingerprint im ssh_keys-Array beim Erstellen des Droplets angeben.

Was ist der Unterschied zwischen Volumes und Spaces?

Volumes = Block-Speicher, die an Droplets gehängt werden. Spaces = Objektspeicher (vergleichbar mit S3). 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"
Enter fullscreen mode Exit fullscreen mode

Kann ich ein Droplet skalieren?

Ja, Größenänderung per API. Downgrades erfordern ein Abschalten. Upgrades gehen meist live.

Was ist der Unterschied zwischen Backups und Snapshots?

Backups sind automatische wöchentliche/tägliche Sicherungen, Snapshots sind manuell erstellbare Images.

Wie lange dauert es, Droplets zu erstellen?

In der Regel 30–60 Sekunden, je nach Region und Größe.

Kann ich Terraform mit DigitalOcean verwenden?

Ja, offizieller Terraform-Provider ist verfügbar – ideal für Infrastruktur als Code.

Top comments (0)