Configuration du stockage objet S3

Parsec est compatible avec différentes solutions de stockage objet, notamment :

  • OpenStack Swift

  • Amazon S3 ou tout stockage compatible S3 comme Outscale OOS (la plupart des fournisseurs de stockage proposent des API compatibles S3)

  • Une configuration RAID combinant plusieurs stockages

Le déploiement le plus courant utilise un stockage compatible S3.

Ce guide fournit des instructions pour configurer un bucket compatible S3 pour une utilisation avec Parsec.

Note

Parsec utilise le stockage objet de manière très basique : il ne fait que lire des objets existants et en créer de nouveaux. Il n’y a ni suppression ni listage des objets existants. Par conséquent, l’activation du versionnage pour le bucket n’est pas strictement obligatoire, mais elle est fortement recommandée pour éviter la perte de données en cas d’écrasement d’un objet existant (puisque S3 utilise une cohérence éventuelle, la politique s3:PutObject permet toujours d’écraser un objet existant).

Prérequis

  • Un compte auprès d’un fournisseur de stockage compatible S3

  • La CLI AWS

  • Les permissions appropriées pour créer des buckets et gérer les politiques

Créer le bucket

Créer un nouveau bucket pour le stockage des données Parsec :

aws s3api create-bucket \
    --bucket <BUCKET_NAME>

Remplacez <BUCKET_NAME> par le nom de bucket souhaité.

Note

La commande exacte peut varier selon votre fournisseur de stockage. Consultez la documentation de votre fournisseur pour la syntaxe appropriée de la commande.

Par exemple, avec Outscale :

aws s3api create-bucket \
    --profile <PROFILE_NAME> \
    --endpoint https://oos.eu-west-2.outscale.com \
    --bucket <BUCKET_NAME>

Activer le versionnage

Activez le versionnage sur le bucket pour protéger contre les écrasements accidentels :

aws s3api put-bucket-versioning \
    --bucket <BUCKET_NAME> \
    --versioning-configuration Status=Enabled

Limiter l’accès avec un utilisateur dédié

Pour des raisons de sécurité, créez un utilisateur IAM dédié avec des permissions restreintes aux seules opérations nécessaires.

La politique de bucket suivante accorde uniquement les permissions nécessaires pour que Parsec fonctionne :

aws s3api put-bucket-policy \
    --bucket <BUCKET_NAME> \
    --policy '{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": {
            "AWS": "arn:aws:iam::<ACCOUNT_ID>:root"
         },
         "Action": [
            "s3:GetObject",
            "s3:PutObject"
         ],
        "Resource": "arn:aws:s3:::<BUCKET_NAME>/*"
      },
      {
         "Effect": "Allow",
         "Principal": {
            "AWS": "arn:aws:iam::<ACCOUNT_ID>:root"
         },
         "Action": [
            "s3:ListBucket"
         ],
        "Resource": "arn:aws:s3:::<BUCKET_NAME>"
      }
   ]
}'

Remplacez les espaces réservés suivants :

  • <BUCKET_NAME> : le nom de votre bucket

  • <ACCOUNT_ID> : l’ID de compte AWS ou l’utilisateur IAM nécessitant l’accès