Créer votre premier bucket S3
Ce guide vous accompagne dans la création de votre premier bucket S3 depuis la console Hikube, jusqu'au premier envoi de fichier.
Objectifs
À la fin de ce guide, vous aurez :
- Un bucket S3 opérationnel dans votre projet
- Un utilisateur S3 avec sa paire de clés d'accès
- Un premier fichier envoyé avec
awsoumc
Prérequis
- Un compte Hikube et un projet (voir le démarrage rapide Hikube)
- Un client S3 installé sur votre poste : AWS CLI ou MinIO Client (
mc) - Pour l'onglet API : une clé d'API
admindu projet et les variablesHIKUBE_API,HIKUBE_API_KEYetPROJECT_ID(voir Préparer l'environnement) ; les exemples utilisentcurletjq
Étape 1 : Ouvrir l'assistant de création
- Console
- API
- Connectez-vous à la console Hikube et sélectionnez votre projet.
- Dans le menu latéral, ouvrez Infrastructure → Buckets S3. La page Buckets Object Storage s'affiche.
- Cliquez sur Créer un bucket.
Avec l'API, il n'y a pas d'assistant. Vérifiez que la clé donne accès au projet en listant ses buckets :
curl -sS "$HIKUBE_API/bucket/v1alpha1/projects/$PROJECT_ID/buckets" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY"
Résultat attendu : un objet {"totalCount": ..., "buckets": [...]}.
Étape 2 : Configurer et créer le bucket
- Console
- API
L'assistant comporte trois étapes.
Général
- Saisissez le Nom du bucket (un nom est proposé par défaut). Règles : minuscules, chiffres et tirets ; commence par une lettre et se termine par une lettre ou un chiffre ; 16 caractères maximum. Exemple :
demo-assets. - Laissez décochées pour ce guide les options :
- Activer le verrouillage (Object Lock / WORM) : chaque objet est verrouillé 365 jours après son écriture, en mode COMPLIANCE ; personne ne peut le modifier ni le supprimer avant l'échéance. La durée n'est pas modifiable, le verrouillage ne peut plus être retiré après la création, et supprimer le bucket ne supprime pas ses objets ;
- Activer le chiffrement au repos (LUKS) : chiffre les données stockées ; ne peut pas être modifié après la création.
- Cliquez sur Suivant.
Utilisateurs
- Saisissez le Nom de l'utilisateur (par exemple
app-user) : 3 à 16 caractères, mêmes règles que pour le nom du bucket. - Laissez Lecture seule sur Non pour obtenir un accès en lecture et écriture.
- Cliquez sur Ajouter, puis sur Suivant.
Au moins un utilisateur est nécessaire pour continuer.
Vérification
Le Récapitulatif affiche le nom, le projet, le nombre d'utilisateurs à créer, l'état du verrouillage (Activé (365 jours, COMPLIANCE) s'il est coché) et du chiffrement, ainsi que le Coût estimé par Go. Cliquez sur Créer le bucket.
Pendant la création, le bouton affiche Création... puis Provisionnement du bucket… : la console attend que le bucket soit prêt avant de créer les utilisateurs.
Créez le bucket avec POST /bucket/v1alpha1/projects/{projectId}/buckets :
curl -sS -X POST "$HIKUBE_API/bucket/v1alpha1/projects/$PROJECT_ID/buckets" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "demoassets",
"locking": false,
"encrypted": false
}'
name: 16 caractères maximum, en minuscules ; ce nom identifie le bucket dans les chemins de l'API ;locking: verrouillage des objets (Object Lock / WORM), non modifiable après la création ;encrypted: chiffrement au repos, non modifiable après la création.
Contrairement à l'assistant de la console, cette requête ne crée pas d'utilisateur : vous le créerez à l'étape 4, une fois le bucket prêt.
Étape 3 : Vérifier l'état du bucket
- Console
- API
L'écran de fin affiche Bucket créé avec succès. Après avoir récupéré les identifiants (étape 4), cliquez sur Terminer : la console ouvre la page du bucket.
Sur cette page :
- le badge de statut indique Prêt lorsque le bucket est opérationnel (En création pendant le provisionnement, Erreur si la plateforme n'a pas pu le créer : voir le dépannage) ;
- les badges WORM et LUKS rappellent l'état du verrouillage et du chiffrement ;
- la carte Accès & Configuration affiche le Nom du bucket S3 et le Point de terminaison (Endpoint) ;
- la carte Utilisateurs et Accès liste les utilisateurs et leur droit (Lecture seule ou Lecture / Écriture).

Si le bucket n'est pas prêt à temps, la console affiche « Bucket en cours de provisionnement » et ne crée pas les utilisateurs. Attendez que le bucket passe à Prêt, puis créez-les depuis sa page avec Ajouter un utilisateur (voir Gérer les utilisateurs et les clés d'accès).
curl -sS "$HIKUBE_API/bucket/v1alpha1/projects/$PROJECT_ID/buckets/demoassets" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" | jq '{name, status, bucketName, endpoint, locking, encrypted}'
Résultat attendu : status passe de provisioning à ready (error en cas d'échec). bucketName est le nom S3 réel du bucket, généré par la plateforme, et endpoint le point de terminaison S3.
Étape 4 : Récupérer les identifiants
- Console
- API
L'écran de fin de l'assistant affiche, pour chaque utilisateur créé :
| Champ | Usage |
|---|---|
| Nom du bucket S3 | Nom réel du bucket à utiliser dans vos commandes et SDK |
| Clé d'accès | Access Key ID |
| Clé secrète | Secret Access Key |
| Point de terminaison API (S3) | Endpoint S3, par exemple prod.s3.hikube.cloud |

Copiez ces valeurs avant de cliquer sur Terminer et conservez la clé secrète dans un gestionnaire de mots de passe. Elle ne sera plus affichée. En cas de perte, créez un nouvel utilisateur.
Le Nom du bucket S3 est généré par la plateforme, sous la forme bucket- suivi d'un identifiant unique (par exemple bucket-1df67984-321d-492d-bb06-2f4527bb0f5b). Il diffère du nom saisi dans l'assistant : un client S3 configuré avec ce dernier reçoit AccessDenied. Utilisez toujours le nom S3 dans vos clients. Il reste consultable sur la page du bucket.
S'il n'est pas encore connu, l'écran affiche à sa place « Le nom S3 sera disponible dans quelques instants, dans la fiche du bucket. » : relevez-le alors dans la carte Accès & Configuration de la page du bucket. Le point de terminaison, lui aussi, n'apparaît que lorsqu'il est connu.
Exportez les valeurs dans votre terminal :
export S3_ENDPOINT="https://<point-de-terminaison>"
export AWS_ACCESS_KEY_ID="<clé-d-accès>"
export AWS_SECRET_ACCESS_KEY="<clé-secrète>"
export BUCKET_NAME="<nom-du-bucket-s3>"
Si l'endpoint s'affiche sans préfixe (par exemple prod.s3.hikube.cloud), ajoutez https:// devant : les clients aws et mc attendent une URL complète.
Une fois le bucket au statut ready, créez un utilisateur en lecture et écriture ("readonly": false) :
curl -sS -X POST "$HIKUBE_API/bucket/v1alpha1/projects/$PROJECT_ID/buckets/demoassets/users" \
-H "X-Hikube-Api-Key: $HIKUBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"username": "appuser",
"config": {"readonly": false}
}' | jq '{bucketName, endpoint, secrets}'
La réponse contient :
| Champ | Usage |
|---|---|
bucketName | Nom réel du bucket à utiliser dans vos commandes et SDK |
secrets.accessKeyId | Access Key ID |
secrets.accessSecretKey | Secret Access Key |
endpoint | Endpoint S3 |
secrets n'est renvoyé que dans cette réponse. Enregistrez la clé secrète aussitôt dans votre gestionnaire de secrets. En cas de perte, générez une nouvelle paire avec POST .../users/appuser/rotate-credentials (voir Gérer les utilisateurs et les clés d'accès).
Exportez ensuite ces valeurs comme dans l'onglet Console (S3_ENDPOINT, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, BUCKET_NAME), en préfixant l'endpoint par https:// s'il n'en a pas.
Étape 5 : Connexion et tests
Les clés d'un utilisateur ne donnent pas la permission de lister tous les buckets de l'endpoint. Les commandes doivent toujours cibler votre bucket : s3://$BUCKET_NAME/ ou hikube/$BUCKET_NAME/.
Option A : AWS CLI
# Envoyer un fichier de test
echo "hello hikube" > /tmp/hello.txt
aws --endpoint-url "$S3_ENDPOINT" s3 cp /tmp/hello.txt "s3://$BUCKET_NAME/hello.txt"
# Lister le contenu du bucket
aws --endpoint-url "$S3_ENDPOINT" s3 ls "s3://$BUCKET_NAME/"
Option B : MinIO Client (mc)
# Définir un alias pour l'endpoint
mc alias set hikube "$S3_ENDPOINT" "$AWS_ACCESS_KEY_ID" "$AWS_SECRET_ACCESS_KEY"
# Envoyer un fichier de test puis lister le bucket
mc cp /tmp/hello.txt "hikube/$BUCKET_NAME/hello.txt"
mc ls "hikube/$BUCKET_NAME/"
Résultat attendu : le fichier hello.txt apparaît dans la liste.
La carte Accès & Configuration de la page du bucket propose ces commandes, déjà complétées avec l'endpoint et le nom du bucket, dans la rubrique Exemple de connexion.
Étape 6 : Dépannage rapide
| Symptôme | Cause probable | Action |
|---|---|---|
AccessDenied sur aws s3 ls sans bucket | Listage de l'endpoint entier | Ciblez s3://$BUCKET_NAME/ |
AccessDenied alors que la commande cible le bucket | Nom saisi dans l'assistant utilisé au lieu du nom S3 | Utilisez le Nom du bucket (bucket-…) affiché dans Accès & Configuration |
AccessDenied à l'écriture | Utilisateur en Lecture seule | Changez son droit avec Modifier l'accès |
SignatureDoesNotMatch / InvalidAccessKeyId | Clés incorrectes ou incomplètes | Recopiez les clés ; si la clé secrète est perdue, créez un nouvel utilisateur |
| Erreur de connexion | Endpoint sans https:// | Préfixez l'endpoint par https:// |
Voir aussi le dépannage complet.
Étape 7 : Nettoyage
- Console
- API
- Supprimez le fichier de test :
aws --endpoint-url "$S3_ENDPOINT" s3 rm "s3://$BUCKET_NAME/hello.txt"
- Sur la page du bucket, cliquez sur Supprimer (ou, depuis la liste, ouvrez le menu d'actions du bucket et choisissez Supprimer).
- Saisissez le nom exact du bucket dans Nom de la ressource à confirmer, puis cliquez sur Supprimer définitivement.
- Supprimez le fichier de test :
aws --endpoint-url "$S3_ENDPOINT" s3 rm "s3://$BUCKET_NAME/hello.txt"
- Supprimez le bucket :
Une réponsecurl -sS -X DELETE "$HIKUBE_API/bucket/v1alpha1/projects/$PROJECT_ID/buckets/demoassets" \-H "X-Hikube-Api-Key: $HIKUBE_API_KEY"
200avec un objet vide{}confirme la suppression. L'API ne demande pas de confirmation.
La suppression d'un bucket est définitive et emporte tous ses objets, même s'il n'est pas vide. Copiez les données à conserver avant de le supprimer. Un bucket verrouillé (WORM) fait exception : il est retiré de la console, mais ses objets sont conservés et restent verrouillés 365 jours après leur écriture.