#amazon-s3 #object-store #python #data #file-utility #listing #list

bin+lib lumni

适用于对象存储的便携式文件工具

3 个版本

0.0.5 2024 年 4 月 2 日
0.0.4 2024 年 4 月 2 日
0.0.4-alpha2024 年 3 月 10 日

#10 in #listing

Apache-2.0 协议

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。

链接

文档:https://lumnidata.com

依赖项

~8–24MB
~385K SLoC