Intégrateur DigitalOcean API, du provisioning au service réellement prêt
DigitalOcean API v2 peut créer rapidement une ressource, mais sa réponse ne prouve ni la fin d’une action asynchrone, ni la disponibilité de l’application, ni son classement dans le bon Project. Dawap relie demande, URN, action, réseau et contrôle consommateur pour rendre le workflow exploitable.
Réponse courte
Créer un Droplet ne suffit pas : le service doit être prêt depuis son vrai consommateur.
Dawap connecte DigitalOcean à un portail, une CMDB, un pipeline ou un outil de run en conservant token et scopes, Project ID, URN, action ID, Droplet ID, réseau et preuve d’usage. Aucun projet client DigitalOcean nommé n’est publié : les références plus bas démontrent des garde-fous adjacents, pas une réalisation DigitalOcean.
- Borner chaque token par scopes et tester les refus hors périmètre.
- Assigner chaque ressource au Project attendu par son URN, sans dépendre du projet par défaut.
- Suivre l’action asynchrone puis vérifier IP, firewall, cloud-init et service depuis le consommateur.
Du 202 au service utilisable
Cinq preuves avant de dire « le Droplet est prêt ».
Cette chaîne de readiness suit l’action DigitalOcean, l’affectation Project, le réseau, cloud-init et le contrôle applicatif. Chaque étape a son identifiant et son propre propriétaire de reprise.
Signaux DigitalOcean
Trois raccourcis qui ferment le ticket avant que le service soit prêt
Le plan de contrôle, l’action, la ressource et l’application ont chacun leur propre état. Le workflow doit traverser les quatre.
Completed est traité comme un healthcheck
Cloud-init, réseau, firewall et processus applicatif peuvent encore être indisponibles.
Le Droplet reste rangé dans le projet par défaut
Sans affectation et relecture par URN, owner, coût et inventaire deviennent faux.
Un tag étend silencieusement la portée d’un firewall
Les règles cumulées s’appliquent aussi aux futurs Droplets qui reçoivent ce tag.
Architecture DigitalOcean API
Un Droplet créé n’est pas encore une application disponible
Le connecteur porte plusieurs horloges : réponse HTTP, action DigitalOcean, état de la ressource, initialisation de l’OS et disponibilité du service. Il conserve leurs identifiants et leurs preuves au lieu de réduire le parcours à un unique succès API.
Token et scopes minimaux
Utiliser un bearer token dédié au workflow, avec les scopes précis de lecture, création, mise à jour ou suppression. Le refus hors scope fait partie de la recette et les secrets ne passent jamais dans les logs.
Project et URN explicites
Un Project organise les ressources ; il ne remplace pas les permissions du token. Conserver Project ID et URN au format do:resource_type:resource_id, puis relire l’affectation après création.
Action asynchrone suivie
Une action Droplet retourne avant la fin du traitement. Persister action ID, resource ID et transitions in-progress, completed ou errored ; un Droplet verrouillé peut refuser une nouvelle action en 422.
Readiness au-delà du cloud
Après completed, vérifier statut, adresses, volumes, cloud-init, DNS éventuel, port et réponse applicative. Le signal de clôture appartient au service attendu, pas seulement au plan de contrôle.
Firewall à portée dynamique
Les règles peuvent cibler des Droplet IDs ou des tags. Un nouveau Droplet portant un tag attaché hérite des règles ; si plusieurs firewalls s’appliquent, l’union de leurs autorisations doit être auditée.
Spaces n’est pas API v2
Spaces expose une API partiellement compatible S3, un endpoint lié à la région et des clés dédiées signées en SigV4. Token API v2 et paire access/secret Spaces ne sont pas interchangeables.
Méthode
On dessine d’abord demande–Project–URN–action–service sur un seul parcours
Le pilote refuse un scope manquant, vérifie l’affectation Project, provoque un conflit ou un 429 contrôlé, résout une réponse perdue sans recréer et ne clôt qu’après le test consommateur. Firewalls et Spaces ont chacun une recette dédiée.
Décision 1
Autorité minimale démontrée
Décision 2
Project et owner sans ambiguïté
Décision 3
Action asynchrone observable
Décision 4
Readiness applicative prouvée
Premier lot DigitalOcean
Provisionner un Droplet non critique et prouver le service attendu.
On impose Project ID, région, image, taille, réseau et tags, on teste un refus de scope, puis on suit l’action jusqu’à son état terminal avant de contrôler le firewall, cloud-init et le service depuis un consommateur distinct.
Sorties concrètes
Matrice Team × token/scopes × Project × région × type de ressource × owner.
Contrat operation key, URN, resource ID, action ID, état terminal et readiness applicative.
Recette 400, 401, 403, 404, 409, 422, 429, timeout, réponse perdue et retry.
Nettoyage du pilote, journal de décision, métriques de délai et runbook de reprise.
Recette DigitalOcean API
Trois contre-tests qui empêchent les faux succès de provisioning
La recette cible les pièges distinctifs : action terminée sans service prêt, ressource rangée dans le mauvais Project et firewall étendu par un tag sans revue.
L’action est completed, mais l’application ne répond pas
DigitalOcean a fini l’action de création ou de redémarrage. Pourtant cloud-init peut encore travailler, le port peut être fermé ou le service en erreur. Relancer la création sur timeout risquerait en plus de produire un second Droplet.
- Entrée
- Operation key interne, request, Droplet ID, action ID, status, locked, timestamps, IP, VPC, firewall, cloud-init, port, healthcheck, erreur et décision de reprise.
- Sortie
- Machine d’états séparant API, action, ressource et service ; recherche avant retry ; timeout borné ; réparation ou nettoyage explicite.
- Décision
- Ne jamais clore ni recréer sur le seul statut completed sans relecture et contrôle consommateur.
Le Droplet existe, mais il est resté dans le Project par défaut
Les ressources DigitalOcean commencent dans un Project par défaut lorsqu’aucune affectation explicite n’est portée. Un provisioning techniquement réussi peut donc fausser coût, owner et inventaire du projet métier.
- Entrée
- Team, Project ID attendu, Project par défaut, URN, Droplet ID, assigned_at, status d’affectation, owner, tags, coût, pages lues et date de fraîcheur.
- Sortie
- Affectation explicite par URN, relecture des ressources du Project, pagination complète et alerte sur toute cible restée au défaut.
- Décision
- Ne pas publier la ressource dans le catalogue tant que son URN n’est pas relue dans le Project attendu.
Un nouveau tag ouvre un accès réseau non prévu
Un firewall attaché au tag frontend couvre aussi tout nouveau Droplet qui reçoit ce tag. Si un autre firewall autorise davantage de trafic, l’union des règles s’applique et peut élargir l’exposition effective.
- Entrée
- Firewall ID, règles inbound/outbound, sources/destinations, Droplet IDs, tags, VPC, firewalls cumulés, ports effectifs, changement de tag et approbateur.
- Sortie
- Diff avant/après, simulation d’appartenance dynamique, contrôle de l’union des règles, alerte sur élargissement et procédure de retrait.
- Décision
- Traiter toute modification de tag comme un changement réseau lorsqu’un firewall référence ce tag.
Maillage API
Poursuivre dans le bon univers API
Ces liens permettent de repartir vers la page principale ou vers les univers proches quand le besoin dépasse le seul connecteur.
Avis & exigence projet
Ce que l’on sécurise avec DigitalOcean API
Team, Project ID, région, URN et resource ID restent corrélés.
Token/scopes API v2 et clés Spaces sont séparés, rotés et testés.
Action, Droplet, réseau, service, incident et reprise ne sont pas confondus.
Questions d’achat
Questions fréquentes sur l’intégration DigitalOcean API
Questions fréquentes sur DigitalOcean API v2, tokens, scopes, Projects, URN, Droplets, actions, firewalls, Spaces et reprise.
01Comment authentifier une intégration DigitalOcean API v2 ?
Les appels HTTPS utilisent un bearer token personnel ou OAuth. Pour un flux durable, on dédie le token, sélectionne les scopes de ressource et d’action strictement nécessaires, teste les refus et organise rotation puis révocation sans journaliser le secret.
02Pourquoi suivre une action après la création d’un Droplet ?
Les actions Droplet sont asynchrones : la réponse contient un objet action avant la fin du traitement. On suit son ID et ses états in-progress, completed ou errored, puis on relit le Droplet. Une action non terminée peut verrouiller la ressource et provoquer un 422 sur l’action suivante.
03Un statut completed signifie-t-il que l’application est prête ?
Non. Il prouve la fin de l’action DigitalOcean, pas celle de cloud-init ni l’ouverture du réseau ou la santé du service. La clôture exige une relecture de la ressource et un contrôle depuis le consommateur attendu.
04Comment ranger une ressource dans le bon Project ?
On construit son URN au format do:resource_type:resource_id, l’affecte explicitement au Project ID et relit la collection paginée. Les ressources commencent sinon dans le Project par défaut ; un Project organise les ressources mais ne remplace pas les scopes du token.
05Pourquoi auditer les tags associés aux firewalls ?
Un tag rattache dynamiquement tous les Droplets qui le portent au firewall. Un nouveau membre peut donc changer de portée réseau sans modifier la règle elle-même. Plusieurs firewalls se cumulent par union de leurs règles, ce qui impose un contrôle de l’exposition effective.
06DigitalOcean Spaces utilise-t-il le même token que l’API v2 ?
Non. Spaces expose une compatibilité S3 partielle avec endpoint régional et paire de clés Spaces ; les appels sont signés, de préférence en SigV4. Le connecteur sépare ces credentials du bearer token API v2 et teste les opérations réellement supportées.
API cloud & infrastructure
Vous voulez connecter DigitalOcean sans confondre cloud créé et service prêt ?
On peut cadrer un premier workflow, livrer son intégration et rendre chaque scope, Project, URN, action, règle réseau et preuve consommateur vérifiable.
Cadrer mon workflow DigitalOcean