Lab 07 : Utilisation du Stockage objet
Objectifs
Section intitulée « Objectifs »Dans cet atelier, nous allons manipulez le stockage objet fourni par 3DS OUTSCALE.
Introduction
Section intitulée « Introduction »Le stockage objet est une architecture de stockage qui gère les données sous forme d’objets accessibles via des URL plutôt que des fichiers. Il est idéal pour stocker de grandes quantités de données non structurées, telles que des sauvegardes, des archives, des images, des contenus audio et vidéo, ainsi que des données volumineuses.
Le service OUTSCALE Object Storage (OOS) repose sur la technologie RING de Scality. Il est compatible avec l’API Simple Storage Service (S3) d’AWS, ce qui signifie que vous pouvez utiliser OOS avec n’importe quel outil compatible S3Création.
Installation
Section intitulée « Installation »L’interface de la ligne de commande AWS (AWS CLI) est un outil unifié qui permet de gérer vos services AWS. Avec un seul outil à télécharger et à configurer, vous pouvez contrôler plusieurs services AWS à partir de la ligne de commande et les automatiser au moyen de scripts.
https://docs.aws.amazon.com/fr_fr/cli/latest/userguide/getting-started-install.html
sudo apt update && sudo apt upgrade -y && sudo apt install unzip curl -ycurl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"unzip awscliv2.zipsudo ./aws/installVérifiez l’installation à l’aide de la commande suivante.
aws --versionCommand completion - AWS Command Line Interface (amazon.com)
Ajouter aws_completer dans le PATH
echo 'export PATH=/usr/local/bin/aws_completer:$PATH' >> .profilesource ~/.profileActiver la complétion dans le shell
echo "complete -C '/usr/local/bin/aws_completer' aws" >> ~/.bashrcsource ~/.bashrcConfiguration
Section intitulée « Configuration »Pour une utilisation générale, la commande aws configure est le moyen le plus
rapide pour configurer l’installation de votre CLI. Lorsque vous tapez cette
commande, l’AWS CLI vous invite à saisir quatre éléments d’information :
aws configureSpécifiez les éléments de configuration :
AWS Access Key ID: Votre access key OUTSCALE.AWS Secret Access Key: Votre secret key OUTSCALE.- Default region name : Le nom de la Région du Cloud OUTSCALE que vous souhaitez utiliser.

- Default output format : Cet attribut doit être paramétré sur
json(défaut).
Cette commande définit un profil par défaut (default). Pour définir un profil
nommé, pour chaque Région que vous pouvez utiliser, utilisez l’attribut
--profile suivant cette syntaxe :
aws configure --profile VOTRE_PROFILLes Buckets
Section intitulée « Les Buckets »Pour créer un bucket, utilisez la commande create-bucket suivant cette syntaxe :
aws s3api create-bucket \--bucket formation-bucket-<nm> \--endpoint https://oos.eu-west-2.outscale.comLe nom d’un bucket doit :
- Être unique pour toute la région
- Contenir entre 3 et 63 caractères
- Commencer par un caractère alphanumérique
- Contenir uniquement des minuscules, chiffres et tirets (-)
Le bucket est créé.

