Configuración de Amazon S3 de AWS para almacenamiento y Cloudfront para CDN

,

Primeros pasos

Necesitarás:

  1. Una instancia de Discourse con acceso a app.yml
  2. Una cuenta de AWS

Estrategia de nomenclatura

Hay muchos lugares donde se pueden cometer errores. Utilizar una estrategia de convención de nombres que tenga sentido para ti y, quizás, para otros, te ayudará a solucionar problemas, especialmente si estás configurando varias instancias de Discourse.

  • Usuario de IAM: tu-usuario-iam
  • Política: s3-discourse-politica-tu-usuario-iam
  • Bucket de copias de seguridad: tudominio-subdominio-backups
  • Bucket de subidas: tudominio-subdominio-uploads
  • Distribuciones de CDN: cdn-tudominio-subdominio y s3-tudominio-subdominio-uploads

Opcional: Bucket del proceso de configuración: a-origin-config-bucket

Configuración de AWS

Utiliza la configuración predeterminada en las páginas de configuración de AWS a menos que se indique lo contrario.

Nombres de S3, nombres, nombres

  • Dominio de la instancia de Discourse: subdominio.tudominio.tld (subdominio.tudominio.tld incluyendo www.tudominio.tld)
  • Usuario de IAM: tudominio-subdominio (tudominio-discourse, tudominio-forum o Discourse en apex/raíz: tudominio-tld-www)
  • Política para el usuario de IAM: s3-discourse-politica-tudominio-subdominio
  • Bucket de subidas: tudominio-subdominio-uploads Nota: No olvides establecer “Todos (acceso público)” en “Lectura” en Bucket > Permisos: Lista de control de acceso (ACL) - Lista de control de acceso (ACL) - Concesionario.
  • Bucket de copias de seguridad: tudominio-subdominio-backups
  • Distribuciones de CDN: cdn-tudominio-subdominio y s3-tudominio-subdominio-uploads
  • Bucket del proceso de configuración: a-origin-config-bucket

Usuarios de IAM

  1. Ve a IAM > Usuarios > Selecciona “Crear usuario
  2. IAM > Usuarios > Crear usuario > Especificar detalles del usuario > Detalles del usuario > Nombre de usuario > Ingresa un nombre, por ejemplo, tu-usuario-iam > Selecciona “Siguiente”
  3. IAM > Usuarios > Crear usuario > Establecer permisos > Opciones de permisos > Selecciona “Adjuntar políticas directamente” > Selecciona “Crear política” > Se abre la página Crear política (Alternativamente, la política puede crearse primero en Políticas y luego seleccionarse al crear el usuario en “Políticas de permisos”.)
  4. IAM > Usuarios > Crear usuario > Establecer permisos > Políticas de permisos > Filtrar por selector desplegable Tipo > Selecciona “Administrada por el cliente” > Selecciona la política recién creada > Selecciona “Siguiente” > Selecciona “Crear usuario”
  5. IAM > Usuarios > tu-usuario-iam > Credenciales de seguridad > Claves de acceso > Selecciona “Crear clave de acceso”
  6. IAM > Usuarios > tu-usuario-iam > Crear clave de acceso > Mejores prácticas y alternativas para claves de acceso > Selecciona “Otro” > Selecciona “Siguiente”
  7. IAM > Usuarios > tu-usuario-iam > Crear clave de acceso > Establecer etiqueta de descripción > Selecciona “Crear clave de acceso”
  8. IAM > Usuarios > tu-usuario-iam > Crear clave de acceso > Recuperar claves de acceso > Guarda de forma segura la clave de acceso y la clave de acceso secreta para usarlas en app.yml de Discourse > Selecciona “Hecho”

Políticas

  1. Modifica s3-discourse-politica-tu-usuario-iam.txt con tu nombre de usuario de IAM y los nombres de los buckets.
  2. Ve a IAM > Políticas > Crear política
  3. IAM > Políticas > Crear política > Especificar permisos > Editor de políticas > Selecciona “JSON” en el editor de políticas > Copia la política desde s3-discourse-politica-tu-usuario-iam.txt y pégala en el editor JSON sobrescribiendo el JSON existente > Selecciona “Siguiente”
  4. IAM > Políticas > Crear política > Revisar y crear > Detalles de la política > Nombre de la política > Ingresa el nombre de la política, por ejemplo, s3-discourse-politica-tu-usuario-iam > Selecciona “Siguiente”
  5. Ve a Usuarios de IAM: 4. IAM > Usuarios > Crear usuario para continuar con el proceso de creación de usuario

