שינוי נקודת הקצה שמוגדרת כברירת מחדל

ספריות הלקוח של Rust מגדירות באופן אוטומטי את נקודת הקצה של כל שירות. יכול להיות שבאפליקציות מסוימות צריך לבטל את נקודת הקצה שמוגדרת כברירת מחדל, כי ברשת שלהן יש דרישות ספציפיות או כי הן צריכות להשתמש בגרסאות אזוריות של השירות. במדריך הזה מוסבר איך לשנות את ברירת המחדל.

דרישות מוקדמות

במדריך הזה נעשה שימוש ב-Secret Manager API. כדי להפעיל את ה-API הזה, פועלים לפי ההוראות שבמדריך למתחילים בנושא שירותים.

הוראות מלאות להגדרה של ספריות הלקוח של Rust מופיעות במאמר תחילת העבודה עם Rust.

תלויות

צריך להצהיר על יחסי התלות בקובץ Cargo.toml:

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

נקודת הקצה שמוגדרת כברירת מחדל

קודם כל, כדאי לעיין בהוראות לשימוש בספריות הלקוח עם נקודת הקצה שמוגדרת כברירת מחדל. מתחילים בכתיבת כמה הצהרות שימוש כדי לפשט את שאר הדוגמה:

  1. כותבים את הדוגמה בפונקציה שמקבלת את מזהה הפרויקט כפרמטר:

    /// # 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. הוספנו כמה הצהרות שימוש כדי לפשט את קוד הדוגמה:

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

  3. מאותחלים את הלקוח באמצעות ברירות המחדל:

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

  4. ואז משתמשים בלקוח כרגיל:

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

שינוי נקודת הקצה שמוגדרת כברירת מחדל

בדוגמה הזו אנחנו מגדירים את ספריית הלקוח כך שתשתמש בנקודות קצה אזוריות של Secret Manager. אפשר להשתמש באותה החלפה כדי להגדיר את נקודת הקצה עם אחת מאפשרויות הגישה הפרטית, או עבור נקודות קצה מבוססות-מיקום בשירותים שתומכים בהן.

  1. כמו קודם, כתוב דוגמה שמקבלת את מזהה הפרויקט והאזור כפרמטרים:

    /// # 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. כדי לפשט את הקוד, מוסיפים כמה הצהרות שימוש:

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

  3. מאתחלים את הלקוח באמצעות נקודת הקצה של היעד:

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

  4. ואז משתמשים בלקוח כרגיל:

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