Aller au contenu
Cloud high

Cloud API-first : tout est automatisable et pourquoi c'est central

20 min de lecture

Pourquoi peut-on créer 100 serveurs cloud en 30 secondes avec un script, alors qu'il faudrait des heures pour faire la même chose manuellement ? La réponse tient en deux mots : API-first. Tous les fournisseurs cloud modernes (AWS, Azure, GCP, Outscale, OVHcloud, Scaleway) sont construits autour d'une API HTTP qui expose chaque opération possible — la console web n'est qu'une interface graphique qui appelle cette API en arrière-plan. Cette page explique le principe, les outils qui l'exploitent (CLI, SDK, Terraform), l'authentification par Access Keys, et défend une opinion claire : tout cliquer dans la console est la pire dette technique que vous puissiez accumuler.

  • Comprendre le principe API-first et pourquoi c'est la base du cloud moderne
  • Identifier les outils qui exploitent les API : CLI, SDK, Terraform
  • Voir les équivalents par fournisseur (AWS, Azure, GCP, Outscale)
  • Comment fonctionne l'authentification (Access Keys) pour piloter le cloud par code
  • Mesurer les avantages concrets de l'automatisation vs l'approche console

Prérequis : connaître les bases du cloud computing. Si vous débutez, commencez par Définition et promesses du cloud.

1. Le cloud, c'est du logiciel qui pilote du matériel

Section intitulée « 1. Le cloud, c'est du logiciel qui pilote du matériel »

L'infrastructure traditionnelle — des humains partout

Section intitulée « L'infrastructure traditionnelle — des humains partout »

Imaginez que vous devez commander un nouveau serveur dans un datacenter classique. Vous remplissez un bon de commande, un technicien vérifie le stock, il installe physiquement le serveur dans un rack, il branche les câbles réseau et électriques, un autre technicien configure le système d'exploitation, quelqu'un vous envoie un email avec les accès. Délai typique : quelques jours à plusieurs semaines. Pour 10 serveurs identiques, multipliez le temps par 10.

Dans le cloud, ce processus est entièrement automatisé. Quand vous cliquez sur « Créer une VM » dans la console web (Cockpit Outscale, AWS Console, Portal Azure, Cloud Console GCP), voici ce qui se passe réellement :

  1. Votre clic envoie une requête HTTP à l'API du fournisseur.
  2. L'API vérifie vos droits (avez-vous le droit de créer une VM dans ce projet ?).
  3. L'API orchestre la création : allocation de ressources, configuration réseau, démarrage.
  4. L'API vous renvoie une réponse avec les informations de votre VM.

Le point crucial : la console web n'est qu'une interface graphique qui appelle l'API. Vous pourriez faire exactement la même chose avec un script, un outil en ligne de commande, ou du code applicatif.

2. Le principe API-first : tout est pilotable par code

Section intitulée « 2. Le principe API-first : tout est pilotable par code »