Buckets de Amazon S3

Crea y configura el bucket de copias de seguridad, el bucket de subidas y el bucket del proceso de configuración (opcional pero útil).

Crear el bucket de copias de seguridad tudominio-subdominio-backups

  1. Ve a Amazon S3 Buckets > Selecciona “Crear bucket
  2. Amazon S3 > Buckets > Crear bucket > Configuración general > Confirma la selección “Uso general”
  3. Amazon S3 > Buckets > Crear bucket > Configuración general > Nombre del bucket > Ingresa el nombre del bucket de copias de seguridad, por ejemplo, tudominio-subdominio-backups
  4. Amazon S3 > Buckets > Crear bucket > Configuración general > Confirma la selección “ACLs deshabilitadas (recomendado)”
  5. Amazon S3 > Buckets > Crear bucket > Configuración de bloqueo de acceso público para este bucket > Deselecciona “Bloquear todo el acceso público” y luego selecciona “Bloquear el acceso público a buckets y objetos concedidos a través de nuevas políticas de buckets o puntos de acceso públicos” y “Bloquear el acceso público y entre cuentas a buckets y objetos a través de cualquier política de bucket o punto de acceso público”
  6. Amazon S3 > Buckets > Crear bucket > Configuración de bloqueo de acceso público para este bucket > Desactivar el bloqueo de todo el acceso público podría hacer que este bucket y los objetos dentro de él se vuelvan públicos > Selecciona “Acepto que la configuración actual podría hacer que este bucket y los objetos dentro de él se vuelvan públicos.”
  7. Amazon S3 > Buckets > Crear bucket > Versionado de bucket > Versionado de bucket > Selecciona “Habilitar” Info: El versionado de bucket es necesario para las “Reglas de ciclo de vida”
  8. Amazon S3 > Buckets > Crear bucket > Selecciona “Crear bucket”

Configuración de reglas de ciclo de vida

Regla de retención de copias de seguridad

  1. Amazon S3 > Buckets > Selecciona el bucket recién creado, por ejemplo, tudominio-subdominio-backups
  2. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Selecciona “Crear regla de ciclo de vida”
  3. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Nombre de la regla de ciclo de vida > Ingresa el nombre de la regla, por ejemplo, retención de copias de seguridad
  4. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Elegir un ámbito de regla > Selecciona “Aplicar a todos los objetos del bucket”
  5. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Elegir un ámbito de regla > Aplicar a todos los objetos del bucket > Selecciona “Acepto que esta regla se aplicará a todos los objetos del bucket.”
  6. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Acciones de la regla de ciclo de vida > Selecciona “Transicionar versiones no actuales de objetos entre clases de almacenamiento”, “Vencer versiones actuales de objetos” y “Eliminar permanentemente versiones no actuales de objetos”
  7. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Acciones de la regla de ciclo de vida > Las transiciones se cobran por solicitud > Selecciona “Acepto que esta regla de ciclo de vida generará un costo de transición por solicitud.”
  8. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Transicionar versiones no actuales de objetos entre clases de almacenamiento > Elegir transiciones de clase de almacenamiento > Selecciona “Glacier Recuperación instantánea”
  9. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Transicionar versiones no actuales de objetos entre clases de almacenamiento > Días después de que los objetos se vuelven no actuales > Ingresa “1”
  10. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Vencer versiones actuales de objetos > Días después de la creación del objeto > Ingresa “7” o 15 o 30 o ???
  11. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Eliminar permanentemente versiones no actuales de objetos > Días después de que los objetos se vuelven no actuales > Ingresa “91”
  12. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Confirma que “Revisar acciones de transición y vencimiento” es correcto > Selecciona “Crear regla”

