Expand description
§Yet Another Google Cloud Platform Crate
ya-gcp provides a set of APIs and utilties used to interact with Google Cloud Platform (GCP) services.
§Currently Supported Services
Production maturity:
- PubSub
Alpha maturity:
- Google Cloud Storage
- Bigtable
Different service APIs can be accessed through modules enabled with
compile-time features. See the list of supported features below. Service
clients are created using the ClientBuilder
,
which serves as an entry-point to this library.
§Feature Flags
The following flags can be enabled to change what code is included
Services:
pubsub
enables the PubSub APIstorage
enables the GCS APIbigtable
enables the Bigtable API
Miscellaneous:
rustls
use Rustls for TLS support, enabled by defaultopenssl
use OpenSSL for TLS supportemulators
includes support for service emulation (can be useful for testing)
§Comparison to other crates
Generally speaking, this crate aims to provide ergonomic and robust interfaces
for the supported services out-of-the-box. For example, authentication handling
should be simple, with the user only having to provide credentials and not call
out to a separate library. Similarly, idiomatic rust traits should be provided,
such as Stream
and Sink
for PubSub subscribing and publishing. Other crates
for interacting with GCP may provide different trade-offs, such as supporting a
greater breadth of services
- cloud-storage - A library which provides access to Google Cloud Storage specifically. While its feature set is good, it is not particularly flexible. It doesn’t support alternative HTTP clients, or different authentication flows.
- tame-gcs - A library which enables
accessing GCS, but does not provide a means of performing IO itself.
ya-gcp
internally usestame-gcs
for its GCS support (providing the IO layer) - google-cloud - A library with a
similar structure and philosophy to
ya-gcp
. Supports a few more services, though support is sometimes in less depth (e.g. doesn’t have streaming pull requests and reconnection for PubSub) - google-pubsub1 - This crate, like others from the same generator system in google-apis-rs, provides relatively low-level bindings to the services they connect to. The user is responsible for bringing their own HTTP client and authentication, making it difficult to use. That said, the generated crates do thoroughly cover many google services
- google-cloud-rust -
As of this writing still largely experimental. Based on grpcio, which wraps
the C gRPC library, whereas
ya-gcp
is based ontonic
in Rust
Re-exports§
pub use retry_policy::RetryPolicy;
Modules§
- auth
- Utilities for authentication and authorization with GCP services.
- bigtable
bigtable
- An API for interacting with Google’s Bigtable database.
- grpc
pubsub
orgrpc
- Items and functionality specific to gRPC services
- pubsub
pubsub
- An API for interacting with the Pub/Sub message service.
- retry_
policy - A collection of traits and types used to retry asynchronous operations.
- storage
storage
- An API for interacting with Google Cloud Storage.
Structs§
- Client
Builder - A builder used to create all the clients for interacting with GCP services.
- Client
Builder Config - Configuration for creating a
ClientBuilder
Enums§
- Auth
Flow - A marker to choose the mechanism by which authentication credentials should be loaded
- Create
Builder Error - The possible errors encountered when creating a
ClientBuilder
- Service
Account Auth - Configuration for loading service account credentials from file