Eseguire l'override dell'endpoint predefinito

Le librerie client Rust configurano automaticamente l'endpoint per ogni servizio. Alcune applicazioni potrebbero dover sostituire l'endpoint predefinito perché la loro rete ha requisiti specifici o perché devono utilizzare le versioni regionali del servizio. Questa guida mostra come sostituire il 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 Inizia a utilizzare Rust.

Dipendenze

Devi dichiarare le dipendenze nel file Cargo.toml:

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

L'endpoint predefinito

Innanzitutto, esamina come utilizzare le librerie client con l'endpoint predefinito. Inizia scrivendo alcune dichiarazioni di utilizzo 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");

Sostituisci l'endpoint predefinito

In questo esempio, configuriamo la libreria client in modo che utilizzi gli endpoint regionali di Secret Manager . La stessa sostituzione può essere utilizzata per configurare l'endpoint con una delle opzioni di accesso privato o per gli endpoint di località nei servizi che li supportano.

  1. Come prima, scrivi un esempio che riceve 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");