Eseguire l'override dell'endpoint predefinito

Le librerie client Rust configurano automaticamente l'endpoint per ogni servizio. Alcune applicazioni potrebbero dover ignorare l'endpoint predefinito perché la loro rete ha requisiti specifici o perché devono utilizzare versioni regionali del servizio. Questa guida mostra come eseguire l'override del valore predefinito.

Prerequisiti

Questa guida utilizza l'API Secret Manager. Per abilitare questa API, segui la guida rapida del servizio.

Per istruzioni di configurazione complete per le librerie client Rust, consulta Introduzione a Rust.

Dipendenze

Devi dichiarare le dipendenze nel file Cargo.toml:

cargo add google-cloud-secretmanager-v1 google-cloud-gax

Endpoint predefinito

Innanzitutto, esamina come utilizzare le librerie client con l'endpoint predefinito. Inizia scrivendo alcune dichiarazioni use per semplificare il resto dell'esempio:

  1. Scrivi l'esempio in una funzione che riceve l'ID progetto come parametro:

    /// # Parameters
    /// - `project_id`: the id of a Google Cloud project, or its numeric ID.
    ///   For example: `my-project`.
    pub async fn sample(project_id: &str) -> anyhow::Result<()> {

  2. Aggiungi alcune dichiarazioni di utilizzo per semplificare il codice di esempio:

    pub use google_cloud_gax::paginator::ItemPaginator;
    pub use google_cloud_secretmanager_v1::client::SecretManagerService;

  3. Inizializza il client utilizzando i valori predefiniti:

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

  4. e utilizza questo client come al solito:

    let mut items = client
        .list_secrets()
        .set_parent(format!("projects/{project_id}"))
        .by_item();
    println!("listing all secrets in project {project_id}");
    while let Some(secret) = items.next().await.transpose()? {
        println!("  {secret:?}");
    }
    println!("DONE");

Eseguire l'override dell'endpoint predefinito

In questo esempio configuriamo la libreria client in modo che utilizzi gli endpoint regionali di Secret Manager. Lo stesso override può essere utilizzato per configurare l'endpoint con una delle opzioni di accesso privato o per gli endpoint basati sulla posizione nei servizi che li supportano.

  1. Come prima, scrivi un esempio che riceva l'ID progetto e la regione come parametri:

    /// # Parameters
    /// - `project_id`: the id of a Google Cloud project, or its numeric ID.
    ///   For example: `my-project`.
    /// - `region`: the id of a Gooogle Cloud region. For example `us-central1`.
    pub async fn sample(project_id: &str, region: &str) -> anyhow::Result<()> {

  2. Aggiungi alcune dichiarazioni di utilizzo per semplificare il codice:

    pub use google_cloud_gax::paginator::ItemPaginator;
    pub use google_cloud_secretmanager_v1::client::SecretManagerService;

  3. Inizializza il client utilizzando l'endpoint di destinazione:

    let client = SecretManagerService::builder()
        .with_endpoint(format!("https://secretmanager.{region}.rep.googleapis.com"))
        .build()
        .await?;

  4. e utilizza questo client come al solito:

    let mut items = client
        .list_secrets()
        .set_parent(format!("projects/{project_id}/locations/{region}"))
        .by_item();
    println!("listing all secrets in project {project_id} and region {region}");
    while let Some(secret) = items.next().await.transpose()? {
        println!("  {secret:?}");
    }
    println!("DONE");