Regla de limpieza

  1. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Selecciona “Crear regla de ciclo de vida”
  2. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Nombre de la regla de ciclo de vida > Ingresa el nombre de la regla: limpieza
  3. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Elegir un ámbito de regla > Selecciona “Aplicar a todos los objetos del bucket”
  4. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Elegir un ámbito de regla > Aplicar a todos los objetos del bucket > Selecciona “Acepto que esta regla se aplicará a todos los objetos del bucket.”
  5. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Acciones de la regla de ciclo de vida > Selecciona “Eliminar permanentemente versiones no actuales de objetos” y “Eliminar marcadores de eliminación de objetos vencidos o cargas multipartes incompletas”
  6. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Eliminar permanentemente versiones no actuales de objetos > Días después de que los objetos se vuelven no actuales > Ingresa “92”
  7. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Eliminar permanentemente versiones no actuales de objetos > Eliminar marcadores de eliminación de objetos vencidos o cargas multipartes incompletas > Marcadores de eliminación de objetos vencidos > Selecciona “Eliminar marcadores de eliminación de objetos vencidos”
  8. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Eliminar permanentemente versiones no actuales de objetos > Eliminar marcadores de eliminación de objetos vencidos o cargas multipartes incompletas > Cargas multipartes incompletas > Selecciona “Eliminar cargas multipartes incompletas”
  9. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Eliminar permanentemente versiones no actuales de objetos > Eliminar marcadores de eliminación de objetos vencidos o cargas multipartes incompletas > Cargas multipartes incompletas > Eliminar cargas multipartes incompletas > Número de días > Ingresa “3” o ???
  10. Amazon S3 > Buckets > tudominio-subdominio-backups > Administración > Configuración de ciclo de vida > Confirma que “Revisar acciones de transición y vencimiento” es correcto > Selecciona “Crear regla”

Crear el bucket de subidas tudominio-subdominio-uploads

  1. Ve a Amazon S3 > Buckets > Selecciona “Crear bucket
  2. Amazon S3 > Buckets > Crear bucket > Configuración general > Confirma la selección “Uso general”
  3. Amazon S3 > Buckets > Crear bucket > Configuración general > Nombre del bucket > Ingresa el nombre del bucket de subidas, por ejemplo, tudominio-subdominio-uploads
  4. Amazon S3 > Buckets > Crear bucket > Configuración general Selecciona “ACLs habilitadas”
  5. Amazon S3 > Buckets > Crear bucket > Configuración de bloqueo de acceso público para este bucket > Deselecciona “Bloquear todo el acceso público” y luego selecciona “Bloquear el acceso público a buckets y objetos concedidos a través de nuevas políticas de buckets o puntos de acceso públicos” y “Bloquear el acceso público y entre cuentas a buckets y objetos a través de cualquier política de bucket o punto de acceso público”
  6. Amazon S3 > Buckets > Crear bucket > Configuración de bloqueo de acceso público para este bucket > Desactivar el bloqueo de todo el acceso público podría hacer que este bucket y los objetos dentro de él se vuelvan públicos > Selecciona “Acepto que la configuración actual podría hacer que este bucket y los objetos dentro de él se vuelvan públicos.”
  7. Amazon S3 > Buckets > Crear bucket > Selecciona “Crear bucket”
  8. Amazon S3 > Buckets > Pantalla de Buckets > Selecciona el bucket recién creado, por ejemplo, tudominio-subdominio-uploads
    Vuelve a realizar el paso 9 después de crear la Distribución #2
  9. Amazon S3 > Buckets > tudominio-subdominio-uploads > Permisos > Política del bucket > Selecciona Editar > Pega el JSON de Crear distribución #2 11. CloudFront > Distribuciones > ID de distribución > Editar origen > Control de acceso del origen > Selecciona “Guardar cambios”
  10. Amazon S3 > Buckets > tudominio-subdominio-uploads > Permisos > Lista de control de acceso (ACL) > Selecciona Editar > Todos (acceso público) > Selecciona “Lectura” > Cuando otorgas acceso al grupo Todos o a los usuarios autenticados, cualquier persona en el mundo puede acceder a los objetos en este bucket. Selecciona “Entiendo los efectos de estos cambios en mis objetos y buckets.” > Selecciona “Guardar cambios”