Une API (Application Programming Interface — Interface de Programmation d'Application) est un contrat entre deux logiciels. Elle définit quelles actions sont possibles (créer une VM, lister les volumes, supprimer un réseau), quels paramètres chaque action accepte (taille du disque, région, nom), quel format utiliser pour communiquer (généralement JSON via HTTPS), et comment s'authentifier (prouver qu'on a le droit d'agir).

Concrètement, une API cloud permet d'écrire un programme qui crée, modifie ou supprime des ressources d'infrastructure — exactement comme si un humain cliquait dans la console.

Le terme API-first signifie que l'API n'est pas un ajout tardif, mais la fondation sur laquelle tout le reste est construit.

ComposantRôleUtilise l'API ?
APICœur du système, expose toutes les opérationsC'est l'API elle-même
Console webInterface graphique pour humainsAppelle l'API en arrière-plan
CLI (aws, az, gcloud, oapi-cli)Ligne de commande pour scriptsAppelle l'API
SDK (Python, Go, Java, JavaScript…)Bibliothèques pour développeursAppelle l'API
TerraformInfrastructure as CodeAppelle l'API via le provider

Architecture API-first : tous les outils (Console, CLI, SDK, Terraform) passent par l'API centrale pour piloter l'infrastructure

Le principe API-first est universel, mais chaque fournisseur expose son API et ses outils selon ses propres conventions. Ce tableau aide à naviguer entre les écosystèmes.

FournisseurAPI officielleCLI principaleSDK PythonProvider Terraform
AWSAWS API (REST/JSON)aws-cli v2boto3hashicorp/aws
AzureAzure Resource Manager APIaz (Azure CLI)azure-mgmt-*hashicorp/azurerm
GCPGoogle Cloud APIsgcloudgoogle-cloud-*hashicorp/google
OutscaleOAPI (OUTSCALE API)oapi-cliosc-sdk-pythonoutscale/outscale
OVHcloudOVHcloud APIovh-cli (community)python-ovhovh/ovh
ScalewayScaleway APIscw (Scaleway CLI)scaleway-sdk-pythonscaleway/scaleway

Tous ces outils suivent un pattern prévisible : Create* pour créer une ressource, Read* (ou Describe* côté AWS) pour lister ou obtenir des informations, Update* (ou Modify*) pour modifier, Delete* pour supprimer. Une fois qu'on en maîtrise un, les autres se prennent en main rapidement.

Fenêtre de terminal
# AWS
aws ec2 describe-instances
# Azure
az vm list
# GCP
gcloud compute instances list
# Outscale
oapi-cli ReadVms
# Scaleway
scw instance server list

La logique est identique, seuls les noms de commandes et de paramètres changent. Pour le détail d'une CLI ou d'un SDK spécifique, consultez la documentation officielle du fournisseur — toutes sont solides en 2026.

Le problème — prouver son identité à une machine

Section intitulée « Le problème — prouver son identité à une machine »

Quand vous vous connectez à la console, vous utilisez un email et un mot de passe (avec MFA, on l'espère). Mais un script ne peut pas « taper » un mot de passe — il faut un autre mécanisme.

Tous les fournisseurs cloud utilisent un système de clés API composé de deux parties.

ÉlémentFormatRôleAnalogie
Access Key IDAKIAIOSFODNN7EXAMPLEIdentifie le compteVotre numéro de carte bancaire
Secret KeyChaîne longue secrèteProuve l'identitéLe code PIN de la carte

Les noms varient légèrement par fournisseur — AWS et Outscale parlent d'« Access Key ID + Secret Key », Azure de Service Principal avec client_id et client_secret, GCP de Service Account JSON key. Le principe sous-jacent reste identique : un identifiant public et un secret cryptographique qui signe les requêtes.

Quand vous envoyez une requête à une API cloud, voici ce qui se passe.

  1. Vous construisez la requête

    Par exemple : « créer une VM de type t3.micro dans la région eu-west-3 ».

  2. Vous signez la requête avec votre Secret Key

    Un algorithme cryptographique (typiquement un algorithme de signature comme HMAC-SHA256 (Signature v4 chez AWS)) génère une signature unique à partir du contenu de la requête, de la date et de votre Secret Key.

  3. Vous envoyez la requête avec la signature

    L'en-tête HTTP contient votre Access Key ID + la signature calculée.

  4. L'API vérifie la signature

    Le fournisseur possède une copie de votre Secret Key. Il recalcule la signature et vérifie qu'elle correspond. Si oui, vous êtes authentifié et la requête est exécutée.

Flux d'authentification API avec Access Keys : construction de la requête, signature HMAC-SHA256, vérification côté serveur

  • Une Access Key par usage : une pour Terraform CI, une pour vos scripts perso, une pour l'astreinte humaine. Pas de clé partagée entre humains et automation.
  • Rotation régulière : remplacer ses clés tous les 90 jours minimum. La plupart des fournisseurs affichent un avertissement après 3 mois et un avertissement critique après 12 mois.
  • Date d'expiration sur les clés quand le fournisseur le permet, pour forcer le renouvellement automatique.
  • Stockage sécurisé : variables d'environnement, gestionnaire de secrets (AWS Secrets Manager, Azure Key Vault, HashiCorp Vault), jamais dans le code source.
  • OIDC fédéré quand c'est possible : GitHub Actions et GitLab CI peuvent assumer un rôle cloud sans clé statique. C'est la bonne pratique 2026 sur les pipelines.

L'API est puissante, mais envoyer des requêtes HTTP signées manuellement serait fastidieux. Les outils qui suivent simplifient l'utilisation, classés par niveau d'abstraction croissant.

Idéale pour découvrir les services et explorer son infrastructure, effectuer des opérations ponctuelles, visualiser l'état de ses ressources.

Limitations : impossible d'automatiser, pas de reproductibilité, risque d'erreurs manuelles, pas de versioning. La console est un excellent outil d'apprentissage, un mauvais outil de production.

Les CLI officielles (aws, az, gcloud, oapi-cli, scw) permettent d'enchaîner des commandes dans des scripts shell, de les versionner dans Git, et de les réutiliser. C'est le premier pas vers l'automatisation.

Exemple — créer un volume de 50 Go.

  1. Sur AWS :

    Fenêtre de terminal
    aws ec2 create-volume \
    --availability-zone eu-west-3a \
    --size 50 \
    --volume-type gp3
  2. Sur Outscale :

    Fenêtre de terminal
    oapi-cli CreateVolume \
    --SubregionName eu-west-2a \
    --Size 50 \
    --VolumeType gp2
  3. Sur GCP :

    Fenêtre de terminal
    gcloud compute disks create my-disk \
    --zone europe-west9-a \
    --size 50GB \
    --type pd-balanced

Pour intégrer le cloud dans vos applications, des SDK (Software Development Kits) sont disponibles pour la plupart des langages : Python, Go, Java, JavaScript, .NET, Ruby. Cas d'usage typiques : scripts d'automatisation complexes, fonctions FaaS, microservices qui déclenchent des actions cloud, outils internes.

Exemple Python avec boto3 (AWS) :

import boto3
ec2 = boto3.client('ec2', region_name='eu-west-3')
result = ec2.describe_instances()
for reservation in result['Reservations']:
for instance in reservation['Instances']:
print(f"VM: {instance['InstanceId']} - État: {instance['State']['Name']}")

Terraform est l'outil de référence pour déclarer son infrastructure sous forme de code. Tous les fournisseurs cloud modernes maintiennent un provider Terraform officiel.

Exemple Terraform — déclarer une VM AWS :

terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.40"
}
}
}
provider "aws" {
region = "eu-west-3"
}
resource "aws_instance" "web_server" {
ami = "ami-0123456789abcdef0"
instance_type = "t3.micro"
tags = {
Name = "web-server-prod"
Environment = "production"
ManagedBy = "terraform"
}
}

