Hola de nuevo a todos,
Quería dar seguimiento a mi publicación anterior y compartir que he avanzado un poco.
Lo que funciona ahora
- Las cargas de usuario se sirven correctamente desde mi bucket S3 a través de la CDN (CloudFront), ¡así que eso es genial!
Sin embargo, todavía tengo un problema con los assets precompilados
Los assets precompilados todavía no se sirven correctamente desde la CDN
Cuando configuro DISCOURSE_CDN_URL a la URL de CloudFront (es decir, https://dsuqioxhrz2qn.cloudfront.net), las URL de los assets precompilados se convierten en:
https://dsuqioxhrz2qn.cloudfront.net/stylesheets/color_definitions_shades-of-blue_7_1_e6f11758f9c015d1e5ed9b08c437e9c5c267c932.css?__ws=forum.hobiguru.com
https://dsuqioxhrz2qn.cloudfront.net/stylesheets/discourse-presence_308d905aa5c03567866fec50e9a28d8721ab0463.css
El problema es que estas rutas no existen en mi bucket S3. Los assets precompilados se cargan en la carpeta /assets/* en S3 (por ejemplo, /assets/locales, /assets/plugins, /assets/scripts), pero no hay una carpeta /stylesheets/ y, por supuesto, la carga de esas URL resulta en un error 403 forbidden.
Si, en cambio, cambio DISCOURSE_CDN_URL: https://forum.hobiguru.com, entonces mi foro funciona correctamente, pero los assets ahora se sirven desde el servidor (por ejemplo, https://forum.hobiguru.com/) y no desde la CDN (por ejemplo, https://forum.hobiguru.com/stylesheets/admin_308d905aa5c03567866fec50e9a28d8721ab0463.css?__ws=forum.hobiguru.com)
Mi configuración actual (para contexto) es:
app.yaml
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: eu-central-1
DISCOURSE_S3_ACCESS_KEY_ID: AKIA......LQMB
DISCOURSE_S3_SECRET_ACCESS_KEY: PaXQu7pKN.....fJNY
DISCOURSE_S3_BUCKET: hobiguru-s3-bucket-eu
DISCOURSE_S3_CDN_URL: https://dsuqioxhrz2qn.cloudfront.net # Asegúrate de que la URL de la CDN apunte a CloudFront
DISCOURSE_CDN_URL: https://forum.hobigur.com # ¡OBSERVA ESTO!
y los hooks de precompilación:
hooks:
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
Parece que después de precompilar los assets, se cargan en S3 en una estructura determinada, pero luego, cuando se cargan a través de la CDN, la ruta a los objetos está un poco desviada.