8 个版本 (破坏性更新)
0.17.1-beta.1 | 2024 年 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 网页开发
每月 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。如果您需要帮助,请遵循以下指南
最后检查
- 运行
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
环境变量中可用。
然后
-
在
./src
目录中,删除所有不是mod.rs
的*.rs
文件[1]。您可能希望运行prepare.sh
脚本。 -
运行
./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接口的更改和修改。我们强烈建议您监控项目发布说明(特别是针对Spanner和BigTable,以及该库应开始支持的任何其他服务)。这些发布说明有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客户端
- Spanner客户端 (文档)
- Bigtable客户端 (文档)
- Pub/Sub客户端 (文档)
依赖项
~40MB
~721K SLoC