Client initialisieren

Die Cloud-Clientbibliotheken für Rust verwenden Client-Strukturen als Hauptschnittstelle zuGoogle Cloud -Diensten, wobei die Methoden den einzelnen RPCs entsprechen, die vom Dienst angeboten werden. Bevor Sie einen Dienst aufrufen, initialisieren Sie seinen Client.

In diesem Dokument wird beschrieben, wie Sie einen Secret Manager-Client mit seiner Standardkonfiguration initialisieren und einen RPC aufrufen. Dasselbe Muster gilt für alle anderen Google Cloud -Dienste.

Hinweis

Bevor Sie den Code in diesem Dokument ausführen, müssen die folgenden Voraussetzungen erfüllt sein:

Abhängigkeiten

Fügen Sie der Datei Cargo.toml die erforderlichen Crates hinzu:

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

Client initialisieren und RPC erstellen

Wenn Sie einen Client initialisieren möchten, rufen Sie builder für die Clientstruktur auf, um ein ClientBuilder zu erhalten, und rufen Sie dann build auf. Führen Sie die folgenden Schritte aus, um einen Client mit Standardeinstellungen zu initialisieren und einen RPC aufzurufen:

  1. Importieren Sie den Clienttyp SecretManagerService:

    use google_cloud_secretmanager_v1::client::SecretManagerService;

  2. Erstellen Sie den Client mit seiner Standardkonfiguration:

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

  3. Rufen Sie mit dem initialisierten Client list_locations auf, um die von Secret Manager für Ihr Projekt unterstützten Standorte aufzulisten:

    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);
        }
    }

Die Ausgabe sollte so aussehen:

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

In dieser Ausgabe ist PROJECT_NUMBER die numerische Projektnummer für Ihr Google Cloud Projekt.

Vollständiger Code

Im folgenden Beispiel werden die Clientinitialisierung und der list_locations-Aufruf in einem ausführbaren Programm kombiniert:

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
}