Garden of KnowledgeApplied Sciences › Computer Science › Software › AWS
September 13, 2024

AWS S3 — Buckets

Amazon S3 (Simple Storage Service) est un service de stockage d’objets dans le cloud. Un bucket est le conteneur de base dans S3 — comme un dossier racine dans lequel on met des fichiers (appelés “objets”).

Concepts de base§

TermeDescription
BucketConteneur de stockage (nom unique mondial)
ObjectFichier stocké dans S3 (jusqu’à 5 TB par objet)
KeyChemin/nom de l’objet dans le bucket
RegionZone géographique où est stocké le bucket

Créer un bucket (Console AWS)§

  1. AWS Console → S3 → “Create bucket”
  2. Choisir un nom unique (minuscules, pas d’espaces)
  3. Choisir une région
  4. Configurer l’accès (par défaut : tout bloqué)
  5. Créer

Opérations avec AWS CLI§

# Configurer les credentials
aws configure

# Lister les buckets
aws s3 ls

# Créer un bucket
aws s3 mb s3://mon-bucket-nom

# Uploader un fichier
aws s3 cp fichier.txt s3://mon-bucket/
aws s3 cp fichier.txt s3://mon-bucket/dossier/fichier.txt

# Uploader un dossier entier
aws s3 sync ./dossier/ s3://mon-bucket/dossier/

# Télécharger
aws s3 cp s3://mon-bucket/fichier.txt ./

# Lister le contenu d'un bucket
aws s3 ls s3://mon-bucket/

# Supprimer un objet
aws s3 rm s3://mon-bucket/fichier.txt

# Supprimer un bucket (doit être vide)
aws s3 rb s3://mon-bucket
aws s3 rb s3://mon-bucket --force   # Force la suppression avec contenu

Avec le SDK JavaScript (v3)§

import { S3Client, PutObjectCommand, GetObjectCommand } from "@aws-sdk/client-s3"

const client = new S3Client({ region: "eu-west-1" })

// Upload
const upload = await client.send(new PutObjectCommand({
  Bucket: "mon-bucket",
  Key: "dossier/fichier.txt",
  Body: "contenu du fichier",
  ContentType: "text/plain"
}))

// Download
const response = await client.send(new GetObjectCommand({
  Bucket: "mon-bucket",
  Key: "dossier/fichier.txt"
}))
const content = await response.Body.transformToString()

Documentation complète : AWS SDK JS v3 S3

Gestion des accès§

Bucket Policy (JSON)§

Contrôle qui peut accéder au bucket.

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": "*",
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::mon-bucket/*"
  }]
}

→ Rend tous les objets publics en lecture.

IAM Roles§

Méthode recommandée pour les applications AWS — pas de clés dans le code.

Fonctionnalités utiles§

FonctionnalitéDescription
VersioningGarde toutes les versions d’un objet
Lifecycle RulesArchive ou supprime auto les objets anciens
ReplicationCopie vers un autre bucket/région
Static WebsiteHéberger un site statique directement depuis S3
Presigned URLsURL temporaire pour accès privé sans auth
Transfer AccelerationUpload plus rapide via CloudFront
—The Gardener