Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Ce que vend le cloud : services et régions

Après cette leçon: Je peux dire ce que sont une région, un service et un appel d’API.

Leçon de 50 minAucune commande

Une photo envoyée, c’est une requête web

Une boutique en ligne laisse ses clients envoyer la photo d’un article abîmé. La photo est rangée dans un bucket S3, un espace de stockage de fichiers dans le cloud. Votre code ne se connecte pas à une machine pour l’enregistrer. Il envoie une requête par le web et lit la réponse.

Cette leçon explique ce qu’est un service cloud, où il tourne et qui s’occupe de quoi.

À la fin de cette leçon

Remarque

Je peux dire ce que sont une région, un service et un appel d’API.

Mots-clés

MotCe que ça veut direExemple
Serviceun outil prêt à l’emploi que l’on utilise par le web
Appel d’APIune requête envoyée à un service, et sa réponse
Régionla zone du monde où tourne un serviceeu-west-3
Bucketun conteneur nommé pour des fichiers dans S3
Responsabilité partagéele fournisseur et le client s’occupent chacun d’une partie du système

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Ce que ce module n’est pas

Remarque

Vous n’avez pas besoin d’un compte AWS et rien n’est déployé. Vous ne taperez jamais de vraie clé, de mot de passe ni de numéro de compte. Ce n’est pas un cours sur les coûts ni sur la facture. Vous lisez, hors ligne, des réponses de la forme des vraies et vous écrivez du Python pour les traiter.

Un service est une API que l’on appelle

Un fournisseur de cloud fait tourner de grosses machines et loue ce qu’elles savent faire. Chaque outil loué est un service. S3 range des fichiers. SQS garde des messages dans une file. DynamoDB range des éléments dans des tables.

On utilise un service par un appel d’API : une requête qui nomme l’appel, comme list_objects_v2, et donne les détails utiles. La réponse revient sous forme de données.

Un appel et sa réponse

Code: python
appel = {"service": "s3", "operation": "list_objects_v2", "Bucket": "boutique-photos"}
reponse = {
    "Name": "boutique-photos",
    "KeyCount": 2,
    "IsTruncated": False,
    "Contents": [
        {"Key": "defauts/bouilloire.png", "Size": 2048, "StorageClass": "STANDARD"},
        {"Key": "defauts/grille-pain.png", "Size": 3072, "StorageClass": "STANDARD"},
    ],
}
print("service :", appel["service"])
print("appel :", appel["operation"])
print("clés :", reponse["KeyCount"])
for objet in reponse["Contents"]:
    print(objet["Key"], objet["Size"])
# Mettez 5000 comme Size du grille-pain, puis relancez.

Un appel qui échoue répond quand même

Tous les appels ne marchent pas. Une clé peut manquer, un bucket peut ne pas exister. Le service répond alors par une erreur : un Code qui nomme le problème et un statut HTTP.

Votre code doit chercher l’erreur d’abord. Un test comme "Contents" in reponse ne vaut que si l’appel a marché.

Distinguer une bonne réponse d’une erreur

Code: python
bonne = {"KeyCount": 1, "Contents": [{"Key": "lisezmoi.txt", "Size": 5}]}
mauvaise = {"error": {"Code": "NoSuchBucket", "HTTPStatusCode": 404}}
for reponse in [bonne, mauvaise]:
    if "error" in reponse:
        print("échec :", reponse["error"]["Code"], reponse["error"]["HTTPStatusCode"])
    else:
        print("réussi, clés :", reponse["KeyCount"])
# Remplacez "NoSuchBucket" par "NoSuchKey", puis relancez.

Erreur fréquente

Attention

Beaucoup pensent qu’une réponse vide est une erreur. Ce n’est pas vrai. Demander à DynamoDB un élément absent donne {} avec un bon statut. Cherchez une entrée error, avec son Code. Une réponse vide veut dire « rien trouvé ».

Une région est l’endroit où tourne un service

Un fournisseur a des centres de données dans de nombreux endroits. Une région est l’une de ces zones, comme eu-west-3, qui est Paris. Vous choisissez la région en créant un bucket, et les fichiers y restent.

Choisissez une région proche de vos utilisateurs, pour que les réponses arrivent vite. Les réponses indiquent aussi la région du bucket.

Lire la région de chaque bucket

Code: python
reponse = {
    "Buckets": [
        {"Name": "boutique-photos", "BucketRegion": "eu-west-3", "BucketArn": "arn:aws:s3:::boutique-photos"},
        {"Name": "boutique-sauvegardes", "BucketRegion": "us-east-1", "BucketArn": "arn:aws:s3:::boutique-sauvegardes"},
    ],
    "Owner": {"DisplayName": "boutique", "ID": "identifiant-proprietaire"},
}
for bucket in reponse["Buckets"]:
    print(bucket["Name"], "est dans", bucket["BucketRegion"])
# Affichez seulement les buckets de eu-west-3 : ajoutez un if dans la boucle.

Le fournisseur et vous, chacun sa part

Le fournisseur s’occupe des bâtiments, des machines et du logiciel du service. Vous vous occupez de ce que vous y mettez et de qui peut s’en servir.

C’est la responsabilité partagée. Si vous laissez tout le monde lire un bucket, c’était votre choix. Si un centre de données perd le courant, c’est au fournisseur de réagir.

Qui s’occupe de quoi

ÉlémentPris en charge par
Le bâtiment et le courantLe fournisseur
Le logiciel S3 lui-mêmeLe fournisseur
Les fichiers que vous envoyezVous
Qui peut lire un bucketVous
Le code qui appelle le serviceVous

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.