Pour obtenir la liste de vos buckets, utilisez la commande list-buckets:
aws s3api list-buckets --endpoint https://oos.eu-west-2.outscale.com
La commande list-buckets renvoie les éléments suivants :
Buckets: Informations à propos du propriétaire du bucketCreationDate: La date et l’heure de la création du bucket.Name: Le nom que vous avez spécifié pour le bucket.
Owner: Informations à propos du propriétaire du bucket.-
DisplayName: L’ID de votre compte OUTSCALE. -
ID: Votre ID utilisateur S3. -
CreationDate: La date et l’heure de la création du bucket.
-
import { Aside } from ‘@astrojs/starlight/components’;
Les objets
Section intitulée « Les objets »Pour déposer un objet local dans un bucket, utilisez la commande put-object
suivant cette syntaxe :
aws s3api put-object \--profile YOUR_PROFILE \--bucket BUCKET \--key OBJECT \--body /usr/bin/OBJECT \--endpoint https://oos.eu-west-2.outscale.comCette commande contient les attributs suivants que vous devez spécifier :
- (optionnel)
profile: Le profil nommé que vous voulez utiliser, créé pendant la configuration d’AWS CLI. Pour en savoir plus, voir Installer et configurer AWS CLI. bucket: Le nom du bucket dans lequel vous voulez déposer l’objet.key: Le nom que vous voulez donner à l’objet dans le bucket.body: Le chemin d’accès vers l’objet sur votre machine.endpoint: Le endpoint correspondant à la Région à laquelle vous voulez envoyer la requête.
Utiliser le bucket versioning
Section intitulée « Utiliser le bucket versioning »Le bucket est sécurisé par défaut. Vous pouvez activer des options supplémentaires de sécurité, telles que le versioning. Le versioning permet de conserver plusieurs versions d’un objet pour une récupération en cas de modification ou de suppression accidentelle.
Activer ou désactiver le versioning d’un bucket avec AWS CLI
aws s3api put-bucket-versioning \--bucket formation-bucket-<nm> \--versioning-configuration Status=Enabled \--endpoint https://oos.eu-west-2.outscale.comL’attribut Status permet l’activation ou la désactivation du versioning sur le
bucket. Les valeurs autorisées sont « Enabled » ou « Suspended ».
La commande get-bucket-versioning permet d’obtenir les informations sur le
versionning d’un bucket.
aws s3api get-bucket-versioning \--bucket formation-bucket-<nm> \--endpoint https://oos.eu-west-2.outscale.com{ "Status": "Enabled"}La commande get-bucket-versioning renvoie l’élément suivant :
Status: Le statut du versioning (Enabled|Suspended).
Challenge 1
Section intitulée « Challenge 1 »Le défi consiste à manipuler des fichiers dans un bucket et comprendre les versions des objets.
- Créez un nouveau fichier vide dans votre éditeur de texte préféré.
<html> <head> <title>Ma page index.html</title> </head> <body> <h1>Mon site web statique</h1> <h2>Formation OOS</h2> </body></html>- Copiez le code HTML fourni dans le fichier.
- Enregistrez le fichier sous le nom
index.html. - Utilisez la commande
put-objectpour téléverser le fichierindex.htmldans le bucket spécifié. Assurez-vous d’inclure les paramètres appropriés tels que le nom du bucket et l’endpoint.
aws s3api put-object --bucket formation-bucket-<nm> --key index.html --body index.html --endpoint https://oos.eu-west-2.outscale.com- Modifiez quelques caractères du fichier index.html à l’aide de votre éditeur de texte.
- Utilisez à nouveau la commande “put-object” pour remplacer l’objet existant dans le bucket par la nouvelle version modifiée.
- Utilisez la commande
list-object-versionsavec les paramètres appropriés pour afficher la liste des versions de l’objet “index.html” dans le bucket spécifié.
aws s3api list-object-versions --bucket formation-bucket-<nm> --prefix index.html --endpoint https://oos.eu-west-2.outscale.com- Observez les résultats de la commande précédente et notez vos observations
sur les versions de l’objet
index.htm” dans le bucket. - Téléchargez les deux versions de l’objet
index.htmlà l’aide de la commande appropriée. - Utilisez un outil de comparaison de fichiers, comme
diff, pour comparer les deux versions téléchargées.
aws s3api get-object --bucket formation-bucket-<nm> --key index.html /png/v0_index.html --version-id aJlMrx91SFdR00000000001I4j3QKItW --endpoint https://oos.eu-west-2.outscale.comConfigurer une URL pré-signée
Section intitulée « Configurer une URL pré-signée »Vous pouvez configurer une URL pré-signée qui permet à un objet d’être accessible depuis internet. Tout utilisateur à qui vous envoyez l’URL pré-signée a accès à l’objet pour la durée que vous spécifiez.
- Chargez un fichier vide nommé
acl-list.txtdans le bucket en utilisant la commandes3api put-object. - Vérifiez que le fichier a été correctement chargé.
Utilisez la commande suivante sur le fichier acl-list.txt :
aws s3 presign s3://bucket-formation/acl-list.txt --expires-in 3600 --endpoint https://oos.eu-west-2.outscale.comLa commande presign renvoie l’élément suivant :