Pour appliquer cette configuration : terraform init télécharge le provider, terraform plan prévisualise les changements, terraform apply crée réellement la VM.

Comparaison approche manuelle (console) vs approche API-first (Terraform) : temps, reproductibilité, documentation

CritèreApproche console (manuelle)Approche API (automatisée)
Créer 1 serveur5 minutes de clics30 secondes
Créer 100 serveurs~8 heures (si vous tenez)30 secondes
Reproduire un environnementImpossible exactementIdentique à chaque fois
Documenter l'infrastructureScreenshots, wiki obsolèteLe code est la documentation
Revenir en arrièreImpossible ou très risquégit revert + terraform apply
Audit des changements« Qui a fait ça ?! »Historique Git complet
Erreurs humainesFréquentes (fatigue, distraction)Éliminées (le code ne se trompe pas)

Reproductibilité. Un script ou une configuration Terraform produit toujours le même résultat. Fini le « ça marchait sur mon environnement de test » — dev, staging et production sont identiques.

Scalabilité. Besoin de 50 serveurs pour un pic de charge ? Une boucle dans le code. Besoin de revenir à 5 serveurs ? Une autre exécution.

Versionnement. Votre infrastructure est du code. Elle vit dans Git, avec des commits, des branches, des pull requests, des reviews — exactement comme du code applicatif.

