#google-cloud #cloud #google #对象存储 #存储 #API 绑定 #存储服务

cloud-storage

一个用于上传文件到 Google 云存储并生成下载链接的库

32 个版本

0.11.1 2022 年 5 月 7 日
0.11.0 2022 年 1 月 22 日
0.11.0-rc.12021 年 10 月 18 日
0.10.2 2021 年 6 月 6 日
0.3.4 2020 年 3 月 5 日

1733网页编程 中排名

Download history 20218/week @ 2024-02-28 18885/week @ 2024-03-06 21749/week @ 2024-03-13 11135/week @ 2024-03-20 35603/week @ 2024-03-27 26585/week @ 2024-04-03 14600/week @ 2024-04-10 16783/week @ 2024-04-17 14261/week @ 2024-04-24 15988/week @ 2024-05-01 11752/week @ 2024-05-08 24046/week @ 2024-05-15 31624/week @ 2024-05-22 17495/week @ 2024-05-29 28676/week @ 2024-06-05 20187/week @ 2024-06-12

106,679 每月下载量
17 crate(6 个直接)使用

MIT 许可证

345KB
5K SLoC

云存储

cloud-storage-rs on crates.io stripe-rust on docs.rs

一个库,可用于将数据块推送到 Google Cloud Storage,然后生成这些文件的下载链接。

用法

将以下行添加到您的 Cargo.toml 文件中

[dependencies]
cloud-storage = "0.10"

示例

// create a new Bucket
let new_bucket = NewBucket { name: "mybucket", ..Default::default() }
let bucket = Bucket::create(new_bucket).await?;
// upload a file to our new bucket
let content = b"Your file is now on google cloud storage!";
bucket.upload(content, "folder/filename.txt", "application/text").await?;
let mut object = Object::create("mybucket", content, "folder/filename.txt", "application/text").await?;
// let's copy the file
object.copy("mybucket2: electric boogaloo", "otherfolder/filename.txt").await?;
// print a link to the file
println!("{}", object.download_url(1000)); // download link for 1000 seconds
// remove the file from the bucket
object.delete().await?;

可以使用 SERVICE_ACCOUNTGOOGLE_APPLICATION_CREDENTIALS 环境变量授权,该变量应包含包含 Google 凭据的 service-account-*******.json 文件的路径。或者,可以直接通过 SERVICE_ACCOUNT_JSONGOOGLE_APPLICATION_CREDENTIALS_JSON 环境变量提供服务账户凭证,这在 CI 或 k8s 中提供机密信息时很有用。

服务账户还应具有 Service Account Token Creator(用于生成访问令牌)和 Storage Object Admin(用于生成下载文件的签名 URL)角色。

同步

如果您目前不打算运行异步执行器,那么 cloud_storage 提供了一个同步 API。要使用它,请启用功能标志 sync,然后调用 function().await 而不是调用 function_sync()

您需要在 Cargo.toml 中设置 global-clientsync 标志,例如

cloud-storage = { version = "0.11.0", features = ["global-client", "sync"] }

测试

要为此项目运行测试,首先创建一个名为TEST_BUCKET的环境参数(或.env文件中的条目)。确保此名称尚未被使用!测试将为此测试目的创建此存储桶。它还会创建几个以该名称为前缀的其他存储桶,但它们将被删除。接下来,您需要一个Google Cloud Storage项目,您必须为此项目创建一个服务账户。下载service-account.json文件,并将文件路径放置在环境参数SERVICE_ACCOUNT中。然后,运行

sh test.sh

必须使用test-threads=1,这样测试就不会超过每秒创建2个存储桶的速率限制。(根据您的网速,您可能能够使用多于1个测试线程)

依赖项

~15–31MB
~597K SLoC