S3 (non AWS) smesso di funzionare casualmente, presumibilmente da un aggiornamento

Ho un bucket configurato ma sembra che stia cercando di usare quello predefinito?

Uso GarageHQ come alternativa leggera a MinIO.

Sono sulla versione 3.6.0.beta1-dev
( ed6beea336 )

[2025-09-14 10:40:34] Rimozione della directory tmp ‘/var/www/discourse/tmp/backups/default/2025-09-14-104012’…
[2025-09-14 10:40:34] Caricamento dell’archivio…
[2025-09-14 10:40:35] ECCEZIONE: Bucket non trovato: default

[2025-09-14 10:40:35] /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/seahorse/client/plugins/raise_response_errors.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/dualstack.rb:21:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/accelerate.rb:43:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/checksum_algorithm.rb:169:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/invocation_id.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/seahorse/client/plugins/request_callback.rb:89:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/seahorse/client/plugins/response_target.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `block in call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/telemetry/no_op.rb:29:in `in_span'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/telemetry.rb:53:in `span_wrapper'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/seahorse/client/request.rb:72:in `send_request'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/client.rb:3710:in `create_multipart_upload'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/multipart_file_uploader.rb:67:in `initiate_upload'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/multipart_file_uploader.rb:58:in `upload'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/file_uploader.rb:42:in `block in upload'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/user_agent.rb:90:in `metric'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/file_uploader.rb:40:in `upload'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/customizations/object.rb:477:in `block in upload_file'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.227.0/lib/aws-sdk-core/plugins/user_agent.rb:90:in `metric'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/customizations/object.rb:476:in `upload_file'
/var/www/discourse/lib/backup_restore/s3_backup_store.rb:48:in `upload_file'
/var/www/discourse/lib/backup_restore/backuper.rb:351:in `upload_archive'
/var/www/discourse/lib/backup_restore/backuper.rb:41:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:9:in `backup'
/var/www/discourse/script/spawn_backup_restore.rb:31:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'

L’ultimo backup è stato fatto ieri ma ora non funziona più, altri servizi riescono ancora a fare il backup sul mio S3 locale senza problemi.

Qualcuno sa come posso risolvere questo problema?

Sì. AWS ha interrotto la libreria S3 per molti altri servizi.

Can't rebuild due to AWS SDK gem bump and new AWS Data Integrity Protections presenta alcune soluzioni alternative.

Ho creato questo aws-revert-template.yml per tornare a una versione precedente. Non so se funziona ancora; il mio file è datato 2025-08-06T05:00:00Z

Non sono del tutto convinto che questo sia il problema, però

a meno che non mi sbagli, ero sulla 3.6 da più di 2 giorni, eppure ho avuto un backup 2 giorni e 10 giorni fa.

Non molto altro. Penso che ti sbagli.

Ecco il commit su cui ti trovi:

Ma anche:

Il tuo bucket si chiama “default”?

Sì, ora sono sul commit, inizialmente non lo ero quando ho pubblicato questo problema, ho aggiornato per escludere un bug.

no, come affermato nell’OP, è per questo che non credo sia lo stesso problema a cui ti riferisci, il mio bucket è specificato, ho provato sia nelle impostazioni dell’interfaccia utente della sezione di backup sia tramite variabili d’ambiente nel yaml, continua comunque a provare a usare default

per chiarire nulla è cambiato dal lato discourse o garage da quando ha smesso di funzionare tranne un aggiornamento a 3.5 e poi a 3.6

1 Mi Piace

forse qualcuno con S3 effettivo potrebbe verificare se sta selezionando correttamente un bucket? lo stesso per altri 3rd party come backblaze, r2 ecc?

Quindi ho creato un bucket chiamato “Default” e funziona come previsto, quindi sì, non sta selezionando correttamente il nome del bucket che gli indico.

Tranne che migliaia di persone e l’hosting CDCK sarebbero probabilmente interessati anche loro e non lo sono. È molto più probabile che tu abbia eliminato o aggiunto un carattere a una riga nel tuo app.yml.

Puoi fare cose come questa:

grep -i S3 /var/discourse/containers/*
docker exec -it app bash -c 'grep s3 /var/www/discourse/config/discourse.conf

E se hai configurato s3 nelle impostazioni invece che con variabili d’ambiente, allora puoi dare un’occhiata a Configurare un provider di object storage compatibile con S3 per i caricamenti per vedere come sono.

non c’è niente che non va nella mia configurazione, non è stato cambiato nulla tranne l’aggiornamento di discourse. Ho provato la configurazione nello yaml e la configurazione nell’interfaccia utente, le impostazioni dell’interfaccia utente la mostrano letteralmente come “cyanlabs-community” e tuttavia il backup tenta ancora di salvare in “default”

nonostante abbia configurato s3 nell’interfaccia utente, il file discourse.conf non contiene riferimenti s3 come da il tuo secondo comando

Questo però significa che il bucket non c’è, puoi provare a creare un bucket e credenziali completamente nuovi e vedere se il caricamento lì funziona?

1 Mi Piace

Grazie, ma ho la sensazione di girare in tondo qui.

il bucket predefinito non esisteva all’inizio di questa conversazione, l’ho creato da allora e utilizza quel bucket nonostante abbia impostato il bucket cyanlabs-community nelle impostazioni.

sia cyanlabs-community che default esistono nell’istanza s3, ma Discourse non utilizzerà cyanlabs-community per quanto ci provi

nuovo bucket cyanlabsdiscourse

risultato del backup

[2025-09-22 15:14:59] Finalizzando il backup...
[2025-09-22 15:14:59] Finalizzando il file di dump del database: cyanlabs-official-community-2025-09-22-151437-v20250916082012.sql.gz
[2025-09-22 15:14:59] Rimozione della directory temporanea '/var/www/discourse/tmp/backups/default/2025-09-22-151437'...
[2025-09-22 15:14:59] Caricamento dell'archivio...
[2025-09-22 15:15:37] Esecuzione dell'hook after_create_hook per il backup...
[2025-09-22 15:15:37] Eliminazione dei vecchi backup...
[2025-09-22 15:15:37] Pulizia...
[2025-09-22 15:15:37] Rimozione dell'archivio dallo storage locale...
[2025-09-22 15:15:37] Rimozione dei file residui '.tar'...
[2025-09-22 15:15:37] Segnalazione del backup come completato...
[2025-09-22 15:15:37] Aggiornamento delle statistiche del disco...
[2025-09-22 15:15:37] Notifica a 'CyanLabs' della fine del backup...
[2025-09-22 15:15:40] Fatto!

bucket cyanlabsdiscourse

bucket default

Ciò che è interessante è che tenta ancora di stabilire la connessione a bucketname.s3.domain.tld, ad esempio cyanlabsdiscourse.s3.domain.tld, poiché senza aggiungere un record DNS non funzionerebbe a quel sotto-sottodominio. quindi l’impostazione viene rispettata per l’URL ma sembra essere ignorata dalla selezione del bucket

Mi sembra di aver provato di tutto, per ora userò solo il bucket predefinito, immagino.

AWS può essere misterioso! Mi dispiace che tu non sia riuscito a utilizzare il nome del bucket preferito. Difficile aiutare senza poterlo replicare, quindi immagino che dovrai accontentarti di usare il nome predefinito per il bucket.