The Backblaze S3 Compatible API features limited support for ACLs (Access Control Lists). Get Object ACL and Get Bucket ACL calls will work as expected. However, object-level ACLs are not supported. For example, a Get Object ACL call returns the ACL for the Bucket the object is contained in.
If a Bucket is private, the ACL returned for the Bucket and any files within the bucket will be “private”. If a Bucket is public, the ACL returned for the Bucket and any files within the bucket will be “public-read”.
The S3 Compatible API supports the Put Bucket ACL call to change between "private" and “public-read” only. Attempting to put a different value will return an error.
The Put Object ACL call only supports the same canned ACL values mentioned previously. The call will succeed only when specified ACL matches the ACL of the bucket.
Backblaze的产品价格要比原生S3优惠,然后支持S3兼容(兼容了但没完全兼容
后台储存配置选择的是MINIO配置,endpoint和bucket正常填写,官方支持拼接url的请求类型,设置类型为网盘。
通过b2修改cors为指定要求后,上传文件进行测试,第一步的option请求正常返回200,第二步的PUT操作返回状态码400,内容提示不支持ACL 'authenticated-read'类型
查找官方文档,原因是ACL兼容上只兼容到Bucket,且bucket只根据类型设置有private和public-read类型,支持的ACL也只有这两个,Object实际返回值和提交值为所属Bucket,经过测试使用的bucket不管是private还是public都不能支持,原文如下:
进一步测试,确认bucket类型为public,将存储改为直链盘添加,此时上传能正常返回200状态码上传成功。
另:使用B2另一个原因是从B2到CF的回源流量不计费,对于某些站点来说可以节省相当数量的支出,但B2官方推荐的做法是文件从某个他们的反向代理服务器出口进CF,URL是官方出口域名/bucket/filepath/filename.end这种形式,尝试在自有域名处填写已经设置完成的自有域名/bucket/filepath/,这里应该是做了过滤后面的路径最终没有参加URL组成。
如果考虑后期支持BackBlaze B2的话主要有两点:
1、只有private和public类型,功能上可能需要调整 2、自定义域名增加自定义路径,这样可以直接匹配经过CDN的文件路径