#google-cloud #google-cloud-platform #google-service #protobuf #google-api #version

google-cloud-rust-raw

一套用于与各种 Google Cloud Platform 服务交互的客户端库

8 个版本 (破坏性更新)

0.17.1-beta.12024 年 3 月 27 日
0.16.1 2023 年 12 月 7 日
0.16.0 2023 年 11 月 13 日
0.15.0 2023 年 7 月 12 日
0.10.0 2021 年 8 月 26 日

#106 in 网页开发

Download history 233/week @ 2024-04-28 220/week @ 2024-05-05 166/week @ 2024-05-12 193/week @ 2024-05-19 112/week @ 2024-05-26 215/week @ 2024-06-02 171/week @ 2024-06-09 113/week @ 2024-06-16 81/week @ 2024-06-23 168/week @ 2024-06-30 51/week @ 2024-07-07 156/week @ 2024-07-14 138/week @ 2024-07-21 165/week @ 2024-07-28 63/week @ 2024-08-04 43/week @ 2024-08-11

每月 412 次下载
用于 google-cloud-rust

自定义许可协议

4.5MB
83K SLoC

googleapis-raw

这些是基于 grpcio 的 Google API 原始绑定。

版本说明

该库目前锁定在 grpcio 0.13.0 和 protobuf 2.28.0。这是由于 grpcio 的一个内部依赖项。请确保您的库或应用程序中匹配这些库版本。

文档

要生成和打开文档,请运行

cargo doc --open

示例

要运行手写的示例,请尝试

cargo run --example spanner-query
cargo run --example bigtable-query

设置 Google Cloud SDK

在运行示例之前,请确保您的环境中已设置 Google Cloud SDK。如果您需要帮助,请遵循以下指南

  1. 安装 SDK
  2. 设置 SDK
  3. 开始认证

最后检查

  • 运行 gcloud info 以查看 SDK 配置。
  • 运行 echo $GOOGLE_APPLICATION_CREDENTIALS 以验证是否已设置凭据。
  • 运行 gcloud auth login 登录到 Google Cloud

提供了 Docker 设置,用于安装所有必要的工具和库,请参阅 ./docker 文件夹中的 README

设置特定 Google 服务的有用链接

.proto 文件生成 Rust 绑定

注意:您可能需要在 protobuf 更新后更新这些绑定。此过程需要更新 protobuf-codegen cargo 插件。

这需要安装protobuf库和protoc-gen-rust插件,这是一个protobuf的插件。安装的protobuf版本和protobuf crate应该具有相同的版本,例如:2.7.0。通过cargo安装protoc-gen-rust插件。

cargo install protobuf-codegen

请确保protoc-gen-rust二进制文件在您的$PATH环境变量中可用。

然后

  1. ./src目录中,删除所有不是mod.rs*.rs文件[1]。您可能希望运行prepare.sh脚本。

  2. 运行./generate.sh脚本

通过运行cargo build来确保构建正常工作。

[1] generate.sh脚本将不会为目录生成所需的mod.rs文件。此外,生成的rust模块将查找几个与其包同名的模块,即super。如果protoc没有覆盖现有的已生成rust文件,可能会导致问题。最简单的方法是保留mod.rs文件,并删除其他rust文件,或者从备份中复制mod.rs文件。运行cargo build将确定可能缺失的模块,并需要通过类似以下方式添加:

pub(crate) use crate::{
    empty,
    iam::v1::{iam_policy, policy},
    longrunning::operations,
};

(从src/rpc/spanner/admin/instance/v1/mod.rs中获取)

请注意,源grpc存储库可能包含一个或多个需要更新的较旧子模块引用(例如,.grpc/third_party/googleapis)。这可能需要手动更新,以及手动更新/更正各种mod.rs文件。注意相互依赖关系。这些可能需要在目录mods中指定(例如,见.src/storage/v1/mod.rs)。记住,您可以在Rust中使用r#前缀来保留保留名称以供使用,例如use mod crate::r#type)

监控更改

Google将为spanner、bigtable和其他服务引入对GRPC接口的更改和修改。我们强烈建议您监控项目发布说明(特别是针对SpannerBigTable,以及该库应开始支持的任何其他服务)。这些发布说明有RSS源,并列在其各自的页面上。

更新时

初始化子模块依赖关系时,您可以使用

gitsubmodule update --init --recursive

来针对grpc代码进行有针对性的更新

git submodule update --remote grpc
pushd grpc/third_party
git submodule update --remote protobuf
git submodule update --remote googleapis
popd

要拉取您所需的库版本。不幸的是,我发现git子模块更新并不总是正确地更新到最新master/main版本。请确保grpc/third_party/googleapis子模块每季度至少更新一次。此目录包含Protobuf声明,并且通常包含需要反映到生成代码中的未公开更改。

注意:这可能会改变预生成的mod文件,需要删除旧模块或添加新模块。确保各种mod.rs文件捕获这些更改。

Google Cloud控制台

到我们测试环境的Google Cloud控制台链接

参考资料

Google API及其.proto文件

Golang客户端

依赖项

~40MB
~721K SLoC