Problemas con AWS CDN y S3

,

@Falco ¿Sigue siendo este el caso? Creí leer algo sobre problemas recientes al usar AWS, pero no encuentro el tema de nuevo.

Estoy teniendo numerosos problemas al usar AWS S3 siguiendo las guías de los temas relevantes.

Las copias de seguridad funcionan como se espera, pero usar Cloudfront como CDN o descomentar DISCOURSE_USE_S3 y/o DISCOURSE_S3_BUCKET provoca un throbber perpetuo.

Sospecho que tengo algo mal configurado en el bucket de subidas y/o la distribución de Cloudfront, pero no he podido encontrar un error. Tanto el bucket de subidas como el de copias de seguridad están detrás de la distribución y las copias de seguridad funcionan bien, así que ¿???

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

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

## Configuración de almacenamiento 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

Además, añadir esto a la configuración

    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

Da error de FALLO AL INICIAR

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.

Como siempre… Cualquier idea o sugerencia será apreciada.

Necesitas añadir la estrofa que sube los activos a s3.

Oh. Estoy equivocado, lo estás haciendo tú.

Eso sugiere que hay algo mal con la configuración del bucket.

Creo que solía haber un tema que generaba el json para configurar un bucket, pero no sé si todavía existe.

1 me gusta

De acuerdo
Aunque no se utilizó una política de bucket en el bucket de copias de seguridad, agregar una política al bucket de subidas resolvió el fallo de arranque.
La política json está disponible en CloudFront>Distribuciones>tu distribución>Editar origen
Screenshot 2025-12-10 141220

Desafortunadamente, el indicador de carga perpetuo persiste.

Ajustar la Propiedad del Objeto y las ACL no cambia el resultado.
Screenshot 2025-12-10 141936

Configuración actual. Creo que son las configuraciones recomendadas o quizás estoy confundido.
Screenshot 2025-12-10 141702
Screenshot 2025-12-10 141835

Después de cambiar la configuración, debe ejecutar la tarea rant para subir los activos.

Además, puede abrir la consola del desarrollador y ver si los archivos que está intentando acceder existen en el bucket o si hay un problema con la cdn.

1 me gusta

Gracias por continuar…

Sí, las tareas rake se ejecutan, no marca ninguna diferencia.

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

El throbber persiste.

rake uploads:migrate_to_s3 sí produce un error

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

Al menos un verificador de CDN muestra discourse-cdn.repealobbba.org -->Amazon CloudFront

y la consola todavía muestra que los archivos de imágenes y js se están llamando desde el CDN
Screenshot 2025-12-10 192413

Los recursos se llaman desde la cdn, pero ¿están ahí? Si no, ¿están en el bucket? ¿Son accesibles desde el bucket?

Es probable que tengas algunas subidas en un bucket diferente o algo que impide que estén en el lugar esperado. Si es así, tendrás que arreglarlas manualmente como se indica. Necesitarás acceder a la consola y ver dónde están en el registro de subida.

¿Parece que la tarea de subir recursos está funcionando? El indicador de carga sigue girando porque los otros recursos no se están cargando.

1 me gusta

Sí, están ahí, los archivos están en el bucket como assets\nAccesible: https://repeal-obbba-discuss-uploads.s3.us-east-1.amazonaws.com/assets/logo-815195ae.png\n\nSolo dos buckets, uploads y backups. Backups están funcionando bien.\n\nrake s3:upload_assets dio error: \nrake aborted!\nAws::S3::Errors::AccessControlListNotSupported: El bucket no permite ACLs (Aws::S3::Errors::AccessControlListNotSupported)\n\nCambié a ACLs habilitadas y ejecuté de nuevo s3:upload_assets edit: uploads:migrate_to_s3 pero…\nFileStore::ToS3MigrationError: Algunas subidas no pudieron ser migradas al nuevo esquema. Necesitas arreglar esto manualmente. (FileStore::ToS3MigrationError)\n\n??? Necesitas arreglar esto manualmente. (FileStore::ToS3MigrationError)

Parece que arreglaste el bucket y ahora puede subir activos, por lo que el sitio debería funcionar ahora. Lidiar con las subidas que no migrarán es otro problema (complicado).

Aquí hay uno de los activos que estás tratando de servir:

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

El certificado está roto, así que ese es tu problema. Hay un certificado, pero no coincide con la URL.

Como sugerí antes, mira la pestaña de red de las herramientas de desarrollador en tu navegador y mira esto:

1 me gusta

edit from above
Cambié a ACLs habilitadas y ejecuté s3:upload_assets edit: uploads:migrate_to_s3 de nuevo

s3:upload_assets se completa sin problemas ahora

Veo los errores de red. ¿Es el certificado un problema de AWS?

¡¡Gracias de nuevo por su tiempo en esto!!

Sí. El certificado no coincide con el nombre del host. Coincide con *.cloudfront.net

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

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

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

Así que necesitas cambiar tu CDN de s3 a https://repeal-obbba-discuss-uploads.s3.us-east-1.amazonaws.com – oh, supongo que esa es la dirección del bucket, así que no sería lo ideal, pero funcionaría.

1 me gusta

No me entusiasma mucho lo de “así que no sería lo ideal” :wink:

Estoy mirando los nombres de dominio alternativos de AWS como posible solución.

Quizás sea solo cosa mía, pero agregar una CDN que @Discourse usa internamente no debería ser tan difícil y requerir el amable apoyo de gente como @pfaffman

¿Quizás @Falco o @sam y @team (no puedo mencionar a team) puedan opinar??

Sí, todos los sitios que alojamos utilizan la combinación de S3 más CloudFront. Incluso este sitio que estás viendo ahora mismo.

2 Me gusta

¡Gracias por confirmar! Después de ver esto, volví a ajustar DISCOURSE_S3_CDN_URL: a amazonassigned.cloudfront.net con la esperanza de que esto solucione los problemas de certificado y URL.
Screenshot 2025-12-11 133250

Reconstruí y volví a ejecutar todos los rakes mencionados en la documentación.
rake posts:rebake
rake uploads:migrate_to_s3 todavía genera FileStore::ToS3MigrationError
rake posts:rebake_uncooked_posts

rake s3:upload_assets
rake s3:expire_missing_assets

Sigue sin haber suerte para que el sitio cargue.

¿Alguna sugerencia?

Resultó ser útil.
Screenshot 2025-12-12 001849