Crear un bucket del proceso de configuración a-origin-config-bucket
Crea un bucket para usar durante el proceso de configuración de la Distribución #1. El nombre y la configuración no son importantes ya que el bucket se usa temporalmente como un origen inicial que se eliminará durante el proceso de configuración.
1. Ve a Amazon S3 > Buckets > Selecciona “Crear bucket
2. Amazon S3 > Buckets > Crear bucket > Configuración general > Confirma la selección “Uso general”
3. Amazon S3 > Buckets > Crear bucket > Configuración general > Nombre del bucket > Ingresa el nombre del bucket de subidas, por ejemplo, a-origin-config-bucket
4. Navega por las páginas de configuración y “Crear bucket”

Distribuciones de CloudFront

Crea dos distribuciones de AWS S3 CloudFront. Una para servir activos del sitio web y la segunda para servir activos del bucket de subidas.

Crear distribución #1

  Distribución #1
    DISCOURSE_CDN_URL
      Nombre de la distribución: cdn-tudominio-subdominio
      Origen: subdominio.tudominio.tld
      Nombre de dominio de la distribución (URL de Cloudfront): asignado-por-AWS.cloudfront.net
      Nombres de dominio alternativos: discourse-cdn.tudominio.tld
  1. Ve a CloudFront > Distribuciones > Selecciona “Crear
  2. CloudFront > Distribuciones > Crear distribución > Elegir un plan > Selecciona “Pagar según el uso” > Selecciona “Siguiente”
  3. CloudFront > Distribuciones > Crear distribución > Comenzar > Opciones de distribución > Nombre de la distribución > Ingresa el nombre de la distribución, por ejemplo, cdn-tudominio-subdominio
  4. CloudFront > Distribuciones > Crear distribución > Comenzar > Opciones de distribución > Descripción - opcional > Ingresa “cdn-tudominio-subdominio” (Opcional pero ayuda con la visibilidad)
  5. CloudFront > Distribuciones > Crear distribución > Comenzar > Opciones de distribución > Tipo de distribución > Confirma la selección “Sitio web o aplicación individual” > Selecciona “Siguiente”
  6. CloudFront > Distribuciones > Crear distribución > Especificar origen > Tipo de origen > Selecciona “Otro” Referencia a cualquier origen de AWS o no AWS a través de su URL públicamente resoluble.
  7. CloudFront > Distribuciones > Crear distribución > Especificar origen > Origen > Origen personalizado > Ingresa el dominio, por ejemplo, subdominio.tudominio.tld
  8. CloudFront > Distribuciones > Crear distribución > Especificar origen > Configuración > Configuración de caché > Selecciona “Personalizar configuración de caché”
  9. CloudFront > Distribuciones > Crear distribución > Especificar origen > Configuración > Configuración de caché > Política de caché > Desde el desplegable selecciona “CachingOptimized” > Selecciona “Siguiente”
  10. CloudFront > Distribuciones > Crear distribución > Habilitar seguridad > toma tus decisiones - para esta guía > Selecciona “No habilitar protecciones de seguridad” > Selecciona “Siguiente”
  11. CloudFront > Distribuciones > Crear distribución > Revisar y crear > Selecciona “Crear distribución”
    Si usas una URL de CDN con marca → Paso 12
  12. CloudFront > Distribuciones > ID de distribución > Nombres de dominio alternativos > Selecciona “Agregar dominio”
  13. CloudFront > Distribuciones > ID de distribución > Nombres de dominio alternativos > Agregar dominio > Configurar dominios > Dominios > Dominios a servir > Ingresa el DISCOURSE_CDN_URL, por ejemplo, discourse-cdn.tudominio.tld > Selecciona “Siguiente”

Incompleto: Nombres de dominio alternativos: discourse-cdn.tudominio.tld

