Problemi con AWS CDN e S3

,

@Falco è ancora così? Pensavo di aver letto qualcosa su recenti problemi con l’uso di AWS, ma non riesco più a trovare l’argomento.

Sto riscontrando numerosi problemi nell’uso di AWS S3 seguendo le varie guide sugli argomenti pertinenti.

I backup funzionano come previsto, ma l’utilizzo di Cloudfront come CDN o il decommentare DISCOURSE_USE_S3 e/o DISCOURSE_S3_BUCKET causa un caricamento infinito (throbber).

Sospetto di aver configurato in modo errato il bucket degli upload e/o la distribuzione Cloudfront, ma non sono riuscito a trovare un errore. Sia il bucket di upload che quello di backup sono dietro la distribuzione e i backup funzionano bene, quindi???

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

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

## Configurazione archiviazione 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  o
#  DISCOURSE_S3_BUCKET: repeal-obbba-discuss-uploads
  DISCOURSE_S3_BACKUP_BUCKET: repeal-obbba-discuss-backups
  DISCOURSE_BACKUP_LOCATION: s3

Inoltre, l’aggiunta di questo alla configurazione

    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

Restituisce l’errore FAILED TO BOOTSTRAP (FALLITO L’AVVIO)

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.

come sempre… Qualsiasi pensiero o suggerimento sarebbe apprezzato.

Devi aggiungere la clausola che carica gli asset su s3.

Oh. Mi sbaglio, lo stai facendo tu.

Ciò suggerisce che c’è qualcosa che non va nella configurazione del bucket.

Penso che ci fosse un argomento che generava il json per configurare un bucket, ma non so se è ancora disponibile.

1 Mi Piace

Concordo
Sebbene una policy del bucket non sia stata utilizzata sul bucket dei backup, l’aggiunta di una policy al bucket di upload ha risolto il fallimento dell’avvio (bootstrap).
La json della policy è disponibile in CloudFront > Distribuzioni > la tua distribuzione > Modifica origine
Screenshot 2025-12-10 141220

Sfortunatamente, il ticchettio perpetuo (throbber) persiste.

La modifica della Proprietà Oggetto (Object Ownership) e degli ACL non cambia il risultato.
Screenshot 2025-12-10 141936

Impostazioni attuali. Credo che siano le impostazioni consigliate o forse sono confuso.
Screenshot 2025-12-10 141702
Screenshot 2025-12-10 141835

Dopo aver modificato le impostazioni, è necessario eseguire l’attività rant per caricare gli asset.

Inoltre, è possibile aprire la console per sviluppatori e verificare se i file che sta cercando di accedere esistono sul bucket o se c’è un problema con la cdn (Content Delivery Network).

1 Mi Piace

Grazie per aver continuato…

Sì, le attività rake vengono eseguite, non fa alcuna differenza.

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

Il throbber persiste.

rake uploads:migrate_to_s3 restituisce un errore

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

Almeno un controllore CDN mostra discourse-cdn.repealobbba.org -->Amazon CloudFront

e la console mostra ancora che i file di immagini e js vengono richiamati dalla CDN
Screenshot 2025-12-10 192413

Gli asset vengono richiamati dal cdn, ma sono lì? In caso contrario, sono nel bucket? Sono accessibili dal bucket?

Probabilmente hai alcuni caricamenti in un bucket diverso o qualcosa che impedisce loro di trovarsi nel posto previsto. In tal caso, dovrai correggerli manualmente come indicato. Dovrai accedere alla console e vedere dove si trovano nel record di caricamento.

L’attività di caricamento degli asset sembra funzionare? L’indicatore di caricamento continua a girare perché gli altri asset non vengono caricati.

1 Mi Piace

Sì, ci sono, i file sono nel bucket come assets\nAccessibile: https://repeal-obbba-discuss-uploads.s3.us-east-1.amazonaws.com/assets/logo-815195ae.png\n\nSolo due bucket, uploads e backups. I backup funzionano bene.\n\nrake s3:upload_assets ha dato errore: \nrake aborted!\nAws::S3::Errors::AccessControlListNotSupported: The bucket does not allow ACLs (Aws::S3::Errors::AccessControlListNotSupported)\n\nHo attivato il supporto per gli ACL ed eseguito di nuovo s3:upload_assets edit: uploads:migrate_to_s3 ma…\nFileStore::ToS3MigrationError: Some uploads could not be migrated to the new scheme. You need to fix this manually. (FileStore::ToS3MigrationError)\n\n??? You need to fix this manually. (FileStore::ToS3MigrationError)

Sembra che tu abbia risolto il problema del bucket ed ora sia in grado di caricare gli asset, quindi il sito dovrebbe funzionare ora. Gestire i caricamenti che non vengono migrati è un altro problema (complicato).

Ecco uno degli asset che stai cercando di servire:

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

Il certificato non è valido, quindi questo è il tuo problema. C’è un certificato, ma non corrisponde all’URL.

Come ho suggerito in precedenza, guarda la scheda di rete degli strumenti per sviluppatori nel tuo browser e vedrai questo:

1 Mi Piace

modifica da sopra
Passato ad ACL abilitate ed eseguito di nuovo s3:upload_assets edit: uploads:migrate_to_s3

s3:upload_assets ora viene completato senza problemi

Vedo gli errori di rete. Il certificato è un problema di AWS?

Grazie ancora per il tuo tempo!

Sì. Il certificato non corrisponde al nome host. Corrisponde a *.cloudfront.net

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

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

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

Quindi devi cambiare la tua CDN s3 in https://repeal-obbba-discuss-uploads.s3.us-east-1.amazonaws.com – oh, immagino che sia l’indirizzo del bucket, quindi non sarebbe l’ideale, ma funzionerebbe.

1 Mi Piace

Non sono molto entusiasta di “quindi non sarebbe l’ideale” :wink:

Sto guardando i nomi di dominio alternativi di AWS come possibile soluzione.

Forse sono solo io, ma l’aggiunta di un CDN che @Discourse utilizza internamente non dovrebbe essere così difficile e richiedere il gentile supporto di persone come @pfaffman

Forse @Falco o @sam e @team (non posso menzionare team) possono intervenire??

Sì, tutti i siti che ospitiamo utilizzano la combinazione S3 più CloudFront. Anche questo sito che stai navigando ora.

2 Mi Piace

Grazie per la conferma! Dopo aver visto questo, ho riaggiustato DISCOURSE_S3_CDN_URL: tornando a amazonassigned.cloudfront.net sperando che risolva i problemi di certificato e URL.
Screenshot 2025-12-11 133250

Ho ricostruito ed eseguito di nuovo tutti i rake menzionati nella documentazione.
rake posts:rebake
rake uploads:migrate_to_s3 genera ancora FileStore::ToS3MigrationError
rake posts:rebake_uncooked_posts

rake s3:upload_assets
rake s3:expire_missing_assets

Ancora nessun successo nell’ottenere il caricamento del sito.

Qualche suggerimento?

Si è rivelato utile.
Screenshot 2025-12-12 001849