Configurar un proveedor de almacenamiento de objetos compatible con S3 para cargas

La R2 de Cloudflare finalmente está disponible públicamente (tardó solo un año, al parecer). (Aquí está el anuncio original: Announcing Cloudflare R2 Storage: Rapid and Reliable Object Storage, minus the egress fees)

Creé un bucket.

Creé un token que incluye: “Editar: Permitir acceso de edición a todos los objetos y operaciones de Listar, Escribir y Eliminar de todos los buckets”

Aquí está lo que he intentado:

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: auto
  DISCOURSE_S3_ACCESS_KEY_ID: redacted
  DISCOURSE_S3_SECRET_ACCESS_KEY: redacted
  DISCOURSE_S3_CDN_URL: https://pub-72eaa03782c542edbe00598fd1666be1.r2.dev
  DISCOURSE_S3_BUCKET: lc-testing
  DISCOURSE_S3_BACKUP_BUCKET: lc-testing/backups
  DISCOURSE_BACKUP_LOCATION: s3
  DISCOURSE_S3_ENDPOINT: https://cb46accbfcc3db1bdbba2bce07f8b509.r2.cloudflarestorage.com
  DISCOURSE_S3_INSTALL_CORS_RULE: false
  DISCOURSE_S3_CONFIGURE_TOMBSTONE_POLICY: false
  FORCE_S3_UPLOADS: 1

Pero la carga de activos falla con esto:

Aws::S3::Errors::NotImplemented: Header 'x-amz-acl' with value 'public-read' not implemented

Y entonces recordé hacer el bucket público como se describe en Public buckets · Cloudflare R2 docs

Pero todavía no funcionó.

S3 API compatibility · Cloudflare R2 docs muestra que x-amz-acl no está implementado.

Al echar un vistazo al código de Discourse, no me queda claro que sea posible hacer que R2 funcione sin cambios en el núcleo.

Después de deshabilitar las cargas, las copias de seguridad funcionan, por lo que R2 parece ser una forma muy económica de tener copias de seguridad S3. Pero como había hecho público ese bucket, la copia de seguridad también era pública (si puedes adivinar el nombre del archivo), así que si esto se resuelve, querrás buckets separados para copias de seguridad y cargas.

Eliminé esta línea y pude ver que subió un archivo, y pude acceder a él usando un dominio personalizado como s3_cdn_url. (Y una edición similar en la tarea rake de s3 permite que los activos se carguen).

5 Me gusta