Initialiser un client

Les bibliothèques clientes Cloud pour Rust utilisent des structures clientes comme interface principale pour les servicesGoogle Cloud , avec des méthodes correspondant à chaque RPC proposé par le service. Avant d'appeler un service, vous initialisez son client.

Ce document explique comment initialiser un client Secret Manager avec sa configuration par défaut et appeler un RPC. Le même schéma s'applique à tous les autres services Google Cloud .

Avant de commencer

Avant d'exécuter le code de ce document, assurez-vous de remplir les conditions préalables suivantes :

Dépendances

Ajoutez les crates requises à votre fichier Cargo.toml :

cargo add google-cloud-secretmanager-v1 google-cloud-gax anyhow
cargo add tokio --features macros,rt-multi-thread

Initialiser un client et effectuer un RPC

Pour initialiser un client, appelez builder sur la structure du client afin d'obtenir un ClientBuilder, puis appelez build. Pour initialiser un client avec les paramètres par défaut et appeler un RPC, procédez comme suit :

  1. Importez le type de client SecretManagerService :

    use google_cloud_secretmanager_v1::client::SecretManagerService;

  2. Créez le client avec sa configuration par défaut :

    let client = SecretManagerService::builder().build().await?;

  3. Utilisez le client initialisé pour appeler list_locations, qui liste les emplacements compatibles avec Secret Manager pour votre projet :

    use google_cloud_gax::paginator::Paginator as _;
    let mut items = client
        .list_locations()
        .set_name(format!("projects/{project_id}"))
        .by_page();
    while let Some(page) = items.next().await {
        let page = page?;
        for location in page.locations {
            println!("{}", location.name);
        }
    }

Le résultat se présente comme suit :

projects/PROJECT_NUMBER/locations/europe-west8
projects/PROJECT_NUMBER/locations/europe-west9
projects/PROJECT_NUMBER/locations/us-east5

Dans ce résultat, PROJECT_NUMBER est le numéro de projet numérique de votre projet Google Cloud .

Compléter le code

L'exemple suivant combine l'initialisation du client et l'appel list_locations dans un programme exécutable :

pub async fn initialize_client(project_id: &str) -> anyhow::Result<()> {
    use google_cloud_secretmanager_v1::client::SecretManagerService;

    // Initialize a client with the default configuration. This is an
    // asynchronous operation that may fail, as it requires acquiring an an
    // access token.
    let client = SecretManagerService::builder().build().await?;

    // Once initialized, use the client to make requests.
    use google_cloud_gax::paginator::Paginator as _;
    let mut items = client
        .list_locations()
        .set_name(format!("projects/{project_id}"))
        .by_page();
    while let Some(page) = items.next().await {
        let page = page?;
        for location in page.locations {
            println!("{}", location.name);
        }
    }

    Ok(())
}

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let project_id = std::env::args().nth(1).unwrap();

    initialize_client(&project_id).await
}