Sauvegarde automatique partielle sur S3 (Scaleway, MinIO)

Bonjour,

Je viens d’installer Dokos, et j’essaie maintenant de configurer la sauvegarde automatique S3 sur Scaleway.

La sauvegarde fonctionne partiellement, avec une copie de frontend-files.tar, frontend-private-files.tar, et frontend-site_config_backup.json sur S3. Mais le fichier frontend-database.sql.gz n’arrive pas à être copié, et génère le message d’erreur suivant :

Traceback with variables (most recent call last):
  File "apps/frappe/frappe/integrations/doctype/s3_backup_settings/s3_backup_settings.py", line 193, in upload_file_to_s3
    conn.upload_file(filename, bucket, destpath)  # Requires PutObject permission
      filename = './frontend/private/backups/20240125_173118-frontend-database.sql.gz'
      folder = '20240125_173118/'
      conn = <botocore.client.S3 object at 0x7fdf77f77070>
      bucket = 'backup'
      destpath = '20240125_173118/20240125_173118-frontend-database.sql.gz'
      e = S3UploadFailedError('Failed to upload ./frontend/private/backups/20240125_173118-frontend-database.sql.gz to backup/20240125_173118/20240125_173118-frontend-database.sql.gz: An error occurred () when calling the PutObject operation: ')
  File "env/lib/python3.10/site-packages/boto3/s3/inject.py", line 143, in upload_file
    return transfer.upload_file(
      self = <botocore.client.S3 object at 0x7fdf77f77070>
      Filename = './frontend/private/backups/20240125_173118-frontend-database.sql.gz'
      Bucket = 'backup'
      Key = '20240125_173118/20240125_173118-frontend-database.sql.gz'
      ExtraArgs = None
      Callback = None
      Config = None
      transfer = <boto3.s3.transfer.S3Transfer object at 0x7fdf8ccedea0>
  File "env/lib/python3.10/site-packages/boto3/s3/transfer.py", line 298, in upload_file
    raise S3UploadFailedError(
      self = <boto3.s3.transfer.S3Transfer object at 0x7fdf8ccedea0>
      filename = './frontend/private/backups/20240125_173118-frontend-database.sql.gz'
      bucket = 'backup'
      key = ********
      callback = None
      extra_args = None
      subscribers = None
      future = <s3transfer.futures.TransferFuture object at 0x7fdf858a69b0>
boto3.exceptions.S3UploadFailedError: Failed to upload ./frontend/private/backups/20240125_173118-frontend-database.sql.gz to backup/20240125_173118/20240125_173118-frontend-database.sql.gz: An error occurred () when calling the PutObject operation: 

Dans le doute, j’ai testé avec un API Key Policy ObjectStorageFullAccess .

Tous les fichiers sont bien générés pourtant :

$ docker exec dodock-backend-1 ls -l /home/frappe/frappe-bench/sites/frontend/private/backups/
-rw-r--r-- 1 frappe frappe 1471168 Jan 25 16:31 20240125_173118-frontend-database.sql.gz
-rw-r--r-- 1 frappe frappe   10240 Jan 25 16:31 20240125_173118-frontend-files.tar
-rw-r--r-- 1 frappe frappe   10240 Jan 25 16:31 20240125_173118-frontend-private-files.tar
-rw-r--r-- 1 frappe frappe     240 Jan 25 16:31 20240125_173118-frontend-site_config_backup.json

Quelques infos concernant l’installation :
MĂ©thode : Docker
Dokos : v4.2.2
Dodock : v4.4.0

Merci d’avance pour toutes suggestions !
Jean-Étienne

Bonjour @je_vs,

Est-ce que ça ne serait pas un problème de permissions ? J’avoue ne pas bien m’y connaître et ne pas déjà avoir rencontré l’erreur. As-tu finalement réussi à mettre en place les sauvegardes automatiques S3 ?

Corentin

Bonjour @corentin
Merci pour la réponse.
Je suspecte aussi un problème de permissions… que je n’ai pas réussi à régler sur Scaleway (je n’ai pas trouvé comment configurer les ARNs de la même manière que sur AWS).
J’ai donc finalement utilisé un MinIO S3, avec lequel la sauvegarde automatique fonctionne bien.
Jean-Étienne

1 Like