Crear distribución #2

  Distribución #2
    DISCOURSE_S3_CDN_URL
      Nombre de la distribución: s3-tudominio-subdominio-uploads
      Origen: tudominio-subdominio-uploads
      Nombre de dominio de la distribución (URL de Cloudfront: asignado-por-AWS.cloudfront.net
      Nombres de dominio alternativos: s3-cdn.tudominio.tld
  1. CloudFront > Distribuciones > Crear distribución
  2. CloudFront > Distribuciones > Crear distribución > Elegir un plan > Selecciona “Pagar según el uso” > Selecciona “Siguiente”
  3. CloudFront > Distribuciones > Crear distribución > Comenzar > Opciones de distribución > Nombre de la distribución > Ingresa el nombre de la distribución, por ejemplo, s3-tudominio-subdominio-uploads
  4. CloudFront > Distribuciones > Crear distribución > Comenzar > Opciones de distribución > Descripción - opcional > Ingresa “s3-tudominio-subdominio-uploads” (Opcional pero ayuda con la visibilidad)
  5. CloudFront > Distribuciones > Crear distribución > Comenzar > Opciones de distribución > Tipo de distribución > Confirma la selección “Sitio web o aplicación individual” > Selecciona “Siguiente”
  6. CloudFront > Distribuciones > Crear distribución > Especificar origen > Tipo de origen > Confirma la selección “Amazon S3”
  7. CloudFront > Distribuciones > Crear distribución > Especificar origen > Origen > Origen S3 > Selecciona “Explorar S3” > Selecciona el bucket de subidas “tudominio-subdominio-uploads” > Selecciona “Elegir” > Selecciona “Siguiente”
  8. CloudFront > Distribuciones > Crear distribución > Habilitar seguridad > toma tus decisiones - para esta guía > Selecciona “No habilitar protecciones de seguridad” > Selecciona “Siguiente”
  9. CloudFront > Distribuciones > Crear distribución > Revisar y crear > Confirma que “Revisar y crear” es correcto > Selecciona “Crear distribución” → La página de información de la distribución recién creada debería abrirse en CloudFront > Distribuciones > ID de distribución
  10. CloudFront > Distribuciones > ID de distribución > Orígenes > Selecciona el origen > Selecciona “Editar”
  11. CloudFront > Distribuciones > ID de distribución > Editar origen > Control de acceso del origen > ! Debes permitir el acceso a CloudFront usando esta política… > Selecciona “Copiar política” > Ve a Crear el bucket de subidas 9. Amazon S3 > Buckets > tudominio-subdominio-uploads > Permisos > Política del bucket

Incompleto: Nombres de dominio alternativos: s3-cdn.tudominio.tld

Administrador de Discourse

Actualizado hasta la versión de Discourse: 2025.12.0-latest

Realiza estos cambios en la Interfaz de administración de Discourse

Configuración de copias de seguridad /admin/backups/settings

  1. Máximo de copias de seguridad > Ingresa el número de copias de seguridad a mantener localmente
  2. Copia de seguridad con subidas > Selecciona “Incluir subidas en las copias de seguridad programadas. Deshabilitar esto solo respaldará la base de datos.”

Configuración de S3 /admin/site_settings/category/all_results?filter=S3

  1. S3 usar URL de CDN para todas las subidas > Selecciona “Usar URL de CDN para todos los archivos subidos a S3 en lugar de solo para imágenes.” (Discourse viene deseleccionado)

Editar configuración (app.yml) URLs sin marca

Edita el app.yml realizando los cambios a continuación para URLs con marca o URLs de Cloudfront sin marca.

Discourse URLs sin marca

Usa esto para distribuciones de Cloudfront sin marca. Tu DISCOURSE_S3_REGION podría ser diferente.
DISCOURSE_CDN_URL: https://amazonassigned.cloudfront.net

Configuración de almacenamiento S3 (sin marca)

  ## Configuración de almacenamiento S3
  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION:  us-east-1
  DISCOURSE_S3_ACCESS_KEY_ID: clave ofuscada
  DISCOURSE_S3_SECRET_ACCESS_KEY: clave ofuscada
  DISCOURSE_S3_CDN_URL: https://amazonassigned.cloudfront.net
  DISCOURSE_S3_BUCKET: tu-nombre-de-bucket-uploads
  DISCOURSE_S3_BACKUP_BUCKET: tu-nombre-de-bucket-backups
  DISCOURSE_BACKUP_LOCATION: s3

Discourse URLs con marca

Configuración de DNS

Si prefieres usar URLs basadas en tudominio.com para las CDNs, necesitas realizar algunos cambios en DNS y ajustar tus URLs de CDN.

Consejo: No olvides agregar discourse-cdn.tudominio.com y s3-cdn.tudominio.com como nombres de dominio en “Nombres de dominio alternativos” para sus respectivas distribuciones de Cloudfront.

Configuración de DNS si deseas usar distribuciones de Cloudfront con marca de dominio.

DISCOURSE_CDN_URL

Registro existente:	A   discourseinstance.tudominio.com   IP de la instancia  Nota: Esta es la IP de la instalación existente de Discourse.
Nuevo registro:		A   discourse-cdn-cloudfront.tudominio.com   IP de la instancia
Nuevo registro: 		CNAME discourse-cdn.tudominio.com  ->   amazonassigned.cloudfront.net

DISCOURSE_S3_CDN_URL

Nuevo registro:		CNAME s3-cdn-cloudfront.tudominio.com  ->   amazonassigned.cloudfront.net
Nuevo registro: 	CNAME  s3-cdn.tudominio.com  ->   s3-cdn-cloudfront.tudominio.com

Editar configuración (app.yml) URLs con marca

Una vez completados los cambios de DNS, puedes editar tu app.yml realizando los cambios a continuación.

Cambia DISCOURSE_CDN_URL y/o DISCOURSE_S3_CDN_URL si estás usando CNAME de dominio para la distribución de Cloudfront (amazonassigned.cloudfront.net).

DISCOURSE_CDN_URL: https://discourse-cdn.tudominio.com

Configuración de almacenamiento S3 (con marca)

## Configuración de almacenamiento S3
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION:  us-east-1
DISCOURSE_S3_ACCESS_KEY_ID: clave ofuscada
DISCOURSE_S3_SECRET_ACCESS_KEY: clave ofuscada
DISCOURSE_S3_CDN_URL: https://s3-cdn.tudominio.com
DISCOURSE_S3_BUCKET: tu-nombre-de-bucket-uploads
DISCOURSE_S3_BACKUP_BUCKET: tu-nombre-de-bucket-backups
DISCOURSE_BACKUP_LOCATION: s3

Ediciones adicionales de configuración (app.yml)

Independientemente del enfoque que uses, URLs con marca o URLs de Cloudfront, necesitarás la sección after_assets_precompile a continuación para asegurar que las cosas se mantengan actualizadas durante las reconstrucciones posteriores.

  hooks:
    after_code:
      - exec:
          cd: $home/plugins
          cmd:
            - git clone https://github.com/discourse/docker_manager.git
            -puede que tengas más plugins
    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

Reconstruye tu instancia con ./launcher rebuild app

Después de que ./launcher rebuild app se complete con éxito, ejecuta estos rakes.

./launcher enter app

rake posts:rebake
rake uploads:migrate_to_s3
rake posts:rebake_uncooked_posts

rake s3:upload_assets
rake s3:expire_missing_assets

Si los rakes se completan sin errores, entonces estás listo.

En algunos sitios, la reconstrucción inicial fallará con un error relacionado con s3:upload_assets. Si esto sucede,

verifica la configuración de “lectura” en el bucket de subidas. Si está configurada correctamente, entonces,

comenta o elimina la sección after_assets_precompile:

  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

y ejecuta ./launcher rebuild app nuevamente. Luego ejecuta “rake s3:upload_assets” y “rake s3:expire_missing_assets”.

Si ambos rakes se completan sin errores, vuelve a agregar o descomenta la sección after_assets_precompile, reconstruye nuevamente y realiza todos los rakes listados anteriormente.

Si alguno de los rakes da un error o la reconstrucción falla nuevamente, tienes algo incorrecto en tu app.yml y/o configuraciones de AWS S3 y/o registros DNS. ¡Buena caza! :slight_smile:

s3-discourse-politica-tu-usuario-iam.txt|adjunto (697 Bytes)

1 me gusta

Respuesta de Soporte de AWS sobre: Confirmación del enfoque en la regla de limpieza

He revisado la configuración de su regla de Ciclo de Vida propuesta, y me complace confirmar que su configuración está bien diseñada y sigue las mejores prácticas de AWS para la gestión de depósitos de copias de seguridad (backup buckets).

========== Evaluación de la Regla de Ciclo de Vida ==========

Su configuración es excelente y aborda las áreas clave para la limpieza de copias de seguridad:

  • Limpieza de Versiones No Actuales (92 días): Este es un período de retención sensato que equilibra los costos de almacenamiento con las necesidades de recuperación. La retención de 92 días proporciona tiempo suficiente para la validación de copias de seguridad mientras se evita la acumulación indefinida de almacenamiento.

  • Eliminación de Marcadores de Eliminación Expirados: Configurado correctamente para limpiar automáticamente los marcadores de eliminación huérfanos, lo que ayuda a optimizar los costos de almacenamiento y el rendimiento del depósito.

  • Limpieza de Cargas Multipartes Incompletas (3 días): La configuración de 3 días es óptima: lo suficientemente corta para evitar el desperdicio de almacenamiento por cargas fallidas, pero lo suficientemente larga para dar cabida a operaciones legítimas de copias de seguridad grandes.

  • Aplicación del Alcance: Aplicar a “todos los objetos en el depósito” es apropiado para depósitos de copias de seguridad dedicados donde todo el contenido sigue el mismo patrón de ciclo de vida.

Respuesta de Soporte de AWS sobre: Configuración del ciclo de vida de los depósitos de copias de seguridad

Revisión de la Configuración del Ciclo de Vida de S3 para Depósitos de Copias de Seguridad

He analizado su configuración completa del ciclo de vida y puedo confirmar que su regla de “retención de copias de seguridad” está bien estructurada y sigue las mejores prácticas de AWS para la gestión de copias de seguridad.

Hallazgos clave de mi investigación:

  • Su depósito tiene dos reglas de ciclo de vida complementarias que trabajan juntas de manera efectiva
  • La regla de “retención de copias de seguridad” gestiona correctamente las versiones actuales y no actuales con plazos apropiados
  • La configuración incluye transiciones de almacenamiento rentables para versiones no actuales
  • Todos los componentes de la regla están configurados correctamente con parámetros de tiempo apropiados
  • El depósito está configurado correctamente en us-east-1 con los permisos adecuados

Evaluación de la Configuración:

Su regla de “retención de copias de seguridad” gestiona eficazmente sus objetos de copia de seguridad a lo largo de su ciclo de vida:

  • Transfiere versiones no actuales a Glacier Instant Retrieval después de 1 día (optimización de costos)
  • Expira versiones actuales después de 7 días (apropiado para copias de seguridad regulares)
  • Elimina permanentemente versiones no actuales después de 91 días (buen período de retención)

Esta regla complementa su regla de “limpieza” que se encarga de:

  • Eliminación de marcadores de eliminación expirados (evita marcadores huérfanos)
  • Limpieza de cargas multipartes incompletas después de 3 días (evita el desperdicio de almacenamiento)
  • Eliminación de versiones no actuales después de 92 días (asegura una limpieza completa)

Ambas reglas se aplican a todos los objetos en el depósito, lo cual es apropiado para el almacenamiento de copias de seguridad dedicado donde todo el contenido sigue el mismo patrón de ciclo de vida.

La expiración de 7 días para las versiones actuales parece apropiada para escenarios de copias de seguridad regulares, pero puede ajustarla según sus requisitos específicos de retención (15 o 30 días si se necesita una retención más larga).

Su implementación está completa y sigue las mejores prácticas de AWS para la gestión del ciclo de vida de S3.


Resulta que hay una forma más eficiente.

CloudFront > Distribuciones > Crear distribución > Especificar origen > Tipo de origen > Seleccione “Otro” Haga referencia a cualquier origen de AWS o no AWS a través de su URL resoluble públicamente.

CloudFront > Distribuciones > Crear distribución > Especificar origen > Origen > Origen personalizado > Ingrese el dominio, por ejemplo, subdomain.yourdomain.tld

CloudFront > Distribuciones > Crear distribución > Especificar origen > Configuración > Configuración de caché > Seleccione “Personalizar la configuración de caché”

CloudFront > Distribuciones > Crear distribución > Especificar origen > Configuración > Configuración de caché > Política de caché > Desde el menú desplegable, seleccione “CachingOptimized” > Seleccione “Siguiente”

Continúe con la configuración de seguridad, ignore los Pasos 10 a 14 originales

CloudFront > Distribuciones > Crear distribución > Revisar y crear > Seleccione “Crear distribución”