#google-cloud #cloud-storage #cloud #google #storage #api-bindings

cloud-storage-rs

已迁移至 crates.io/crates/cloud-storage 一个用于上传文件到 Google 云存储并生成下载链接的 crate

13 个版本

0.4.3 2020 年 7 月 10 日
0.4.2 2020 年 7 月 10 日
0.2.4 2019 年 12 月 17 日
0.1.5 2019 年 10 月 25 日

网页编程 中排名 #2432

MIT 许可证

180KB
2.5K SLoC

已迁移至 cloud-storage

云存储

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

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

用法

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

[dependencies]
cloud-storage = "0.4"

示例

// create a new Bucket
let new_bucket = NewBucket { name: "mybucket", ..Default::default() }
let bucket = Bucket::create(new_bucket)?;
// 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")?;
let mut object = Object::create("mybucket", content, "folder/filename.txt", "application/text")?;
// let's copy the file
object.copy("mybucket2: electric boogaloo", "otherfolder/filename.txt")?;
// print a link to the file
println!("{}", object.download_url("new filename.txt", 1000)); // download link for 1000 seconds
// remove the file from the bucket
object.delete()?;

可以使用名为 SERVICE_ACCOUNT 的环境变量授予授权,它应包含包含 Google 凭证的 service-account-*******.json 文件的路径。服务帐户需要 devstorage.full_control 权限。这并非绝对必要,所以如果你需要解决这个问题,请告诉我!

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

测试

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

cargo test --tests -- --test-threads=1

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

依赖关系

~15–29MB
~580K SLoC