TL;DR
Les API DigitalOcean permettent de gérer Droplets, volumes, pare-feu, équilibreurs de charge, clusters Kubernetes, etc. Pour automatiser ces opérations : authentifiez-vous avec un jeton d’accès personnel, appelez api.digitalocean.com/v2 et tenez compte des limites de débit. Pour tester et documenter vos workflows, validez vos requêtes via Apidog.
Introduction
DigitalOcean simplifie le cloud computing. Contrairement à AWS et GCP qui offrent des centaines de services, DigitalOcean se concentre sur l’essentiel : calcul (droplets), stockage (volumes), réseau (IP flottantes, pare-feu), Kubernetes managé et plateforme d’applications. Son API reflète cette simplicité.
Essayez Apidog dès aujourd’hui
Utilisations courantes de l’API DigitalOcean :
- Déploiement automatisé d’environnements de développement
- Gestion de clusters Kubernetes
- Infrastructure as code avec Terraform/Pulumi
- Provisionnement CI/CD
- Déploiements multi-régions
💡
Si vous automatisez l'infrastructure, Apidog vous aide à tester les appels d'API, à enregistrer les configurations d'infrastructure en tant que modèles réutilisables et à collaborer avec votre équipe sur les flux de travail de provisionnement.
Authentification
Jetons d’accès personnels
- Accédez au Dashboard DigitalOcean → API → Générez un nouveau jeton.
- Nommez le jeton et définissez l’expiration.
- Copiez et stockez-le en lieu sûr.
Utilisation du jeton :
curl -X GET "https://api.digitalocean.com/v2/account" \
-H "Authorization: Bearer YOUR_TOKEN"
Format de la réponse
{
"account": {
"droplet_limit": 25,
"email": "you@example.com",
"name": "Your Name",
"uuid": "abc123xyz",
"email_verified": true,
"status": "active"
}
}
Droplets (machines virtuelles)
Lister tous les Droplets
curl -X GET "https://api.digitalocean.com/v2/droplets" \
-H "Authorization: Bearer YOUR_TOKEN"
Créer un 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"]
}'
Tailles populaires :
-
s-1vcpu-1gb– 1 vCPU, 1 Go RAM (5 $/mois) -
s-2vcpu-2gb– 2 vCPU, 2 Go RAM (10 $/mois) -
s-2vcpu-4gb– 2 vCPU, 4 Go RAM (20 $/mois) -
s-4vcpu-8gb– 4 vCPU, 8 Go RAM (40 $/mois)
Régions :
-
nyc1,nyc3– New York -
sfo3– San Francisco -
ams3– Amsterdam -
sgp1– Singapour
Obtenir les détails d’un Droplet
curl -X GET "https://api.digitalocean.com/v2/droplets/DROPLET_ID" \
-H "Authorization: Bearer YOUR_TOKEN"
Supprimer un Droplet
curl -X DELETE "https://api.digitalocean.com/v2/droplets/DROPLET_ID" \
-H "Authorization: Bearer YOUR_TOKEN"
Actions sur les Droplets
Redémarrage :
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"
}'
Redimensionner :
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"
}'
Instantané :
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 (stockage par blocs)
Créer un 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"
}'
Attacher un volume à un 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
}'
Lister les volumes
curl -X GET "https://api.digitalocean.com/v2/volumes" \
-H "Authorization: Bearer YOUR_TOKEN"
Réseau
Lister les IPs flottantes
curl -X GET "https://api.digitalocean.com/v2/floating_ips" \
-H "Authorization: Bearer YOUR_TOKEN"
Attribuer une IP flottante
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"
}'
Créer un pare-feu
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]
}'
Équilibreurs de charge
Créer un équilibreur de charge
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]
}'
Clusters Kubernetes
Créer un cluster 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
}
]
}'
Lister les pools de nœuds
curl -X GET "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/node_pools" \
-H "Authorization: Bearer YOUR_TOKEN"
Mettre à l’échelle un pool de nœuds
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
}'
Supprimer le cluster
curl -X DELETE "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID" \
-H "Authorization: Bearer YOUR_TOKEN"
Tests avec Apidog
Le provisionnement d’infrastructure coûte cher. Testez vos appels API avant de créer des ressources.
1. Configuration de l’environnement
DIGITALOCEAN_TOKEN: your_token
BASE_URL: https://api.digitalocean.com/v2
DEFAULT_REGION: nyc1
DEFAULT_SIZE: s-2vcpu-4gb
2. Valider les réponses
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. Concepts de "dry run" (simulation)
DigitalOcean ne propose pas de "dry run" natif, mais validez vos entrées avant appel :
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)
})
Testez gratuitement les API d’infrastructure DigitalOcean avec Apidog.
Erreurs courantes et correctifs
401 Non autorisé
Cause : Jeton invalide ou expiré.
Correctif : Régénérez le jeton dans le dashboard. Vérifiez l’en-tête d’autorisation.
422 Entité non traitable
Cause : Paramètres invalides (région, taille, image…).
Correctif : Consultez la documentation DigitalOcean pour les valeurs valides.
Problèmes courants :
- Taille non supportée dans la région
- ID d’image inexistant
- Limite de Droplets atteinte
429 Trop de requêtes
Cause : Limite de débit dépassée (2000 req/h par défaut).
Correctif : Implémentez un "backoff" exponentiel :
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')
}
Limite de Droplets atteinte
Cause : Trop de Droplets sur le compte.
Correctif : Supprimez les Droplets inutilisés ou demandez une augmentation de limite au support.
Alternatives et comparaisons
| Fonctionnalité | DigitalOcean | AWS | GCP |
|---|---|---|---|
| Tailles de Droplets | Fixes | Personnalisées | Personnalisées |
| Kubernetes | DOKS Géré | EKS | GKE |
| Stockage objet | Spaces | S3 | Cloud Storage |
| Stockage par blocs | Volumes | EBS | Persistent Disk |
| Équilibreurs de charge | Intégrés | ELB | Cloud Load Balancing |
| Tier gratuit | 200 $ de crédit | Limité | 300 $ de crédit |
| Simplicité de l'API | ★★★★★ | ★★☆☆☆ | ★★★☆☆ |
DigitalOcean se distingue par la simplicité : l’API est directe, la plupart des opérations sont immédiates, sans empilement de services.
Cas d’utilisation réels
Environnements de développement.
Automatisez la création de Droplets par branche : chaque PR déclenche la création d’un Droplet avec le code à tester, détruit à la fusion. Les développeurs travaillent dans des environnements semblables à la prod, sans intervention manuelle.
Serveurs web à scalabilité automatique.
Surveillez la charge CPU. Si >70 %, créez de nouveaux Droplets et ajoutez-les à l’équilibreur de charge ; diminuez le nombre si la charge baisse. Coûts maîtrisés, performances assurées.
Clusters de bases de données.
Provisionnez volumes principaux et de réplication dans plusieurs régions. L’API gère la réplication, les sauvegardes et le basculement.
Conclusion
Points clés :
- Authentification par jeton d’accès personnel
- Création/gestion de Droplets par API
- Gestion de volumes pour le stockage persistant
- Configuration pare-feu et équilibreurs de charge
- Gestion de clusters Kubernetes
- Tests d’infrastructure avec Apidog avant provisionnement
FAQ
Combien coûte un Droplet ?
À partir de 5 $/mois pour 1 vCPU/1 Go. Voir la page des tarifs pour les prix actuels. Facturation horaire disponible.
Puis-je utiliser des clés SSH avec les Droplets créés via l’API ?
Oui. Ajoutez l’empreinte SSH dans le tableau ssh_keys lors de la création du Droplet.
Différence entre volumes et Spaces ?
Les volumes = stockage bloc attaché aux Droplets.
Spaces = stockage objet (S3-like).
Utilisez les volumes pour les bases de données, les Spaces pour les fichiers.
Comment obtenir la configuration Kubernetes ?
curl -X GET "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/kubeconfig" \
-H "Authorization: Bearer YOUR_TOKEN"
Puis-je redimensionner un Droplet ?
Oui. La réduction nécessite un arrêt, l’augmentation peut se faire à chaud.
Différence entre sauvegardes et instantanés ?
Sauvegardes : snapshots automatiques gérés (hebdo/quotidien).
Instantanés : images manuelles, à la demande.
Combien de temps pour créer un Droplet ?
En général 30 à 60 secondes.
Puis-je utiliser Terraform avec DigitalOcean ?
Oui, il existe un provider Terraform officiel. Idéal pour l’infrastructure as code.

Top comments (0)