---
title: "Accéder à vos buckets avec des outils compatibles S3<sup>1</sup>"
description: "Les buckets d'un projet parlent le protocole S3, si bien que tout client compatible S3 peut les lire et les écrire : l'AWS CLI, Rclone"
url: https://docs.ovhcloud.com/fr/guides/public-cloud/data-platform/tutorials-bucket-s3-access
lang: fr
lastUpdated: 2026-09-14
---
> For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt.

# Accéder à vos buckets avec des outils compatibles S3<sup>1</sup>

## Objectif

Les [buckets](https://docs.ovhcloud.com/fr/guides/public-cloud/data-platform/lakehouse-manager-buckets.md) d'un projet parlent le protocole S3, si bien que tout client compatible S3 peut les lire et les écrire : l'AWS CLI, Rclone, ainsi que les AWS SDK pour NodeJS et Python. Ce tutoriel les couvre chacun tour à tour, avec les commandes et les identifiants dont chacun a besoin.

Les Buckets Data Platform sont entièrement compatibles avec le client **AWS S3**.
Pour interagir avec eux, vous devrez [générer une clé API et une clé secrète dans votre Identity Access Manager](https://docs.ovhcloud.com/fr/guides/public-cloud/data-platform/tutorials-generate-api-keys.md) à partir d'un compte **Data Platform Directory**.

:::info
ℹ️ **Remarque :** Actuellement, tous les buckets racine sont nommés `"project-projectID"`.\
Vous pouvez trouver votre `projectID` en cliquant sur l'icône d'information en haut à droite de la platform.\
**Exemple :** `project-abcdef`
:::

## Utiliser l'AWS CLI

:::info
Dans les URL de base des extraits de code ci-dessous, vous devrez remplacer `my-project` par le [sous-domaine de votre Projet](https://docs.ovhcloud.com/fr/guides/public-cloud/data-platform/manage-projects-config-variables.md#sous-domaine-du-projet).
:::

1. Installez le client AWS CLI depuis  [https://aws.amazon.com/cli/](https://aws.amazon.com/cli/)
2. Configurez l'AWS CLI, il est suggéré d'utiliser un [profil nommé](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html).

```bash
aws configure --profile myproject
aws Access Key ID [None]: your_access_key
aws Secret Access Key [None]: your_secret_key
Default region name [None]: forepaas
Default output format [None]:
```

1. Activez _AWS Signature Version 4_ pour le serveur MinIO.

```bash
aws configure set s3.signature_version s3v4 --profile myproject
```

1. Quelques exemples de commandes (en remplaçant `my-project` par le [sous-domaine de votre Projet](https://docs.ovhcloud.com/fr/guides/public-cloud/data-platform/manage-projects-config-variables.md#sous-domaine-du-projet) et 'mybucket' par le nom de bucket souhaité) :

```bash
# lister vos buckets
aws --profile myproject --endpoint-url https://my-project.eu.dataplatform.ovh.net/datastore s3 ls

# lister le contenu d'un bucket
aws --profile myproject --endpoint-url https://my-project.eu.dataplatform.ovh.net/datastore s3 ls s3://mybucket

# créer un bucket
aws --profile myproject --endpoint-url https://my-project.eu.dataplatform.ovh.net/datastore s3 mb s3://mybucket

# ajouter un objet à un bucket
aws --profile myproject --endpoint-url https://my-project.eu.dataplatform.ovh.net/datastore s3 cp my-file.csv s3://mybucket

# supprimer un objet d'un bucket
aws --profile myproject --endpoint-url https://my-project.eu.dataplatform.ovh.net/datastore s3 rm s3://mybucket/my-file.csv

# supprimer un bucket
aws --profile myproject --endpoint-url https://my-project.eu.dataplatform.ovh.net/datastore s3 rb s3://mybucket

```

:::info
Pour gérer l'URL de point d'entrée au sein d'un profil nommé, vous pouvez consulter cette page de documentation : [configurer l'URL de point d'entrée par profil](https://github.com/wbingli/awscli-plugin-endpoint).
:::

## Utiliser Rclone

:::info
Dans les URL de base des extraits de code ci-dessous, vous devrez remplacer `my-project` par le [sous-domaine de votre Projet](https://docs.ovhcloud.com/fr/guides/public-cloud/data-platform/manage-projects-config-variables.md#sous-domaine-du-projet).
:::

1. Installez [rclone](https://rclone.org/) depuis [https://rclone.org/downloads/](https://rclone.org/downloads/)
2. Configurez rclone (en remplaçant `my-project` par le [sous-domaine de votre Projet](https://docs.ovhcloud.com/fr/guides/public-cloud/data-platform/manage-projects-config-variables.md#sous-domaine-du-projet)).

```bash
rclone config create my-project s3 provider Minio region forepaas env_auth false
rclone config update my-project endpoint https://my-project.eu.dataplatform.ovh.net/datastore
rclone config update my-project access_key_id YOUR_ACCESS_KEY
rclone config update my-project secret_access_key YOUR_SECRET_KEY
```

1. Vérifiez l'emplacement du fichier de configuration de rclone si nécessaire

```bash
rclone config file
```

1. Vérifiez que votre configuration correspond bien à ce qui suit

```bash
rclone config show my-project
[my-project]
type = s3
provider = Minio
region = forepaas
env_auth = false
endpoint = https://my-project.eu.dataplatform.ovh.net/datastore
access_key_id = YOUR_ACCESS_KEY
secret_access_key = YOUR_SECRET_KEY
```

1. Quelques commandes simples (veuillez consulter la documentation de rclone pour plus de détails) :

```bash
# lister les buckets
rclone lsd my-project:

# créer un bucket
rclone mkdir my-project:test-rclone

# générer une doc locale à des fins de test
rclone gendocs docs

# copier ./docs/ vers test-rclone
rclone copy docs my-project:test-rclone/docs
# quelle est la taille d'un bucket ou d'un chemin ?
rclone size my-project:test-rclone
Total objects: 69
Total size: 239.570 kBytes (245320 Bytes)

# affiche une arborescence
rclone tree my-project:test-rclone
# déplacer des fichiers dans le bucket
rclone move my-project:test-rclone/docs/commands my-project:test-rclone/commands

# synchroniser la source vers la destination
rclone sync --dry-run docs my-project:test-rclone/docs

# lister les fichiers de façon lisible
rclone lsl my-project:test-rclone
# lister les fichiers avec des options de format
rclone lsf  --format "tsp" --recursive my-project:test-rclone

# supprimer les fichiers de plus de 1 ko
rclone --min-size 1k lsl my-project:test-rclone/commands
rclone --dry-run --min-size 1k delete my-project:test-rclone/commands
rclone --min-size 1k delete my-project:test-rclone/commands
# copier des fichiers dans ./commands
rclone copy my-project:test-rclone/commands commands
# supprimer un chemin entier
rclone delete my-project:test-rclone/commands/
```

## Utiliser NodeJS

:::info
Dans les URL de base des extraits de code ci-dessous, vous devrez remplacer `[PROJECT_NAME]` par le [sous-domaine de votre Projet](https://docs.ovhcloud.com/fr/guides/public-cloud/data-platform/manage-projects-config-variables.md#sous-domaine-du-projet).
:::

:::info
ℹ️ **Remarque :** Actuellement, tous les buckets racine sont nommés `"project-projectID"`.\
Vous pouvez trouver votre `projectID` en cliquant sur l'icône d'information en haut à droite de la platform.\
**Exemple :** `project-abcdef`
:::

```sh
# Ajoutez aws-sdk à votre application avec la commande suivante
yarn add aws-sdk
# Ou
npm i -s aws-sdk
```

```js
const AWS = require('aws-sdk')
const fs = require('fs')

// Modifiez ces valeurs pour votre environnement
let accessKey = '[ACCESS_KEY]'
let secretKey = '[SECRET_KEY]'
let endpoint = 'https://[PROJECT_NAME].eu.dataplatform.ovh.net'
let bucket = '[BUCKET_NAME]'
let region = 'forepaas'

// Construit un objet service. Cet objet possède une méthode pour chaque opération API.
const dataStoreClient = new AWS.S3({
  accessKeyId: accessKey,
  secretAccessKey: secretKey,
  endpoint: `${endpoint}/datastore`,
  region: region,
  signatureVersion: 'v4',
  s3ForcePathStyle: true
})

////////////////////////////////
// Ajoute un objet à un bucket //
////////////////////////////////
let uploadStream = fs.createReadStream('./file.csv')
dataStoreClient.putObject({
  Bucket: bucket,
  Key: 'file.csv',
  Body: uploadStream
}, (err) => {
  if (err) console.error(err)
  else console.info('File uploaded')
})

/////////////////////////////////////
// Récupère des objets depuis un bucket //
/////////////////////////////////////
let downloadStream = fs.createWriteStream('./file_downloaded.csv')
dataStoreClient.getObject({
    Bucket: bucket,
    Key: 'file.csv'
  })
  .createReadStream()
  .on('error', (err) => {
    console.error(err)
  })
  .pipe(downloadStream)
  .on('close', () => {
    console.info('File downloaded')
  })

/////////////////////////////////////
// Retourne tout ou partie (jusqu'à 1000) des objets d'un bucket.
/////////////////////////////////////
dataStoreClient.listObjects({
  Bucket: bucket
}, (err, data) => {
  if (data && data.Contents) {
    data.Contents.forEach(file => {
      console.info(`${file.Key} (${file.Size} bytes)`)
    })
  }
})
```

## Utiliser Python

:::info
Dans les URL de base des extraits de code ci-dessous, vous devrez remplacer `[PROJECT_NAME]` par le [sous-domaine de votre Projet](https://docs.ovhcloud.com/fr/guides/public-cloud/data-platform/manage-projects-config-variables.md#sous-domaine-du-projet).
:::

:::info
ℹ️ **Remarque :** Actuellement, tous les buckets racine sont nommés `"project-projectID"`.\
Vous pouvez trouver votre `projectID` en cliquant sur l'icône d'information en haut à droite de la platform.\
**Exemple :** `project-abcdef`
:::

```sh
# Installez boto3 avec la commande suivante :
pip install boto3
```

```python
import boto3
from botocore.client import Config
import os

def customfunc(event):
    # Modifiez ces valeurs pour votre environnement
    project_url = 'https://[PROJECT_NAME].eu.dataplatform.ovh.net'
    access_key = '[ACCESS_KEY]'
    secret_key = '[SECRET_KEY]'
    bucket = '[BUCKET_NAME]'
    region = 'forepaas'
    
    try:
        # Crée le client S3 (nommé datastore)
        datastore = boto3.client(
            's3',
            endpoint_url=f'{project_url}/datastore',
            aws_access_key_id=access_key,
            aws_secret_access_key=secret_key,
            config=Config(signature_version='s3v4',request_checksum_calculation='when_required'),
            region_name=region
        )

        # Liste tous les buckets disponibles
        buckets_response = datastore.list_buckets()
        print("Available buckets:")
        if 'Buckets' in buckets_response:
            for b in buckets_response['Buckets']:
                print(b['Name'])
        else:
            print("No buckets found.")

        # Teste la connexion en listant les objets du bucket spécifié
        response = datastore.list_objects(Bucket=bucket)
        print("Connection successful!")
        if response and 'Contents' in response:
            print("Bucket contents:")
            for obj in response['Contents']:
                print(f"{obj['Key']} ({obj['Size']} bytes)")
        else:
            print("Bucket is empty or no objects returned.")

        # S'assure que le fichier local existe
        local_filename = './file.csv'
        if not os.path.exists(local_filename):
            print(f"Local file {local_filename} not found.")
            return

        # Téléverse un fichier avec une clé qui le place dans un sous-dossier autorisé.
        upload_key = 'dwh/uploads/file.csv'
        datastore.upload_file(
            Bucket=bucket,
            Filename=local_filename,
            Key=upload_key
        )
        print(f"Uploaded local file '{local_filename}' to bucket '{bucket}' with key '{upload_key}'")

        # Télécharge un fichier depuis le bucket.
        # En utilisant une clé de fichier issue de vos logs :
        download_key = 'dwh/uploads/clean_cafe_sales.csv'
        local_download_filename = './clean_cafe_sales_downloaded.csv'
        datastore.download_file(
            Bucket=bucket,
            Filename=local_download_filename,
            Key=download_key
        )
        print(f"Downloaded '{download_key}' from bucket '{bucket}' to local file '{local_download_filename}'")

        #Nous avons ici utilisé un fichier avec un répertoire très spécifique via la clé de téléchargement, cela peut être fait manuellement ou en utilisant l'étape ci-dessus pour lister tous les fichiers et choisir parmi eux
        #pour référence, le dossier dpe existe ici à la racine du bucket.

    except Exception as e:
        print("Connection failed:", e)

# Exemple d'utilisation :
if __name__ == "__main__":
    customfunc(event={})

```

## Aller plus loin

Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur [ce lien](https://www.ovhcloud.com/fr/professional-services/) pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.

Posez vos questions, faites-nous part de vos commentaires et interagissez directement avec l’équipe qui développe la Data Platform sur le [canal Discord](https://discord.gg/ovhcloud) dédié.

Si vous avez besoin d'une assistance concernant vos services OVHcloud, créez une demande depuis notre [centre d'aide](https://help.ovhcloud.com/csm?id=csm_get_help).

Rejoignez notre [communauté d'utilisateurs](https://community.ovhcloud.com/).

1
 : S3 est une marque déposée appartenant à Amazon Technologies, Inc. Les services de OVHcloud ne sont pas sponsorisés, approuvés, ou affiliés de quelque manière que ce soit.