תזמון של הפעלה או הפסקה של מכונה וירטואלית ב-Compute Engine

במדריך הזה נסביר איך להשתמש ב-Cloud Scheduler ובפונקציות Cloud Run כדי להפעיל ולהפסיק אוטומטית מופעים של Compute Engine בלוח זמנים קבוע באמצעות תוויות משאבים.

מטרות

  • כתיבה ופריסה של קבוצת פונקציות באמצעות פונקציות Cloud Run שמפעילות ומפסיקות מכונות של Compute Engine.
  • יוצרים קבוצה של משימות באמצעות Cloud Scheduler כדי לתזמן מופעים עם תווית משאב dev להפעלה בין השעות 09:00 ל-17:00, בימים שני עד שישי, בהתאם לשעות הפעילות הרגילות.

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

  • Cloud Scheduler
  • Cloud Run functions
  • Pub/Sub
  • Compute Engine

כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.

משתמשים חדשים של Google Cloud ? יכול להיות שאתם זכאים לתקופת ניסיון בחינם.

לפני שמתחילים

  1. מגדירים את הסביבה ל-Cloud Scheduler.

    הגדרת הסביבה

  2. מפעילים את ממשקי ה-API של פונקציות Cloud Run,‏ Pub/Sub ו-Compute Engine.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    הפעלת ממשקי ה-API

ארכיטקטורה של אפליקציות

הפתרון הזה כולל את הרכיבים הבאים Google Cloud :

דיאגרמת ארכיטקטורת מערכת המציגה את Cloud Scheduler מתזמן מכונה של Compute Engine דרך Pub/Sub

דרישות לגבי מיקומים

יש רכיבים שנתמכים רק באזורים מסוימים:

  • מכונת Compute Engine: נתמכת בכל אזור שמופיע באזורים ותחומים.
  • פונקציות Cloud Run: נתמכות באזורים שמפורטים במיקומים.
  • הודעות Pub/Sub: נתמכות באופן גלובלי כי Pub/Sub הוא שירות גלובלי.
  • משימות של Cloud Scheduler עם יעדי Pub/Sub: נתמכות בכל Google Cloud מיקום.

למה לא להשתמש ב-HTTP במקום ב-Pub/Sub?

כדי לפשט את הארכיטקטורה הזו, אפשר להשתמש בטריגרים של HTTP של פונקציות Cloud Run במקום בטריגרים של Pub/Sub.

במדריך הזה משתמשים ב-Pub/Sub כטריגר לפונקציות של Cloud Run, כי בעבר השיטה הזו הייתה מאובטחת יותר משימוש ב-HTTP. עם זאת, פרוטוקול HTTP הוא גם בחירה תקפה, ועכשיו אפשר לאבטח אותו באמצעות דרישת אימות.

מידע על אבטחת פונקציות Cloud Run זמין בסקירה הכללית בנושא אבטחת פונקציות Cloud Run. השוואה בין טריגרים מסוג HTTP וטריגרים מסוג Pub/Sub מופיעה במאמר בנושא טריגרים של פונקציות Cloud Run.

הגדרת מכונה של Compute Engine

המסוף

  1. נכנסים לדף VM instances במסוף Google Cloud .
    נכנסים לדף VM instances.
  2. לוחצים על Create instance.
  3. מגדירים את Name לערך dev-instance.
  4. בקטע תוויות, לוחצים על הוספת תוויות.
  5. לוחצים על הוספת תווית.
  6. מזינים env בשדה Key (מפתח) ו-dev בשדה Value (ערך).
  7. בשדה Region, בוחרים us-west1.
  8. בשדה Zone, בוחרים us-west1-b.
  9. לוחצים על Save.
  10. לוחצים על יצירה בתחתית הדף.

gcloud

gcloud compute instances create dev-instance \
    --network default \
    --zone us-west1-b \
    --labels=env=dev

פריסת פונקציות שמופעלות על ידי Pub/Sub באמצעות פונקציות Cloud Run

יצירה ופריסה של הפונקציות

המסוף

