Digital Ocean Spaces (S3) « impossible de signer la requête sans identifiants définis »

Voici ce qui a finalement fonctionné :

Ces paramètres devaient se trouver dans la configuration app.yml pour que les tâches rake s’exécutent correctement. Lorsqu’ils étaient uniquement dans la zone /admin/site_settings/, les tâches rake ne s’exécutaient pas correctement. Je recevais une erreur :

ERREUR : Assurez-vous que S3 est configuré dans config/discourse.conf ou les variables d’environnement

Les paramètres proviennent d’ici… Configure an S3 compatible object storage provider for uploads

Plus précisément, j’ai utilisé les paramètres Spaces non personnalisés avec deux espaces avant chaque ligne. …

DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: whatever
DISCOURSE_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
DISCOURSE_S3_ACCESS_KEY_ID: myaccesskey
DISCOURSE_S3_SECRET_ACCESS_KEY: mysecretkey
DISCOURSE_S3_CDN_URL: https://nyc3.cdn.digitaloceanspaces.com
DISCOURSE_S3_BUCKET: my-files
DISCOURSE_S3_BACKUP_BUCKET: my-files/my-backups
DISCOURSE_BACKUP_LOCATION: s3
DISCOURSE_S3_INSTALL_CORS_RULE: false

NOTE : DISCOURSE_S3_REGION doit littéralement indiquer « whatever » et non quelque chose qui pourrait être interprété comme une véritable région S3 (c’est-à-dire us-west-1).

Aussi ces paramètres, dans la section hooks de la zone ## Plugins go here

after_assets_precompile:
- exec:
cd: $home
cmd:
- sudo -E -u discourse bundle exec rake s3:upload_assets
- sudo -E -u discourse bundle exec rake s3:expire_missing_assets

C’est là que j’ai rencontré un problème la dernière fois. Une fois que c’était en place et que j’ai reconstruit, j’obtenais cet écran de chargement lorsque j’essayais d’ouvrir notre forum dans un navigateur.

C’est seulement parce qu’il recherche des actifs qui n’ont pas encore été mis à jour. C’est là qu’il est temps d’exécuter les tâches rake, depuis l’intérieur de l’application…

./launcher enter app

rake s3:upload_assets

Une fois que cela a été exécuté, le nombre d’éléments a augmenté et un dossier « assets » est apparu dans notre bucket…

Ensuite, le forum a commencé à se charger correctement. Ce sont les seuls paramètres liés à S3 que j’ai affichés dans ma zone /admin/site_settings…

J’ai exécuté ceci pour télécharger tous les fichiers et cela a mis à jour les URL de l’ancien chemin vers le nouveau (sans CDN).

rake uploads:migrate_to_s3 --trace

Le nombre d’éléments a plus que triplé après cela.

La seule chose que j’ai remarquée, c’est que les chemins d’images des anciens messages utilisaient l’URL de l’ENDPOINT S3, tandis que les images nouvellement publiées utilisaient l’URL du CDN S3.

https:/my-storage.sfo3.digitaloceanspaces.com/
vs
https:/my-storage.sfo3.cdn.digitaloceanspaces.com/

Cela ne m’importait pas vraiment car au moins tout utilisait S3.

Mais j’ai essayé d’exécuter…

rake posts:rebake

image

Cela l’a fait planter parce qu’il a manqué de mémoire. J’ai essayé d’exécuter ceci à la place…

rake posts:rebake_uncooked_posts

Il a manqué de mémoire plusieurs fois et s’est redémarré, puis a manqué de mémoire à nouveau. Je l’ai exécuté à nouveau. Finalement, il a fini de cuire tous les messages.

Une fois qu’il a fonctionné jusqu’à 100 %, tous les liens utilisaient enfin le chemin d’URL du CDN S3, les anciens et les nouveaux messages.

Très content que tout fonctionne désormais sur S3, y compris les sauvegardes. D’ailleurs, c’est probablement le bon moment pour en faire une !

J’espère que cela aidera quelqu’un.

Bonne chance !

1 « J'aime »