Option to ignore VersionId from PutObject

Created on 8 November 2023, about 1 year ago
Updated 10 November 2023, about 1 year ago

If "Disable version sync" is checked, would it be possible to ignore the VersionId from PutObject as well? If not, perhaps a separate option?

I'm using a combination of Backblaze B2 and Bunny.net CDN, with an authenticated S3 connection between the two. There's apparently no support for ListObjectVersions, which is why I turned off version sync, but it's impossible to turn off bucket versioning completely and a version is still returned when an object is uploaded. If the version is added to the download URL, a signature is required as well, but if I turn on URL signing there's a mismatch. It doesn't matter if the bucket is configured and used as public or private. If I resync the metadata cache, the version is cleared and the file can be downloaded.

As a workaround, I've patched S3fsService::convertMetadata(), commenting out the part that stores the version info. It's probably not the best way, and it's definitely not configurable, but for me it works. I can share the patch here if someone wants it.

✨ Feature request
Status

Active

Version

3.0

Component

Code

Created by

πŸ‡ΊπŸ‡ΈUnited States Maeglin

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

  • Issue created by @Maeglin
  • πŸ‡ΊπŸ‡ΈUnited States cmlara

    πŸ’¬ Has versioning been removed from the d8+ versions of the module Active Has some related commentary on this.

    Targeting the link output is probably a better choice than targeting the storage for this scenario, especially since I could see us in the future s3fs wanting to actually take advantage of versions to ensure we target the correct read/write target on the backend.

    It does sound like you may be hitting some restrictions based on your CDN setup as I don't recall Backblaze prohibiting public buckets.

    Presigned with CDN's is a bit of a complex issue because of how the protocol validates signatures. A CDN would generaly need to actively re-sign the request for presigned URL's to work or have the link signed against the bucket domain and than re-write the domain to the CDN (I think I've seen this done by one user in the past)

  • πŸ‡ΊπŸ‡ΈUnited States Maeglin

    If I make the bucket public, and turn off S3 authentication on the CDN side, it works with the VersionId and no signing. Thankfully, it seems like the free egress agreement between the CDN and BackBlaze is still in effect with that configuration, so I'm not double-billed for bandwidth in the case of a cache miss.

    In any case, I'm actively not using versioning with BackBlaze for this, even though I can't turn it off completely. The bucket is configured to only keep the latest version of any particular object.

Production build 0.71.5 2024