יוצרים את פונקציית ההתחלה.

  1. נכנסים לדף Cloud Run functions במסוף Google Cloud .
    כניסה לדף Cloud Run functions.
  2. לוחצים על יצירת פונקציה.
  3. בשדה סביבה, בוחרים באפשרות דור ראשון.
  4. מגדירים את Function name לערך startInstancePubSub.
  5. משאירים את ערך ברירת המחדל בשדה אזור.
  6. בשדה Trigger type, בוחרים באפשרות Cloud Pub/Sub.
  7. בקטע Select a Cloud Pub/Sub topic, לוחצים על Create a topic.
  8. תופיע תיבת הדו-שיח Create topic.
    1. בקטע מזהה נושא, מזינים start-instance-event.
    2. כדי לסיים את תיבת הדו-שיח, לוחצים על יצירה.
  9. לוחצים על שמירה בתחתית התיבה טריגר.
  10. לוחצים על הבא בתחתית הדף.
  11. בקטע סביבת זמן ריצה, בוחרים באפשרות Node.js 16 או גרסה מתקדמת יותר.
  12. בשדה Entry point (נקודת כניסה), מזינים startInstancePubSub.
  13. בצד ימין של עורך הקוד, בוחרים באפשרות index.js.
  14. מחליפים את קוד ההתחלה בקוד הבא:

    const compute = require('@google-cloud/compute');
    const instancesClient = new compute.InstancesClient();
    const operationsClient = new compute.ZoneOperationsClient();
    
    async function waitForOperation(projectId, operation) {
      while (operation.status !== 'DONE') {
        [operation] = await operationsClient.wait({
          operation: operation.name,
          project: projectId,
          zone: operation.zone.split('/').pop(),
        });
      }
    }
    
    /**
     * Starts Compute Engine instances.
     *
     * Expects a PubSub message with JSON-formatted event data containing the
     * following attributes:
     *  zone - the GCP zone the instances are located in.
     *  label - the label of instances to start.
     *
     * @param {!object} event Cloud Function PubSub message event.
     * @param {!object} callback Cloud Function PubSub callback indicating
     *  completion.
     */
    exports.startInstancePubSub = async (event, context, callback) => {
      try {
        const project = await instancesClient.getProjectId();
        const payload = _validatePayload(event);
        const options = {
          filter: `labels.${payload.label}`,
          project,
          zone: payload.zone,
        };
    
        const [instances] = await instancesClient.list(options);
    
        await Promise.all(
          instances.map(async instance => {
            const [response] = await instancesClient.start({
              project,
              zone: payload.zone,
              instance: instance.name,
            });
    
            return waitForOperation(project, response.latestResponse);
          })
        );
    
        // Operation complete. Instance successfully started.
        const message = 'Successfully started instance(s)';
        console.log(message);
        callback(null, message);
      } catch (err) {
        console.log(err);
        callback(err);
      }
    };
    
    /**
     * Validates that a request payload contains the expected fields.
     *
     * @param {!object} payload the request payload to validate.
     * @return {!object} the payload object.
     */
    const _validatePayload = event => {
      let payload;
      try {
        payload = JSON.parse(Buffer.from(event.data, 'base64').toString());
      } catch (err) {
        throw new Error('Invalid Pub/Sub message: ' + err);
      }
      if (!payload.zone) {
        throw new Error("Attribute 'zone' missing from payload");
      } else if (!payload.label) {
        throw new Error("Attribute 'label' missing from payload");
      }
      return payload;
    };
  15. בצד ימין של עורך הקוד, בוחרים באפשרות package.json.

  16. מחליפים את קוד ההתחלה בקוד הבא:

    {
      "name": "cloud-functions-schedule-instance",
      "version": "0.1.0",
      "private": true,
      "license": "Apache-2.0",
      "author": "Google Inc.",
      "repository": {
        "type": "git",
        "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git"
      },
      "engines": {
        "node": ">=16.0.0"
      },
      "scripts": {
        "test": "c8 mocha -p -j 2 test/*.test.js --timeout=20000"
      },
      "devDependencies": {
        "c8": "^10.0.0",
        "mocha": "^10.0.0",
        "proxyquire": "^2.0.0",
        "sinon": "^18.0.0"
      },
      "dependencies": {
        "@google-cloud/compute": "^4.0.0"
      }
    }
    
  17. לוחצים על פריסה בתחתית הדף.

