Substituir o endpoint padrão

As bibliotecas de cliente Rust configuram automaticamente o endpoint para cada serviço. Alguns aplicativos podem precisar substituir o endpoint padrão porque a rede deles tem requisitos específicos ou porque precisam usar versões regionais do serviço. Este guia mostra como substituir o padrão.

Pré-requisitos

Este guia usa a API Secret Manager. Para ativar essa API, siga o guia de início rápido do serviço.

Para instruções completas de configuração das bibliotecas de cliente Rust, consulte Começar a usar o Rust.

Dependências

Declare as dependências no arquivo Cargo.toml:

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

O endpoint padrão

Primeiro, revise como usar as bibliotecas de cliente com o endpoint padrão. Comece escrevendo algumas declarações de uso para simplificar o restante do exemplo:

  1. Escreva o exemplo em uma função que receba o ID do projeto como um parâmetro:

    /// # 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. Adicione algumas declarações de uso para simplificar o código de exemplo:

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

  3. Inicialize o cliente usando os padrões:

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

  4. E use esse cliente normalmente:

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

Substituir o endpoint padrão

Neste exemplo, configuramos a biblioteca de cliente para usar os endpoints regionais do Secret Manager. A mesma substituição pode ser usada para configurar o endpoint com uma das opções de acesso privado ou para endpoints regionais nos serviços que os oferecem suporte.

  1. Como antes, escreva um exemplo que receba o ID do projeto e a região como parâmetros:

    /// # 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. Adicione algumas declarações de uso para simplificar o código:

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

  3. Inicialize o cliente usando o endpoint de destino:

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

  4. E use esse cliente normalmente:

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