Cloudflares R2 ist endlich öffentlich verfügbar (es hat anscheinend nur ein Jahr gedauert). (Hier ist die ursprüngliche Ankündigung: Announcing Cloudflare R2 Storage: Rapid and Reliable Object Storage, minus the egress fees)
Ich habe einen Bucket erstellt.
Ich habe einen Token erstellt, der Folgendes beinhaltet: „Bearbeiten: Bearbeitungszugriff auf alle Objekte und List-, Schreib- und Löschvorgänge aller Buckets zulassen“
Hier ist, was ich versucht habe:
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
Aber das Hochladen von Assets schlägt mit Folgendem fehl:
Aws::S3::Errors::NotImplemented: Header 'x-amz-acl' with value 'public-read' not implemented
Und dann erinnerte ich mich, den Bucket wie unter Public buckets · Cloudflare R2 docs beschrieben öffentlich zu machen.
Aber es funktionierte immer noch nicht.
S3 API compatibility · Cloudflare R2 docs zeigt, dass x-amz-acl nicht implementiert ist.
Wenn man sich den Discourse-Code ansieht, ist mir nicht klar, ob es möglich ist, R2 ohne Änderungen am Kern zum Laufen zu bringen.
Nachdem ich das Hochladen deaktiviert hatte, funktionierten Backups, sodass R2 eine sehr günstige Möglichkeit zu sein scheint, S3-Backups zu haben. Aber da ich diesen Bucket öffentlich gemacht hatte, war das Backup auch öffentlich (wenn man den Dateinamen erraten kann). Wenn dies also geklärt wird, möchten Sie separate Buckets für Backups und Uploads haben.
Ich habe diese Zeile entfernt und konnte sehen, dass eine Datei hochgeladen wurde und ich sie über eine benutzerdefinierte Domain als s3_cdn_url darauf zugreifen konnte. (Und eine ähnliche Bearbeitung der S3-Rake-Aufgabe ermöglicht das Hochladen von Assets.)