יוצרים את פונקציית העצירה.

  1. צריך להיות בדף Cloud Run functions במסוף Google Cloud .
  2. לוחצים על יצירת פונקציה.
  3. בשדה סביבה, בוחרים באפשרות דור ראשון.
  4. מגדירים את Function name לערך stopInstancePubSub.
  5. משאירים את ערך ברירת המחדל בשדה אזור.
  6. בשדה Trigger type, בוחרים באפשרות Cloud Pub/Sub.
  7. בקטע Select a Cloud Pub/Sub topic, לוחצים על Create a topic.
  8. תופיע תיבת הדו-שיח Create topic.
    1. בקטע מזהה נושא, מזינים stop-instance-event.
    2. כדי לסיים את תיבת הדו-שיח, לוחצים על יצירה.
  9. לוחצים על שמירה בתחתית התיבה טריגר.
  10. לוחצים על הבא בתחתית הדף.
  11. בקטע סביבת זמן ריצה, בוחרים באפשרות Node.js 16 או גרסה מתקדמת יותר.
  12. בשדה Entry point (נקודת כניסה), מזינים stopInstancePubSub.
  13. בצד ימין של עורך הקוד, בוחרים באפשרות index.js.
  14. מחליפים את קוד ההתחלה בקוד הבא:

    const compute = require('@google-cloud/compute');
    const instancesClient = new compute.InstancesClient();
    const operationsClient = new compute.ZoneOperationsClient();
    
    async function waitForOperation(projectId, operation) {
      while (operation.status !== 'DONE') {
        [operation] = await operationsClient.wait({
          operation: operation.name,
          project: projectId,
          zone: operation.zone.split('/').pop(),
        });
      }
    }
    
    /**
     * Stops Compute Engine instances.
     *
     * Expects a PubSub message with JSON-formatted event data containing the
     * following attributes:
     *  zone - the GCP zone the instances are located in.
     *  label - the label of instances to stop.
     *
     * @param {!object} event Cloud Function PubSub message event.
     * @param {!object} callback Cloud Function PubSub callback indicating completion.
     */
    exports.stopInstancePubSub = async (event, context, callback) => {
      try {
        const project = await instancesClient.getProjectId();
        const payload = _validatePayload(event);
        const options = {
          filter: `labels.${payload.label}`,
          project,
          zone: payload.zone,
        };
    
        const [instances] = await instancesClient.list(options);
    
        await Promise.all(
          instances.map(async instance => {
            const [response] = await instancesClient.stop({
              project,
              zone: payload.zone,
              instance: instance.name,
            });
    
            return waitForOperation(project, response.latestResponse);
          })
        );
    
        // Operation complete. Instance successfully stopped.
        const message = 'Successfully stopped instance(s)';
        console.log(message);
        callback(null, message);
      } catch (err) {
        console.log(err);
        callback(err);
      }
    };
    
    /**
     * Validates that a request payload contains the expected fields.
     *
     * @param {!object} payload the request payload to validate.
     * @return {!object} the payload object.
     */
    const _validatePayload = event => {
      let payload;
      try {
        payload = JSON.parse(Buffer.from(event.data, 'base64').toString());
      } catch (err) {
        throw new Error('Invalid Pub/Sub message: ' + err);
      }
      if (!payload.zone) {
        throw new Error("Attribute 'zone' missing from payload");
      } else if (!payload.label) {
        throw new Error("Attribute 'label' missing from payload");
      }
      return payload;
    };
  15. בצד ימין של עורך הקוד, בוחרים באפשרות package.json.

  16. מחליפים את קוד ההתחלה בקוד הבא:

    {
      "name": "cloud-functions-schedule-instance",
      "version": "0.1.0",
      "private": true,
      "license": "Apache-2.0",
      "author": "Google Inc.",
      "repository": {
        "type": "git",
        "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git"
      },
      "engines": {
        "node": ">=16.0.0"
      },
      "scripts": {
        "test": "c8 mocha -p -j 2 test/*.test.js --timeout=20000"
      },
      "devDependencies": {
        "c8": "^10.0.0",
        "mocha": "^10.0.0",
        "proxyquire": "^2.0.0",
        "sinon": "^18.0.0"
      },
      "dependencies": {
        "@google-cloud/compute": "^4.0.0"
      }
    }
    
  17. לוחצים על פריסה בתחתית הדף.

gcloud

יוצרים את הנושאים ב-Pub/Sub.

gcloud pubsub topics create start-instance-event
gcloud pubsub topics create stop-instance-event

