How to use the AWS S3 JS SDK with Wasabi Cloud ?

How to use @aws-sdk/client-s3 with Wasabi Cloud S3

ACCESS_KEY_ID et SECRET_ACCESS_KEY must be created on your Wasabi console.

WASABI_ENDPOINT must be of the format : https://s3.<bucket_region>.wasabisys.com .

S3-wasabi-client.mjs example

import { S3Client } from '@aws-sdk/client-s3';

const { 
	S3_REGION = 'us-east-1',
	ACCESS_KEY_ID="YOUR ACCESS KEY",
	SECRET_ACCESS_KEY="YOUR SECRET ACCESS KEY",
	WASABI_ENDPOINT="https://s3.eu-west-2.wasabisys.com"
 } = process.env;

const s3WasabiClient = new S3Client({
    region: S3_REGION,
    apiVersion: '2006-03-01',
    credentials: {
        accessKeyId: ACCESS_KEY_ID,
        secretAccessKey: SECRET_ACCESS_KEY
    },
    endpoint: WASABI_ENDPOINT
});

export { s3WasabiClient };

List all objects in the bucket “bucket_name”

import { s3WasabiClient } from './s3-wasabi-client.mjs';
import { ListObjectsCommand } from '@aws-sdk/client-s3';

const listObjectsCommand = new ListObjectsCommand('bucket_name', '');
const data = await s3WasabiClient.send(listObjectsCommand);
if(data.Contents) {
	console.log('data : ', data.Contents);
}

Automatiser la Copie de Fichiers depuis Windows vers Stockage Cloud AWS S3

Besoin

Les fichiers du dossier partagé Windows doivent être copiés sur un stockage Bucket AWS S3, afin d’être utilisée dans une autre application. Comment automatiser la copie de ces fichiers sur le stockage S3 de façon récurrente ?

Contexte

  • L’application ERP/CRM effectue des exports chaque jour dans un dossier partagé. Lors de l’export, les fichiers existants sont écrasés.
  • Les fichiers peuvent avoir une taille atteignant 140 Mo.
  • Le dossier partagé se trouve sur un serveur Windows Server 2019.

Solution 1 : Power Automate et Passerelle de données locale

À l’aide de Power Automate, on peut configurer un “Flow”. Responsable de surveiller lorsque des nouveaux fichiers sont ajoutés ou modifiés dans un dossier, et d’envoyer vers S3 par le biais d’une connexion SFTP.

Étant donné que le dossier partagé n’est pas un dossier SharePoint ou OneDrive, il est nécessaire d’installer une “Passerelle de données locale/On Premises Data Gateway” sur le serveur. Il fera le lien entre le système de fichier et Power Automate.

Cependant, il existe une limite au niveau de la taille des fichiers que peut traiter la passerelle, la limite est de 30 Mo maximum par fichier. Au sein de Power Automate, il existe aussi une limite sur la taille des messages qui est fixé à 100 Mo.

La solution Power Automate la plus simple à mettre en place, de par son interface graphique intuitive. Mais aussi pour sa facilité à surveiller l’état de l’automatisme configuré, ne sera pas adapté pour ce cas.

Solution 2 : rclone et planificateur de tâches Windows

L’outil en ligne de commande Rclone couplé au planificateur de tâches Windows. Rclone permet de synchroniser ou de copier des fichiers en local vers un cloud provider. Le planificateur de tâches Windows, quant à lui permettra de configurer la fréquence a laquelle la commande Rclone doit être exécutée.

  1. Télécharger rclone et extraire l’archive

    1. Ajouter le chemin vers le dossier rclone dans le PATH
  2. Configurer un “remote” rclone en lancant la commande rclone config 1.

    rclone config
    # n / New remote
    n/s/q/> n
    # Enter remote name s3-rclone-automatisation-test
    name> s3-rclone-automatisation-test
    # Storage
    # 5 / Amazon S3 Compliant Storage providers inluding AWS, Alibaba ...
    Storage> 5
    # provider
    # 1 / Amazon Web Services (AWS) S3
    provider> 1
    # AWS Credentials
    # 1 / Enter AWS credentials in the next step.
    env_auth> tape Enter for 1
    # AWS Access Key ID
    access_key_id> your_access_key_id
    # AWS Secret Access Key (password)
    secret_access_key> your_secret_key
    # Region to connect to
    # 8/ EU (Paris) Region. (eu-west-3)
    Region> 8
    # Endpoint
    endpoint > (Enter to leave empty)
    # Location constraint - must be set to match the Region
    location_constraint> 8
    # ACL
    acl> (Enter to leave empty)
    # The server-side encryption algorithm used when storing the object in S3.
    server_side_encryption> (Enter to leave empty)
    # If using KMS ID you must provide the ARN of Key
    sse_kms_key_id> (Enter to leave empty)
    #The storage class to use when storing new objects in S3.
    storage_class> (Enter to leave empty)
    # Edit advanced config ?
    y/n> (Enter to use No default answer)
    # Configuration complete.
    # Keep this "s3-rclone-automatisation-test" remote ?
    y/e/d> (Enter to use Yes this is OK default answer)
    # Current remotes :
    # q / Quit config
    e/n/d/r/c/s/q> q
    
  3. Lancer votre commande de copie : rclone copy source:path dest:path [flags]

Exemple de commande rclone copy :

# Dossier source ou sont contenus les fichiers à copier : C:\Users\Administrator\Downloads\sync-folder
# Nom du "Remote" configuré dans rclone : s3-rclone-automatisation-test
# Nom du bucket S3 : rclone-automatisation-test
# Commande : 
C:\Users\Administrator\Downloads\rclone-v1.64.0-windows-amd64\rclone copy --progress --checksum -vv C:\Users\Administrator\Downloads\sync-folder s3-rclone-automatisation-test:rclone-automatisation-test
  1. Ouvrir le planificateur des tâches Windows
  2. Créer une tâche planifié.
  3. Configurer un Déclencheur :
    1. Lancer la tâche : à l’heure programmée
    2. Paramètres : Chaque jour
    3. Démarrer : Spécifier une heure dans la journée.
    4. Cocher la case : Activée
    5. (optionnel) Pour les besoins de test :
      1. Cocher la case “Répéter la tâche toutes les” : 5 minutes
      2. Pour une durée de : Indéfiniment
  4. Configurer une Action :
    1. Action : Démarrer un programme
    2. Programme/script (spécifier le chemin complet) : C:\Users\Administrator\Downloads\rclone-v1.64.0-windows-amd64\rclone
    3. Ajouter des arguments : copy –checksum -v C:\Users\Administrator\Downloads\sync-folder s3-rclone-automatisation-test:rclone-automatisation-test

Remarque : Activer l’historique de la tâche planifié, en créant un dossier dans l’arborescence “Bibliothèque du Planificateur de tâches”. Puis en créant la tâche dans ce dossier. Ensuite Clique droit sur le dossier > Activer l’historique de toutes les tâches.

Commandes Utiles

  • rclone config file : Affiche l’emplacement du fichier de configuration de rclone.
  • rclone listremotes : Affiche la liste des “remotes” configurés.