MinIO 是一个开源的高性能对象存储解决方案。它与 Amazon S3 云存储服务 API 兼容。可以使用 MinIO 为 ML、分析和应用程序数据工作负载设置高性能基础架构。 MinIO 是云对象存储的一个很好的本地替代方案。本文将简要介绍在您的机器上运行 MinIO 并让读者熟悉它的基础知识。请不要在生产中使用这些设置!

继续阅读以了解如何:-

1.搭建单节点MinIO实例

2.生成访问令牌

3.创建一个MinIO桶

  1. 将文件添加到 MinIO 存储桶

  2. 从 MinIO 存储桶中检索文件

  3. 生成预签名 URL 来服务 MinIO 对象

设置 MinIO

为了设置 MinIO,我们将使用 Docker,特别是 docker-compose。我之前使用 docker-compose 介绍了,如果您不熟悉它的用法,强烈建议您阅读这篇文章。复制下面代码片段的内容,并在您要存储 MinIO 对象的目录中创建一个名为 docker-compose.yml 的文件。

version: '3'
services:
  minio:
    image: quay.io/minio/minio:RELEASE.2022-02-18T01-50-10Z
    volumes:
      - ./data:/data
    ports:
      - 9000:9000
      - 9001:9001
    environment:
      MINIO_ROOT_USER: 'minio_user'
      MINIO_ROOT_PASSWORD: 'minio_password'
      MINIO_ADDRESS: ':9000'
      MINIO_CONSOLE_ADDRESS: ':9001'
    command: minio server /data

上面的方法将为 MinIO 控制台设置一个在端口 9001 上运行的单节点 MinIO 实例,为 MinIO API 设置端口 9000。它还会将容器内的数据文件夹挂载到您机器上的数据文件夹(与 docker-compose.yml 文件位于同一目录中)。如果容器停止,则存储在卷上的所有对象都将保留。启动终端并导航到 docker-compose.yml 文件的目录并执行以下命令

docker-compose up -d

Docker 将从 DockerHub 中提取 MinIO 映像并设置容器。如果没有错误,您应该能够看到您的容器在 Docker Desktop 上运行。

image.png

前往localhost:9001,您应该会看到 MinIO 控制台登录屏幕。

image.png

恭喜!您刚刚在您的机器上托管了一个 MinIO 实例!登录 MinIO 控制台并熟悉 UI。

image.png

如果您有兴趣在分布式模式下设置 MinIO,请在此处阅读更多。

生成访问令牌

要以编程方式从 MinIO 上传/检索文件,我们将使用Python MinIO API。在我们开始编写代码之前,我们必须从 MinIO 控制台生成一个访问令牌。前往 MinIO 控制台并导航至 Identity -> Service Accounts -> Create Service Accounts -> Create。然后,您将看到一个带有您的访问密钥和秘密密钥的模式。写下这些,因为这是唯一一次显示秘密。

image.png

接下来,安装 Pythonminio库。然后我们将像这样在 Python 中创建一个 MinIO 客户端,

# Create client with access and secret key
client = Minio('http://localhost:9000/', 
               'minio_secret_key',  
               'minio_secret_code', 
                secure=False)

所有 MinIO API 请求都将通过此客户端进行。请注意,我们没有使用 TLS 进行连接,因此安全参数设置为 False。

创建MinIO存储桶

建立与 MinIO 的连接后,我们可以像这样以编程方式创建存储桶

# check if bucket already exists
found = client.bucket_exists("test_bucket")
# create bucket if it does not exist
if not found:
    client.make_bucket("test_bucket")
else:
    print("Bucket 'test_bucket' already exists")

我们还可以使用 MinIO 控制台创建存储桶。导航到存储桶 -> 创建存储桶。

从 MinIO 存储桶中检索文件

我们可以像这样检索存储到 MinIO 存储桶中的文件

# retrieve file from MinIO bucket
bucketclient.fget_object("bucket_name", "file_name", "path_to_download_file_including_file_name")

也可以直接从 MinIO Console 下载文件。导航到存储桶->您想要的存储桶->浏览->单击所需的文件->下载。

生成预签名 URL 来服务 MinIO 对象

在某些用例中,我们可能希望通过 URL 提供 MinIO 文件,而不是以编程方式从存储桶中检索文件。我们可以像这样生成一个预签名的 URL,

# generate pre-signed URLs
image_url = client.get_presigned_url("GET", "bucket_name", 
                                    "file_name",
                                    expires=timedelta(days=7))

预签名 URL 的最长有效期为 7 天。

对 MinIO 和使用 MinIO Python API 从存储桶上传/检索文件的简要介绍到此结束。如果您有兴趣了解更多有关 MinIO 的信息,我强烈建议您阅读他们的官方文档。感谢您的阅读!这就是所有人!

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