קבל את הקוד

  1. מורידים את הקוד.

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git

    אפשרות נוספת היא להוריד את הדוגמה כקובץ ZIP ולחלץ אותה.

  2. עוברים לספרייה הנכונה.

    cd nodejs-docs-samples/functions/scheduleinstance/

יוצרים את פונקציות ההתחלה והעצירה.

אתם אמורים להיות בספרייה nodejs-docs-samples/functions/scheduleinstance/.

gcloud functions deploy startInstancePubSub \
    --trigger-topic start-instance-event \
    --runtime nodejs18 \
    --allow-unauthenticated
gcloud functions deploy stopInstancePubSub \
    --trigger-topic stop-instance-event \
    --runtime nodejs18 \
    --allow-unauthenticated

(אופציונלי) מאמתים שהפונקציות פועלות

המסוף

עצירת המכונה

  1. נכנסים לדף Cloud Run functions במסוף Google Cloud .
    כניסה לדף Cloud Run functions.
  2. לוחצים על הפונקציה שנקראת stopInstancePubSub.
  3. יוצגו כמה כרטיסיות: כללי, טריגר, מקור, הרשאות ובדיקה. לוחצים על הכרטיסייה בדיקה.
  4. בקטע אירוע הפעלה מזינים את הערכים הבאים:

    {"data":"eyJ6b25lIjoidXMtd2VzdDEtYiIsICJsYWJlbCI6ImVudj1kZXYifQo="}
    

    • זוהי המחרוזת בקידוד Base64 של {"zone":"us-west1-b", "label":"env=dev"}

    • אם רוצים לקודד מחרוזת משלכם, אפשר להשתמש בכל כלי קידוד base64 באינטרנט.

  5. לוחצים על הלחצן בדיקת הפונקציה.

  6. בסיום ההרצה, אמור להופיע הערך Successfully stopped instance dev-instance מתחת לOutput. התהליך עשוי להימשך עד 60 שניות.

    • אם במקום זאת מופיע error: 'Error: function failed to load.', פשוט מחכים כ-10 שניות עד שהפונקציה מסיימת את הפריסה ומנסים שוב.

    • אם במקום זאת מופיע error: 'Error: function execution attempt timed out.', פשוט עוברים לשלב הבא כדי לבדוק אם לוקח למופע הרבה זמן להיסגר.

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

  7. נכנסים לדף VM instances במסוף Google Cloud .
    נכנסים לדף VM instances.

  8. מוודאים שליד השם של המכונה dev-instance מופיע ריבוע אפור, שמציין שהיא הופסקה. תהליך הכיבוי עשוי להימשך עד 30 שניות.

    • אם נראה שהפעולה לא מסתיימת, אפשר ללחוץ על רענון בחלק העליון של הדף.

הפעלת המופע

  1. נכנסים לדף Cloud Run functions במסוף Google Cloud .
    כניסה לדף Cloud Run functions.
  2. לוחצים על הפונקציה שנקראת startInstancePubSub.
  3. יוצגו כמה כרטיסיות: כללי, טריגר, מקור, הרשאות ובדיקה. לוחצים על הכרטיסייה בדיקה.
  4. בקטע אירוע הפעלה מזינים את הערכים הבאים:

    {"data":"eyJ6b25lIjoidXMtd2VzdDEtYiIsICJsYWJlbCI6ImVudj1kZXYifQo="}
    

    • שוב, זו המחרוזת בקידוד Base64 עבור {"zone":"us-west1-b", "label":"env=dev"}
  5. לוחצים על הלחצן בדיקת הפונקציה.

  6. בסיום ההרצה, אמור להופיע הערך Successfully started instance dev-instance מתחת לOutput.

  7. נכנסים לדף VM instances במסוף Google Cloud .
    נכנסים לדף VM instances.

  8. מוודאים שליד השם של המכונה dev-instance מופיע סימן וי ירוק, שמציין שהיא פועלת. תהליך ההפעלה עשוי להימשך עד 30 שניות.

gcloud