Collaboration. Plusieurs personnes travaillent sur l'infrastructure en parallèle, mergent leurs changements, partagent une source de vérité unique.

Disaster Recovery. Si tout est détruit, vous lancez terraform apply et votre infrastructure renaît. Essayez de faire ça avec des screenshots de console.

La console web et le code d'infrastructure ne s'opposent pas, ils répondent à des besoins différents. Comprendre quand utiliser l'un ou l'autre évite la dette technique liée à une infrastructure construite manuellement puis difficile à reproduire.

À quoi sert la console. Elle est l'outil d'apprentissage par excellence : voir une ressource se créer, comprendre les options exposées, explorer un service inconnu. Elle est aussi pratique pour le diagnostic : visualiser l'état réel d'une ressource, comparer avec ce qui était attendu, lire un message d'erreur dans son contexte. Pour ces deux usages, la console est plus rapide que le code.

À quoi sert le code d'infrastructure. Dès qu'une opération doit être rejouée, reproduite sur plusieurs environnements, ou documentée pour l'équipe, le code prend le relais. Un script CLI, un manifeste Terraform ou un appel SDK garantissent la reproductibilité, la traçabilité dans Git, et la possibilité de revue par un pair.

Le piège du « j'automatiserai plus tard ». Une infrastructure construite à la console pendant des mois, puis convertie en code, demande un travail de rétro-ingénierie ressource par ressource (état actuel, dépendances, paramètres implicites). Ce travail prend généralement plus de temps que le démarrage direct en code, parce qu'il faut reconstituer ce qui a été cliqué sans trace.

Le piège du state drift. Quand une partie de l'infrastructure est gérée en code (Terraform) et qu'une correction est faite à la console, le code et la réalité divergent. Au prochain terraform apply, l'outil voudra annuler cette correction ou créer un conflit. Cette divergence — appelée state drift — est l'un des bugs les plus difficiles à diagnostiquer.

Règle pratique : si une opération sera faite plus d'une fois, elle se fait en code. Si elle est faite une seule fois pour explorer ou diagnostiquer, la console est acceptable. Cette frontière simple évite la majorité des dérives.

Piège 1 — « Je commence par la console, j'automatiserai plus tard ». Plus tard n'arrive jamais, et vous vous retrouvez avec une infrastructure impossible à reproduire. Mitigation : commencez par Terraform dès le premier serveur.

Piège 2 — « Je stocke mes Access Keys dans le code ». Vos clés se retrouvent dans Git, sont partagées involontairement, et quelqu'un compromet votre infrastructure. Mitigation : variables d'environnement ou gestionnaire de secrets, jamais dans le code source.

Piège 3 — « J'ai un seul jeu d'Access Keys pour tout ». Si ces clés sont compromises, l'attaquant a accès à tout. Mitigation : Access Keys dédiées par environnement, par outil, par pipeline CI/CD, avec moindre privilège.

Piège 4 — « L'API, c'est compliqué, je reste sur la console ». Vous passez à côté de 90 % de la puissance du cloud. Mitigation : commencez petit. Une commande CLI pour lister vos VMs. Puis un script qui crée une ressource. La montée en compétence est progressive.

  • API-first = tout est pilotable par code. La console n'est qu'une interface graphique qui appelle l'API en arrière-plan.
  • Les 5 fournisseurs majeurs (AWS, Azure, GCP, Outscale, OVHcloud, Scaleway) exposent tous une API HTTP avec authentification par clés et CLI officielles.
  • Les Access Keys (Access Key ID + Secret Key) permettent à vos scripts de s'authentifier. La Secret Key est secrète, jamais en clair dans le code.
  • Plusieurs outils exploitent l'API : CLI pour scripter, SDK pour intégrer, Terraform pour l'Infrastructure as Code.
  • L'automatisation apporte reproductibilité, scalabilité, versionnement, audit, et élimine les erreurs manuelles.
  • La console pour apprendre, l'API pour construire — la frontière est : si l'opération est faite plus d'une fois, elle se fait en code.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn