Backblaze B2 云存储服务的实验性 Amazon S3 API 支持

一些社区成员反复要求 Backblaze B2 云存储和 MinIO 集成 [1] 。B2 价格具有竞争力,并且拥有大量的粉丝。我们还从 Backblaze 团队那里了解到,他们正在积极扩展其 B2 云存储服务。我们在 MinIO 中添加了对 Backblaze B2 后端的实验性支持,以添加对其 B2 服务的 S3 兼容 API 支持。

MinIO 在内部将所有传入的 S3 API 调用转换为等效的 B2 存储 API 调用,这意味着所有 MinIO 存储桶和对象都存储为原生 B2 存储桶和对象。S3 对象层对使用 S3 API 的应用程序是透明的。这样,您就可以同时使用 Amazon S3 和 B2 API,而不会影响任何功能。

从以下链接下载预构建的二进制文件:

源代码可在以下链接获取: https://github.com/minio/minio/pull/5002

在 Linux amd64 上安装

wget https://data.minio.io:10000/minio-b2/linux-amd64/minio
chmod +x minio

下载完二进制文件后,请按照 指南https://www.backblaze.com 上创建一个账户,以获取您的 B2 存储的账户 ID应用程序密钥

启动 Minio 服务器

获取账户 ID应用程序密钥后,将其导出为环境变量。

export MINIO_ACCESS_KEY=<your_b2_accound_id>
export MINIO_SECRET_KEY=<your_b2_application_key>
minio gateway b2

要测试您的设置,请将浏览器指向 http://localhost:9000。使用相同的 B2 凭据登录并访问您的数据。

命令行访问

下载 MinIO 客户端 (mc),它提供了 UNIX coreutils(如 ls、cat、cp、mirror、diff 等)的现代替代方案。它支持文件系统和 Amazon S3 兼容的云存储服务。

mc config host add myb2 http://localhost:9000 b2_account_id b2_application_key

配置 mc 后,您可以使用 ls、cp、mirror 等子命令来管理您的数据。

mc ls myb2
[2017-02-22 01:50:43 PST]     0B b2-bucket/
[2017-02-26 21:43:51 PST]     0B my-bucket/
[2017-02-26 22:10:11 PST]     0B test-bucket1/

SDK 访问

MinIO 支持 轻量级 SDK 用于 Amazon S3 兼容的 API。您也可以使用 Amazon SDK 通过 MinIO 访问 B2。

from minio import Minio
from minio.error import ResponseError

client = Minio('localhost:9000',
               access_key='b2_account_id',
               secret_key='b2_application_key',
               secure=False)

# Get a full object
try:
    data = client.get_object('my-bucketname', 'my-objectname')
    with open('my-testfile', 'wb') as file_data:
        for d in data.stream(32*1024):
            file_data.write(d)
except ResponseError as err:
    print(err)

如果您有任何疑问或反馈,请通过 https://slack.minio.iohttps://twitter.com/minio 告知我们。

已知限制

Backblaze B2 不支持CopyObjectCopyObjectPart API,这两个 API 很少使用。虽然可以使用 GetObject 和 PutObject 在 MinIO 层模拟此操作,但这会产生额外的

编辑

Backblaze B2 支持现已在 MinIO 主分支中提供,请使用最新代码进行测试。

docker run -p 9000:9000 --name azure-s3 \
 -e "MINIO_ACCESS_KEY=b2_accound_id" \
 -e "MINIO_SECRET_KEY=b2_application_key" \
 minio/minio:edge gateway b2