עצירת המכונה

  1. קוראים לפונקציה כדי לעצור את המופע.

    gcloud functions call stopInstancePubSub \
        --data '{"data":"eyJ6b25lIjoidXMtd2VzdDEtYiIsICJsYWJlbCI6ImVudj1kZXYifQo="}'
    
    • זו המחרוזת בקידוד Base64 של {"zone":"us-west1-b", "label":"env=dev"}

    • אם רוצים לקודד מחרוזת משלכם, אפשר להשתמש בכל כלי. דוגמה לשימוש בכלי שורת הפקודה base64:

      echo '{"zone":"us-west1-b", "label":"env=dev"}' | base64
      
      eyJ6b25lIjoidXMtd2VzdDEtYiIsICJsYWJlbCI6ImVudj1kZXYifQo=
      

    בסיום הפונקציה אמור להופיע:

    result: Successfully stopped instance dev-instance
    

    התהליך עשוי להימשך עד 60 שניות.

    • אם במקום זאת מופיעה השגיאה:

      error: 'Error: function failed to load.`
      

      פשוט מחכים כ-10 שניות עד שהפונקציה תסיים את הפריסה ומנסים שוב.

    • אם במקום זאת מופיעה השגיאה:

      error: `Error: function execution attempt timed out.`
      

      עוברים לשלב הבא כדי לבדוק אם למופע פשוט לוקח הרבה זמן להיסגר.

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

  2. בודקים שהסטטוס של המופע הוא TERMINATED. תהליך הכיבוי עשוי להימשך עד 30 שניות.

    gcloud compute instances describe dev-instance \
        --zone us-west1-b \
        | grep status
    
    status: TERMINATED
    

הפעלת המופע

  1. קוראים לפונקציה כדי להפעיל את המופע.

    gcloud functions call startInstancePubSub \
        --data '{"data":"eyJ6b25lIjoidXMtd2VzdDEtYiIsICJsYWJlbCI6ImVudj1kZXYifQo="}'
    
    • שוב, זו המחרוזת בקידוד base64 של {"zone":"us-west1-b", "label":"env=dev"}

    בסיום הפונקציה אמור להופיע:

    result: Successfully started instance dev-instance
    
  2. בודקים שהסטטוס של המופע הוא RUNNING. תהליך ההפעלה עשוי להימשך עד 30 שניות.

    gcloud compute instances describe dev-instance \
        --zone us-west1-b \
        | grep status
    
    status: RUNNING
    

הגדרת משימות Cloud Scheduler לקריאה ל-Pub/Sub

יצירת המשרות

המסוף

יוצרים את משימת ההתחלה.

  1. נכנסים לדף Cloud Scheduler במסוף Google Cloud .
    כניסה לדף Cloud Scheduler.
  2. לוחצים על Create job (יצירת משימה).
  3. בשדה אזור, בוחרים באפשרות us-east1.
  4. מגדירים את Name לערך startup-dev-instances.
  5. בקטע תדירות, מזינים 0 9 * * 1-5.
    • הפעולה הזו תתבצע כל יום שני עד שישי בשעה 9:00.
  6. בשדה אזור זמן, בוחרים מדינה ואזור זמן. בדוגמה הזו נשתמש ב-United States וב-Los Angeles.
  7. לוחצים על Continue.
  8. בשדה Target type (סוג היעד), בוחרים באפשרות Pub/Sub.
  9. בוחרים באפשרות start-instance-event בתפריט הנפתח של הנושא.
  10. בשדה הודעה, מזינים את הפרטים הבאים:
    {"zone":"us-west1-b","label":"env=dev"}
    
  11. לוחצים על יצירה.

יוצרים את עבודת העצירה.

  1. צריך להיות בדף Cloud Scheduler במסוף Google Cloud .
  2. לוחצים על Create job (יצירת משימה).
  3. בשדה אזור, בוחרים באפשרות us-east1.
  4. מגדירים את Name לערך shutdown-dev-instances.
  5. בקטע תדירות, מזינים 0 17 * * 1-5.
    • הפעולה הזו תתבצע כל יום שני עד שישי בשעה 17:00.
  6. בשדה אזור זמן, בוחרים מדינה ואזור זמן. בדוגמה הזו נשתמש ב-United States וב-Los Angeles.
  7. לוחצים על Continue.
  8. בשדה Target type (סוג היעד), בוחרים באפשרות Pub/Sub.
  9. בוחרים באפשרות stop-instance-event בתפריט הנפתח של הנושא.
  10. בשדה הודעה, מזינים את הפרטים הבאים:
    {"zone":"us-west1-b","label":"env=dev"}
    
  11. לוחצים על יצירה.

