3 个版本
0.0.5 | 2024 年 4 月 2 日 |
---|---|
0.0.4 | 2024 年 4 月 2 日 |
0.0.4-alpha | 2024 年 3 月 10 日 |
#10 in #listing
145KB
4K SLoC
lumni
lumni 是一个用于与 S3 等对象存储进行交互的工具。它完全使用 Rust 构建,并提供 Python 和 JS/WASM 通过 Web 的 API。
lumni 的理念是创建一个高性能且具有前瞻性的数据工具,能够适应新的(由 AI 驱动的)网络和使用模式。这包括客户端和服务模式的工作能力,以及模块化设计以在网络上进行计算功能。
短期内,重点是实现基本功能,如列表、复制和删除。
当前版本(0.0.3)可以
- 在 S3 桶或本地文件系统中列出和搜索项。
- 按名称、大小和修改时间进行过滤
- 从本地文件系统或 S3 桶获取项的内容
先决条件
- Python 或 Rust
- 可选:具有有效访问密钥和秘密密钥的 S3 账户
# 开发 - maturin(cargo install --locked maturin)- trunk(cargo install trunk)- npx(brew install npm; npm install -g npx)- rustup target add wasm32-unknown-unknown
安装
lumni 可以通过 Python(API)或直接通过 Rust(CLI)使用。一个基于浏览器(本地优先)的版本将在短期内纳入路线图。
Python(API)
只有 Linux 和 MacOS 轮子是预编译的。Windows 版本应该很快就会推出。
pip install lumni
Rust(CLI)
克隆仓库,并使用 Cargo 编译项目
git clone https://github.com/serverlessnext/lumni.git
cd lumni
cargo build --release
然后,将二进制文件从 ./target/release/lumni 复制到您的本地路径。
用法
快速入门
列表
# for s3://buckets: AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY must be set export AWS_ACCESS_KEY_ID=your_access_key export AWS_SECRET_ACCESS_KEY=your_secret_key export AWS_REGION=us-east-1 # optional
# Find all files in the "reports" directory, with names containing "2023" and # modified within the last 30 days, in a given S3 bucket. lumni ls s3://bucket-name/reports/ --name "*2023*" --mtime "-30D # Find all files in the current directory, larger than 100 MB and modified # within the last 5 days. lumni ls . --size "+100M" --mtime "-5D" # Find all files larger than 1 megabyte (MB) in a given S3 Bucket lumni ls s3://bucket-name/ --size "+1M" --recursive # Find all files modified more than 1 hour ago, recursively lumni ls . --mtime "+1h" --recursive
更多 列表 示例 这里。
请求
# print file contents from local file to stdout lakestream -X GET README.rst # write file contents from S3 to local file lakestream -X GET s3://bucket-name/100MB.bin > 100MB.bin
更多 请求 示例 这里。
Python 也可以用作 CLI。参数与 Rust 库一对一映射。
# Python python -m lumni ls ./ # Rust lumni ls ./
Python API
import lumni client = lumni.Client() # Define a filter dictionary filter_dict = { "name": "example.txt", "size": "5", "mtime": "1D", } # List the contents of a storage location with the filter result = client.list("s3://your-bucket", recursive=True, filter_dict=filter_dict) print(result)
Python API 文档 这里。
贡献
欢迎对 lumni 项目的贡献。请在 GitHub 仓库中打开一个问题或提交一个拉取请求。
许可证
lumni 在 Apache-2.0 许可证下发布。有关更多详细信息,请参阅 LICENSE。
链接
依赖项
~8–24MB
~385K SLoC