Problèmes avec AWS CDN et S3

,

@Falco Est-ce toujours le cas ? J’ai cru lire quelque chose à propos de problèmes récents avec AWS, mais je ne retrouve plus le sujet.

J’ai de nombreux problèmes en utilisant AWS S3 en suivant les différents sujets pertinents comme guides.

Les sauvegardes fonctionnent comme prévu, mais l’utilisation de Cloudfront comme CDN ou le décommentage de DISCOURSE_USE_S3 et/ou DISCOURSE_S3_BUCKET provoque un throbber perpétuel.

Je soupçonne d’avoir mal configuré quelque chose dans le bucket de téléversements et/ou la distribution Cloudfront, mais je n’ai pas réussi à trouver d’erreur. Les buckets de téléversement et de sauvegarde sont tous deux derrière la distribution et les sauvegardes fonctionnent bien, alors ???

discourse-cdn.repealobbba.org CNAME —> amazonassigned.cloudfront.net

DISCOURSE_CDN_URL: https://discourse-cdn.repealobbba.org

## Configuration de stockage S3
#  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: us-east-1
  DISCOURSE_S3_ACCESS_KEY_ID: ACCESS_KEY_ID
  DISCOURSE_S3_SECRET_ACCESS_KEY: SECRET_ACCESS_KEY
  DISCOURSE_S3_CDN_URL: amazonassigned.cloudfront.net  ou
#  DISCOURSE_S3_BUCKET: repeal-obbba-discuss-uploads
  DISCOURSE_S3_BACKUP_BUCKET: repeal-obbba-discuss-backups
  DISCOURSE_BACKUP_LOCATION: s3

De plus, l’ajout de ceci à la configuration

    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