Gérer les accès à vos buckets et objets
Section intitulée « Gérer les accès à vos buckets et objets »La gestion des ACL (Access Control List) sur Outscale OOS permet de contrôler les autorisations d’accès aux objets stockés dans un bucket.
Vous pouvez accorder des permissions à différents groupes :
- public : N’importe quelle personne à laquelle vous envoyez l’URL de votre bucket ou de votre objet.
- authenticated-user : N’importe quel utilisateur connecté avec un compte OUTSCALE qui utilise l’API.
Vous trouverez la liste ACL prête à l’emploi sur le lien suivant :
https://docs.outscale.com/fr/userguide/R%C3%A9f%C3%A9rence-des-Access-Control-List-ACL.html
ACL pour Bucket:
La commande put-bucket-acl permet de configurer l’ACL d’un bucket
aws s3api put-bucket-acl \ --profile YOUR_PROFILE \ --bucket BUCKET \ --acl private \ --grant-full-control "id=USER_ID, id=USER_ID" \ --grant-read "id=USER_ID, id=USER_ID" \ --grant-read-acp "id=USER_ID, id=USER_ID" \ --grant-write "id=USER_ID, id=USER_ID" \ --grant-write-acp "id=USER_ID, id=USER_ID" \ --endpoint https://oos.eu-west-2.outscale.comPour obtenir les informations sur l’ACL d’un bucket :
aws s3api get-bucket-acl \--profile YOUR_PROFILE \--bucket BUCKET \--endpoint https://oos.eu-west-2.outscale.comACL pour Objet:
La commande put-object-acl permet de configurer l’ACL d’un objet
aws s3api put-object-acl \--bucket BUCKET \--key OBJECT \--acl private \--grant-full-control "id=USER_ID, id=USER_ID" \--grant-read "id=USER_ID, id=USER_ID" \--grant-read-acp "id=USER_ID, id=USER_ID" \--grant-write "id=USER_ID, id=USER_ID" \--grant-write-acp "id=USER_ID, id=USER_ID" \--version-id qAfAAsAAuA00kclkg0A0AAuAAjaAtA. \--endpoint https://oos.eu-west-2.outscale.comPour obtenir les informations sur l’ACL d’un objet :
aws s3api get-object-acl \--profile YOUR_PROFILE \--bucket BUCKET \--key OBJECT \--version-id qAfAAsAAuA00kclkg0A0AAuAAjaAtA. \--endpoint https://oos.eu-west-2.outscale.comChallenge
Section intitulée « Challenge »- Appliquez l’ACL publique (public-read) sur le fichier
index.htmlen utilisant la commandeaws s3api put-object-acl - Chargez le fichier
error.htmldans le bucket en utilisant la commandes3api put-object - Vérifiez que le fichier a été correctement chargé
- Appliquez l’ACL publique (
public-read) sur le fichier en utilisant la commandeaws s3api put-object-acl - Vérifiez que l’ACL a été correctement mise en place en utilisant la commande
aws s3api get-object-acl - Créez un fichier
website.jsonavec le contenu suivant :
{ "IndexDocument": { "Suffix": "index.html" }, "ErrorDocument": { "Key": "error.html" }}- Copiez le fichier
website.jsonsur votre bucket et configurez une ACL public-read : - Créez votre site web par le biais de la commande website suivant cette syntaxe :
aws s3 website s3://BUCKET/ \--profile YOUR_PROFILE \--index-document index.html \--error-document error.html \--endpoint https://oos.eu-west-2.outscale.comaws s3api put-bucket-website --bucket formation-bucket-<nm> --website-configuration file://website.json --endpoint https://oos.eu-west-2.outscale.comVotre site web est créé et accessible au format d’adresse suivant :
https://<BUCKET>.oos-website.<REGION>.outscale.com
On ne peut déployer sur S3 qu’une application front. C’est-à-dire une application qui est exécutable par un client (votre navigateur).
Par exemple : une application écrite avec le framework Angular ou React, un simple site HTML/CSS etc. Si vous avez découpé votre application en deux parties front-end et back-end, la partie front-end peut très bien être déployée sur S3.
Déployer Nextcloud avec un bucket
Section intitulée « Déployer Nextcloud avec un bucket »Nextcloud est une plateforme de partage de fichiers et de communication open source et auto-hébergée. La combinaison de Nextcloud avec Object Storage va vous offrir un espace de stockage infini pour votre plateforme Nextcloud.
-
Connectez-vous sur le Dashboard cockpit d’OUTSCALE
-
Créez un NET avec un CIDR
10.0.0.0/16 -
Créez une internet gateway
myigwet l’associer auNET -
Créez un subnet
mysubnetavec un CIDR10.0.1.0/24 -
Créez une table de routage
myrt -
Attachez cette route table au subnet
mysubnet -
Configurer les routes suivantes sur la table de routage
myrt- Cible :
myigwID, destination0.0.0.0/0 - Cible :
local, destination10.0.0.0/16
- Cible :
-
Créez un security group
mysg -
Déployer une VM avec les paramètres suivants :
- Nom
myvm - OMI : ubuntu 22.04
ami-cd8d714e - Subnet :
mysubnet - Security group :
mysg - Type :
tinav3.c2r4p2 - Disque : taille
20GBet type :gp2 - Keypair : créez une nouvelle
keypairpour cette VM
- Nom
-
Créez et associez une IP publique pour cette VM
-
Créer un
NET endpointvers le service stockage objet pour leNET. Ce endpoint va permettre une communication directe (interne) entre les VMs dans ce NET vers les bucket S3. -
Créez un bucket pour Nextcloud (Remplacez nm par un chiffre de votre choix)
Terminal window aws s3api create-bucket --bucket formation-bucket-<nm> --endpoint https://oos.eu-west-2.outscale.com -
Vérifiez que le bucket est vide
Terminal window aws s3api list-objects --bucket formation-bucket-<nm> --endpoint https://oos.eu-west-2.outscale.com -
Connectez-vous sur la VM
myvm -
Installez les prérequis pour l’application Nextcloud
Terminal window apt updateapt install apache2 mariadb-server libapache2-mod-phpapt install php-gd php-json php-mysql php-curl php-mbstring php-intl php-imagick php-xml php-zip[source, bash] -
Téléchargez et installez la dernière version de Nexcloud
Terminal window wget https://download.nextcloud.com/server/releases/latest.tar.bz2tar -xjf latest.tar.bz2cp -r nextcloud /var/www -
Créez une configuration apache
/etc/apache2/sites-available/nextcloud.confavec le contenu suivant :<VirtualHost *:80>DocumentRoot /var/www/nextcloud<Directory /var/www/nextcloud/>Options FollowSymlinksAllowOverride All<IfModule mod_dav.c>Dav off</IfModule>SetEnv HOME /var/www/nextcloudSetEnv HTTP_HOME /var/www/nextcloud</Directory></VirtualHost> -
Activez la configuration
Terminal window a2ensite nextcloud.confa2dissite 000-defaultsystemctl reload apache2.service -
Changez les droits
/var/www/nextcloud/Terminal window chown -R www-data:www-data /var/www/nextcloud/ -
Configurez la base de données
Terminal window sudo -imysql -u root -p -
Créez une base de données et un utilisateur
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'password';CREATE DATABASE IF NOT EXISTS nextcloud;GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'password';FLUSH privileges; -
Quittez MariaDB
EXIT; -
Pour finaliser l’installation, connectez-vous sur l’url http://MYVMPUBLICIP/ et suivez les étapes exposées via l’interface graphique.
-
Configurez le stockage objet la bucket « nextcloudbucket ». Editez le fichier
nano /var/www/nextcloud/config/config.phpet ajoutez le contenu suivant juste après la ligne ’datadirectory’ => ‘/var/www/nextcloud/data’,`'objectstore' => array('class' => '\\OC\\Files\\ObjectStore\\S3','arguments' => array('bucket' => 'nextcloudbucket','autocreate' => true,'key' => 'REPLACEZACCESSKEY','secret' => 'REMPLACEZPARSECRETKEY','hostname' => 'oos.eu-west-2.outscale.com','port' => 443,'use_ssl' => true,'region' => 'eu-west-2',),), -
Sauvegardez le fichier et ouvrir à nouveau l’interface web de nextcloud et commencez à stockez vos fichier sur la bucket via Nextcloud.

-
On vient de configurer un bucket comme stockage premier pour l’application « Nextcloud », pour votre information on peut aussi configurer un bucket comme stockage externe (secondaire).