gcloud

יוצרים את משימת ההתחלה.

gcloud scheduler jobs create pubsub startup-dev-instances \
    --schedule '0 9 * * 1-5' \
    --topic start-instance-event \
    --message-body '{"zone":"us-west1-b", "label":"env=dev"}' \
    --time-zone 'America/Los_Angeles' \
    --location us-east1

יוצרים את עבודת העצירה.

gcloud scheduler jobs create pubsub shutdown-dev-instances \
    --schedule '0 17 * * 1-5' \
    --topic stop-instance-event \
    --message-body '{"zone":"us-west1-b", "label":"env=dev"}' \
    --time-zone 'America/Los_Angeles' \
    --location us-east1

(אופציונלי) אימות של פעולת המשימות

המסוף

עצירת המכונה

  1. נכנסים לדף Cloud Scheduler במסוף Google Cloud .
    כניסה לדף Cloud Scheduler.
  2. בצד שמאל של הדף, בשורה של המשימה shutdown-dev-instances, לוחצים על הלחצן Run now (הפעלה עכשיו).
  3. נכנסים לדף VM instances במסוף Google Cloud .
    נכנסים לדף VM instances.
  4. מוודאים שליד השם של המכונה dev-instance מופיע ריבוע אפור, שמציין שהיא הופסקה. יכול להיות שיחלפו עד 30 שניות עד שהמחשב יכבה.

הפעלת המופע

  1. נכנסים לדף Cloud Scheduler במסוף Google Cloud .
    כניסה לדף Cloud Scheduler.
  2. לצד העבודה שנקראת startup-dev-instances, לוחצים על הלחצן Run now (הפעלה עכשיו) בצד שמאל של הדף.
  3. נכנסים לדף VM instances במסוף Google Cloud .
    נכנסים לדף VM instances.
  4. מוודאים שליד השם של המכונה dev-instance מופיע סימן וי ירוק, שמציין שהיא פועלת. יכול להיות שיחלפו עד 30 שניות עד שהמכשיר יסיים את ההפעלה.

gcloud

עצירת המכונה

  1. מריצים את משימת מתזמן המשימות כדי לעצור את המופע.

    gcloud scheduler jobs run shutdown-dev-instances --location="us-east1"
    
  2. בודקים שהסטטוס של המופע הוא TERMINATED. יכול להיות שיחלפו עד 30 שניות עד שהמחשב יכבה.

    gcloud compute instances describe dev-instance \
        --zone us-west1-b \
        | grep status
    
    status: TERMINATED
    

הפעלת המופע

  1. מריצים את עבודת המתזמן כדי להפעיל את המופע.

    gcloud scheduler jobs run startup-dev-instances --location="us-east1"
    
  2. בודקים שהסטטוס של המופע הוא RUNNING. תהליך ההפעלה עשוי להימשך עד 30 שניות.

    gcloud compute instances describe dev-instance \
        --zone us-west1-b \
        | grep status
    
    status: RUNNING
    

הסרת המשאבים

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

מחיקת המשימות ב-Cloud Scheduler

  1. נכנסים לדף Cloud Scheduler במסוף Google Cloud .

    כניסה לדף Cloud Scheduler.

  2. לוחצים על תיבות הסימון לצד המשרות.

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

מחיקת הנושאים ב-Pub/Sub

  1. נכנסים לדף Pub/Sub במסוף Google Cloud .

    מעבר לדף Pub/Sub

  2. לוחצים על תיבות הסימון לצד הנושאים.

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

מחיקת הפונקציות שנפרסו באמצעות פונקציות Cloud Run

  1. נכנסים לדף Cloud Run functions במסוף Google Cloud .

    כניסה לדף Cloud Run functions.

  2. לוחצים על תיבות הסימון לצד הפונקציות.

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

מחיקת מכונה של Compute Engine

כדי למחוק מכונה של Compute Engine:

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

  2. מסמנים את התיבה שלצד המופע שרוצים למחוק.
  3. כדי למחוק את המכונה, לוחצים על More actions ואז על Delete ופועלים לפי ההוראות.

מחיקת הפרויקט

הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.

כדי למחוק את הפרויקט:

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

המאמרים הבאים

  • כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.