用 kimi k2 Vibe Coding 一个 RustFS Python SDK 示例

本文分享 RustFS 的安装、访问密钥、Bucket 创建的使用,以及用 Python SDK 使用 RustFS 系统。

关于 RustFS

RustFS 是一款开源免费的对象存储系统,由 Rust 编写,完全兼容 S3 协议。支持二进制和 Docker 安装。本文分享 RustFS 默认密码的修改。

安装 RustFS

执行如下命令即可完成安装:

arduino 复制代码
curl -O  https://rustfs.com/install_rustfs.sh && bash install_rustfs.sh`

安装完毕,可以使用默认用户名和密码进行登录。默认用户名和密码信息默认存储在 /etc/default/rustfs

ini 复制代码
cat /etc/default/rustfs
RUSTFS_ACCESS_KEY=rustfsadmin
RUSTFS_SECRET_KEY=rustfsadmin
RUSTFS_VOLUMES="/data/rustfs0"
RUSTFS_ADDRESS=":9000"
RUSTFS_REGION="cn-east-1"
RUSTFS_CONSOLE_ENABLE=true
RUST_LOG=warn
RUSTFS_OBS_LOG_DIRECTORY="/var/logs/rustfs/"

可以看到默认用户名和密码都是 rustfsadmin,使用此信息,通过通过 localhost:9000 登录 RustFS:

访问密钥创建

登录 RustFS 控制台,在左侧导航栏选择访问密钥,点击右上角的添加访问密钥,输入过期时间、名称和描述即可完成创建:

保存好访问密钥(Access key 和 Access Token),后面会用到。

用 Kimi K2 生成 Python demo

给 Kimi K2 给一段下面的提示词:

bash 复制代码
假设你是 minio/s3 专家和 python 高手,我需需要你帮我利用 minio/s3 的 sdk boto3,帮我写一段程序,用来创建 minio bucket,并生成一个 txt文件,文件的内容是 Hello RustFS,然后把这个文件上传到 minio 的bucket 中

Kimi K2 就会生成一段使用 minio Python SDK 的代码,由于 RustFS 是 minio 的平替,因此,代码是完全适用 RustFS 的:

ini 复制代码
import os
import tempfile
import boto3
from botocore.exceptions import ClientError
from botocore.config import Config

# ========= 按需修改 =========
ENDPOINT_URL = "http://12.34.56.78:9000"   # MinIO 地址
ACCESS_KEY   = "ACCESS_KEY"
SECRET_KEY   = "SECRET_KEY"
REGION       = "cn-east-1"             # MinIO 可忽略
BUCKET_NAME  = "rustfs-demo"
OBJECT_NAME  = "hello.txt"
CONTENT      = "Hello RustFS"
# ============================

def main() -> None:
    # 1. 初始化 boto3 客户端
    rustfs_client = boto3.client(
        "s3",
        endpoint_url=ENDPOINT_URL,
        aws_access_key_id=ACCESS_KEY,
        aws_secret_access_key=SECRET_KEY,
        region_name=REGION,
        config=Config(signature_version="s3v4")
    )

    # 2. 若 bucket 不存在则创建
    try:
        rustfs_client.head_bucket(Bucket=BUCKET_NAME)
        print(f"Bucket '{BUCKET_NAME}' already exists.")
    except ClientError as e:
        if e.response["Error"]["Code"] == "404":
            rustfs_client.create_bucket(Bucket=BUCKET_NAME)
            print(f"Bucket '{BUCKET_NAME}' created.")
        else:
            raise

    # 3. 本地生成临时文件
    with tempfile.NamedTemporaryFile(mode="w+", delete=False) as tmp:
        tmp.write(CONTENT)
        tmp_path = tmp.name

    try:
        # 4. 上传文件
        rustfs_client.upload_file(
            Filename=tmp_path,
            Bucket=BUCKET_NAME,
            Key=OBJECT_NAME,
            ExtraArgs={"ContentType": "text/plain"}
        )
        print(f"Successfully uploaded '{OBJECT_NAME}' to bucket '{BUCKET_NAME}'.")
    except ClientError as exc:
        print("Upload failed:", exc)
    finally:
        # 5. 清理本地临时文件
        os.remove(tmp_path)

if __name__ == "__main__":
    main()

运行该 python 文件,可以得到如下响应:

arduino 复制代码
Bucket 'rustfs-demo' created.
Successfully uploaded 'hello.txt' to bucket 'rustfs-demo'.

在 RustFS 控制台上查看 Bucket 以及其中的数据:

可以看到 rustfs-demo Bucket 在 RustFS 上创建成功,而且其中有 hello.txt文件。说明 Python SDK 运行成功。

相关推荐
m0_480502642 天前
Rust 入门 生命周期-next2 (十九)
开发语言·后端·rust
寻月隐君2 天前
Rust Web 开发实战:使用 SQLx 连接 PostgreSQL 数据库
后端·rust·github
Moonbit3 天前
MoonBit Pearls Vol.05: 函数式里的依赖注入:Reader Monad
后端·rust·编程语言
Vallelonga3 天前
Rust 异步中的 Waker
经验分享·rust·异步·底层
m0_480502644 天前
Rust 入门 KV存储HashMap (十七)
java·开发语言·rust
Include everything4 天前
Rust学习笔记(三)|所有权机制 Ownership
笔记·学习·rust
码码哈哈爱分享4 天前
Tauri 框架介绍
css·rust·vue·html
寻月隐君5 天前
硬核实战:从零到一,用 Rust 和 Axum 构建高性能聊天服务后端
后端·rust·github
m0_480502645 天前
Rust 入门 泛型和特征-特征对象 (十四)
开发语言·后端·rust
RustFS5 天前
如何用 Rust 对 RustFS MCP Server 进行扩展?
rust