Donne une erreur FAILED TO BOOTSTRAP (ÉCHEC DE L’AMORÇAGE)

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets failed with return #<Process::Status: pid 8484 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.3.0/lib/pups/exec_command.rb:131:in `spawn'
exec failed with the params {"cd"=>"$home", "cmd"=>["sudo -E -u discourse bundle exec rake s3:upload_assets", "sudo -E -u discourse bundle exec rake s3:expire_missing_assets"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.

Comme toujours… Toutes réflexions ou suggestions seraient appréciées.

Vous devez ajouter la strophe qui télécharge les actifs vers s3.

Oh. J’ai tort, vous le faites.

Cela suggère que quelque chose ne va pas avec la configuration du compartiment (bucket).

Je pense qu’il y avait un sujet qui générait le json pour configurer un compartiment, mais je ne sais pas s’il est toujours d’actualité.

1 « J'aime »

D’accord
Bien qu’une politique de compartiment n’ait pas été utilisée sur le compartiment de sauvegarde, l’ajout d’une politique au compartiment de téléchargement a résolu l’échec de l’amorçage.
Le json de la politique est disponible dans CloudFront > Distributions > votre distribution > Modifier l’origine
Screenshot 2025-12-10 141220

Malheureusement, le clignotement perpétuel persiste.

L’ajustement de la propriété de l’objet et des ACL ne modifie pas le résultat.
Screenshot 2025-12-10 141936

Paramètres actuels. Je crois qu’ils sont les paramètres recommandés ou peut-être que je suis confus.
Screenshot 2025-12-10 141702
Screenshot 2025-12-10 141835

Après avoir modifié les paramètres, vous devez exécuter la tâche rant pour télécharger les ressources.

De plus, vous pouvez ouvrir la console du développeur et vérifier si les fichiers que vous essayez d’accéder existent sur le bucket ou s’il y a un problème avec le CDN.

1 « J'aime »

Merci de continuer…

Oui, les tâches rake sont exécutées, cela ne change rien.

./launcher enter app
rake posts:rebake
rake uploads:migrate_to_s3
rake posts:rebake_uncooked_posts

Le throbber persiste.

rake uploads:migrate_to_s3 renvoie une erreur

Migrating uploads to S3 for 'default'...
Some uploads were not migrated to the new scheme. Running the migration, this may take a while...
rake aborted!
FileStore::ToS3MigrationError: Some uploads could not be migrated to the new scheme. You need to fix this manually. (FileStore::ToS3MigrationError)
/var/www/discourse/lib/file_store/to_s3_migration.rb:156:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:59:in `migrate'
/var/www/discourse/lib/tasks/uploads.rake:126:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:106:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:36:in `each_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management.rb:17:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:104:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:100:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => uploads:migrate_to_s3

Au moins un vérificateur de CDN indique discourse-cdn.repealobbba.org --=>Amazon CloudFront

et la console montre toujours que les fichiers image et js sont appelés depuis le CDN
Screenshot 2025-12-10 192413

Les ressources sont appelées depuis le cdn, mais sont-elles là ? Sinon, sont-elles dans le bucket ? Sont-elles accessibles depuis le bucket ?

Vous avez probablement des uploads dans un bucket différent ou quelque chose qui les empêche d’être à l’endroit attendu. Si c’est le cas, vous devrez les corriger manuellement comme indiqué. Vous devrez accéder à la console et voir où elles se trouvent dans l’enregistrement de l’upload.

La tâche d’upload des ressources semble-t-elle fonctionner ? L’indicateur de chargement continue de tourner parce que les autres ressources ne se chargent pas.

1 « J'aime »

Oui, ils sont là, les fichiers sont dans le bucket sous assets\nAccessible : https://repeal-obbba-discuss-uploads.s3.us-east-1.amazonaws.com/assets/logo-815195ae.png\n\nSeulement deux buckets, uploads et backups. Les sauvegardes fonctionnent bien.\n\nrake s3:upload_assets a donné l’erreur : \nrake aborted!\nAws::S3::Errors::AccessControlListNotSupported: The bucket does not allow ACLs (Aws::S3::Errors::AccessControlListNotSupported)\n\nJ’ai basculé sur ACLs activées et relancé s3:upload_assets edit: uploads:migrate_to_s3 mais…\nFileStore::ToS3MigrationError: Some uploads could not be migrated to the new scheme. You need to fix this manually. (FileStore::ToS3MigrationError)\n\n??? Vous devez corriger cela manuellement. (FileStore::ToS3MigrationError)

Il semble que vous ayez réparé le bucket et qu’il soit maintenant capable de téléverser des ressources, donc le site devrait fonctionner maintenant. Gérer les téléversements qui ne migreront pas est un autre problème (compliqué).

Voici l’une des ressources que vous essayez de servir :

https://discourse-cdn.repealobbba.org/assets/start-discourse-6f03a463.br.js

Le certificat est cassé, c’est donc votre problème. Il y a un certificat, mais il ne correspond pas à l’URL.

Comme je l’ai suggéré plus tôt, regardez l’onglet réseau des outils de développement de votre navigateur et voyez ceci :

1 « J'aime »

modification ci-dessus
Passé à ACL activées et exécuté à nouveau s3:upload_assets edit: uploads:migrate_to_s3

s3:upload_assets se termine sans problème maintenant

Je vois les erreurs réseau. Le certificat est-il un problème AWS ?

Merci encore pour votre temps sur ce sujet !!

Oui. Le certificat ne correspond pas au nom d’hôte. Il correspond à *.cloudfront.net

Ceci fonctionne : https://repeal-obbba-discuss-uploads.s3.us-east-1.amazonaws.com/assets/logo-815195ae.png

Ceci ne fonctionne pas : https://discourse-cdn.repealobbba.org/assets/start-discourse-6f03a463.br.js

Ceci fonctionne : https://repeal-obbba-discuss-uploads.s3.us-east-1.amazonaws.com/assets/start-discourse-6f03a463.br.js

Donc, vous devez changer votre CDN s3 pour https://repeal-obbba-discuss-uploads.s3.us-east-1.amazonaws.com – oh, je suppose que c’est l’adresse du bucket, donc ce ne serait pas idéal, mais cela fonctionnerait.

1 « J'aime »

Pas très enthousiaste à l’idée de « donc ce ne serait pas idéal » :wink:

Je regarde les noms de domaine alternatifs d’AWS comme solution possible.

C’est peut-être juste moi, mais l’ajout d’un CDN que @Discourse utilise en interne ne devrait pas être si difficile et nécessiter le soutien de personnes comme @pfaffman

Peut-être que @Falco ou @sam et @team (impossible de mentionner team) peuvent intervenir ??

Oui, tous les sites que nous hébergeons utilisent la combinaison S3 plus CloudFront. Même ce site que vous consultez actuellement.

2 « J'aime »

Merci de la confirmation ! Après avoir vu cela, j’ai réajusté DISCOURSE_S3_CDN_URL : pour revenir à amazonassigned.cloudfront.net en espérant que cela résolve les problèmes de certificat et d’URL.
Screenshot 2025-12-11 133250

J’ai reconstruit et réexécuté tous les rakes mentionnés dans la documentation.
rake posts:rebake
rake uploads:migrate_to_s3 génère toujours FileStore::ToS3MigrationError
rake posts:rebake_uncooked_posts

rake s3:upload_assets
rake s3:expire_missing_assets

Toujours aucun succès pour faire charger le site.

Des suggestions ?

Il s’avère que cela a été utile.
Screenshot 2025-12-12 001849