eks-blueprints-rust-sdk 0.1.2

Rust client for EKS Blueprints gRPC API
Documentation
# Rust Client for Multi Language EKS Blueprints for cdk

## Run the example
To run the example, first start the server from https://github.com/aws-quickstart/cdk-eks-blueprints/tree/blueprints-api-support
```bash
git clone https://github.com/aws-quickstart/cdk-eks-blueprints.git
cd cdk-eks-blueprints
git checkout blueprints-api-support
make run-server
```

Then run the rust example by cloning this repository and running with make, cargo is required
```bash
git clone https://github.com/zjaco13/multi-lang-eks-blueprints-cdk.git
cd multi-lang-eks-blueprints-cdk
make rust-example
```

## How to use as a package

Create a new rust project
```bash
cargo new example
cd example
```

Import the sdk and other dependencies
```bash
cargo add eks-blueprints-rust-sdk
cargo add tonic
cargo add tokio
```

Add this to a `main.rs` file
```rust
use multi_lang_eks_blueprints_rust_sdk::{
    builder::{self},
    codegen::{self, cluster_service_client::ClusterServiceClient},
};
use tonic::transport::Channel;

#[tokio::main]
async fn main() {
    builder::run(build).await.expect("Error in build");
}

async fn build(client: &mut ClusterServiceClient<Channel>) -> Result<(), tonic::Status> {
    ...
    Ok(())
}
```

Add function calls to the gRPC server in the build function to build your EKS Blueprint

Run the server
```bash
git clone https://github.com/aws-quickstart/cdk-eks-blueprints.git
cd cdk-eks-blueprints
git checkout blueprints-api-support
make run-server
```

Run your code
```bash
cargo run
```

From the server, deploy your EKS Blueprint
```bash
make deploy-server
```
## Contributing

### Publishing

Whenever changes are made to the protobufs, a new package will need to be released

To publish the package, first make an account on [crates.io](https://crates.io/), and you must be added to the [eks-blueprints-rust-sdk](https://crates.io/crates/eks-blueprints-rust-sdk) project

You will need an API Token.  Once you have this token, use it to login locally with this command.

```bash
cargo login
```

Run this command to build and publish the rust sdk crate (NOTE: It is recommended to run `cargo package` first to ensure the `.crate` file isn’t over 10MB)

```bash
cargo publish
```

Changes to packaging and publishing can be made by editing the `Cargo.toml` file