Deploy an ML vision analytics solution with Dataflow and Cloud Vision API

Last reviewed 2024-05-16 UTC

במסמך הפריסה הזה מוסבר איך לפרוס צינור עיבוד נתונים של Dataflow כדי לעבד קובצי תמונות בקנה מידה נרחב באמצעות Cloud Vision API. התהליך הזה שומר את התוצאות של הקבצים שעובדו ב-BigQuery. אתם יכולים להשתמש בקבצים למטרות ניתוח או כדי לאמן מודלים של BigQuery ML.

צינור עיבוד הנתונים של Dataflow שיוצרים בפריסה הזו יכול לעבד מיליוני תמונות ביום. המגבלה היחידה היא המכסה של Vision API. אתם יכולים להגדיל את המכסה של Vision API בהתאם לדרישות שלכם.

ההוראות האלה מיועדות למהנדסי מערכות מידע ולמדעני נתונים. הנחת המוצא במסמך הזה היא שיש לכם ידע בסיסי בבניית צינורות עיבוד נתונים ב-Dataflow באמצעות Java SDK של Apache Beam, ב-GoogleSQL ל-BigQuery ובסקריפטים בסיסיים של מעטפת. בנוסף, אנחנו יוצאים מנקודת הנחה שאתם מכירים את Vision API.

ארכיטקטורה

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

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

בתרשים שלמעלה, המידע זורם בארכיטקטורה באופן הבא:

  1. לקוח מעלה קובצי תמונות לקטגוריה של Cloud Storage.
  2. ‫Cloud Storage שולח הודעה על העלאת הנתונים ל-Pub/Sub.
  3. ‫Pub/Sub שולח התראה ל-Dataflow על ההעלאה.
  4. צינור עיבוד הנתונים של Dataflow שולח את התמונות ל-Vision API.
  5. ‫Vision API מעבד את התמונות ומחזיר את ההערות.
  6. הפייפליין שולח את קובצי הרישומים ל-BigQuery כדי שתוכלו לנתח אותם.

מטרות

  • יוצרים צינור עיבוד נתונים של Apache Beam לניתוח התמונות שנטענו ב-Cloud Storage.
  • משתמשים ב-Dataflow Portable Runner כדי להריץ את צינור עיבוד הנתונים של Apache Beam במצב סטרימינג, כדי לנתח את התמונות מיד אחרי שהן מועלות.
  • משתמשים ב-Vision API כדי לנתח תמונות לפי קבוצה של סוגי תכונות.
  • ניתוח הערות באמצעות BigQuery.

עלויות

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

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

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

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

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

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. מפעילים את Cloud Shell במסוף Google Cloud .

    הפעלת Cloud Shell

    בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.

  4. משכפלים את המאגר ב-GitHub שמכיל את קוד המקור של צינור עיבוד הנתונים ב-Dataflow: ‏
        git clone
        https://github.com/GoogleCloudPlatform/dataflow-vision-analytics.git
        
  5. עוברים לתיקיית הבסיס של המאגר:
        cd dataflow-vision-analytics
        
  6. כדי לבצע את המשימות הבאות, פועלים לפי ההוראות בקטע Getting started במאגר dataflow-vision-analytics ב-GitHub:
    • להפעיל כמה ממשקי API.
    • יצירת קטגוריה של Cloud Storage.
    • יוצרים נושא ומינוי ב-Pub/Sub.
    • יוצרים מערך נתונים ב-BigQuery.
    • מגדירים כמה משתני סביבה לפריסה הזו.

הרצת צינור עיבוד הנתונים של Dataflow לכל התכונות המוטמעות של Vision API

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

הפרמטרים שמפורטים בטבלה הבאה הם ספציפיים לצינור עיבוד הנתונים של Dataflow בפריסה הזו. הרשימה המלאה של פרמטרים סטנדרטיים להרצה של Dataflow מופיעה במאמר הגדרת אפשרויות לצינור עיבוד הנתונים של Dataflow.

שם הפרמטר תיאור

batchSize

מספר התמונות שאפשר לכלול בבקשה ל-Vision API. ערך ברירת המחדל הוא 1. אפשר להגדיל את הערך הזה עד ל-16.

datasetName

השם של מערך הנתונים של הפלט ב-BigQuery.

features

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

keyRange

הפרמטר שמגדיר את המספר המקסימלי של קריאות מקבילות ל-Vision API. ערך ברירת המחדל הוא 1.

labelAnnottationTable,
landmarkAnnotationTable,
logoAnnotationTable,
faceAnnotationTable,
imagePropertiesTable,
cropHintAnnotationTable,
errorLogTable

פרמטרים של מחרוזות עם שמות טבלאות להערות שונות. ערכי ברירת המחדל מופיעים בכל טבלה, לדוגמה label_annotation.

maxBatchCompletionDurationInSecs

משך הזמן שצריך להמתין לפני עיבוד התמונות כשיש קבוצה חלקית של תמונות. ברירת המחדל היא 30 שניות.

subscriberId

המזהה של המינוי ל-Pub/Sub שמקבל התראות קלט מ-Cloud Storage.

visionApiProjectId

מזהה הפרויקט שבו משתמשים ב-Vision API.
  1. ב-Cloud Shell, מריצים את הפקודה הבאה כדי לעבד תמונות לכל סוגי המאפיינים שנתמכים על ידי צינור הנתונים של Dataflow:

    ./gradlew run --args=" \
    --jobName=test-vision-analytics \
      --streaming \
      --runner=DataflowRunner \
      --enableStreamingEngine \
      --diskSizeGb=30 \
      --project=${PROJECT} \
      --datasetName=${BIGQUERY_DATASET} \
      --subscriberId=projects/${PROJECT}/subscriptions/${GCS_NOTIFICATION_SUBSCRIPTION} \
      --visionApiProjectId=${PROJECT} \
      --features=IMAGE_PROPERTIES,LABEL_DETECTION,LANDMARK_DETECTION,LOGO_DETECTION,CROP_HINTS,FACE_DETECTION"
    

    לחשבון השירות הייעודי צריכה להיות גישת קריאה לקטגוריה שמכילה את התמונות. במילים אחרות, לחשבון הזה צריך להיות התפקיד roles/storage.objectViewer בקטגוריה הזו.

    מידע נוסף על שימוש בחשבון שירות ייעודי זמין במאמר אבטחה והרשאות ב-Dataflow.

  2. פותחים את כתובת ה-URL שמוצגת בכרטיסייה חדשה בדפדפן, או נכנסים לדף Dataflow Jobs ובוחרים את צינור עיבוד הנתונים test-vision-analytics.

    אחרי כמה שניות, התרשים של משימת Dataflow מופיע:

    תרשים תהליך העבודה של משימת Dataflow.

    עכשיו צינור עיבוד הנתונים של Dataflow פועל וממתין לקבלת התראות קלט מהמינוי ל-Pub/Sub.

  3. כדי להפעיל את עיבוד התמונות ב-Dataflow, מעלים את ששת הקבצים לדוגמה לקטגוריית הקלט:

    gcloud storage cp data-sample/* gs://${IMAGE_BUCKET}
    
  4. במסוף Google Cloud , מאתרים את החלונית Custom Counters ומשתמשים בה כדי לבדוק את המונים בהתאמה אישית ב-Dataflow, ולוודא ש-Dataflow עיבד את כל שש התמונות. אתם יכולים להשתמש בפונקציונליות הסינון של החלונית כדי לנווט למדדים הנכונים. כדי להציג רק את המונים שמתחילים בקידומת numberOf, מקלידים numberOf במסנן.

    רשימת מונים שמסוננת כך שיוצגו רק המונים שמתחילים ב-"numberof".

  5. ב-Cloud Shell, מוודאים שהטבלאות נוצרו באופן אוטומטי:

    bq query --nouse_legacy_sql "SELECT table_name FROM ${BIGQUERY_DATASET}.INFORMATION_SCHEMA.TABLES ORDER BY table_name"
    

    הפלט אמור להיראות כך:

    +----------------------+
    |      table_name      |
    +----------------------+
    | crop_hint_annotation |
    | face_annotation      |
    | image_properties     |
    | label_annotation     |
    | landmark_annotation  |
    | logo_annotation      |
    +----------------------+
    
  6. צפייה בסכימה של הטבלה landmark_annotation. התכונה LANDMARK_DETECTION מתעדת את המאפיינים שמוחזרים מהקריאה ל-API.

    bq show --schema --format=prettyjson ${BIGQUERY_DATASET}.landmark_annotation
    

    הפלט אמור להיראות כך:

    [
       {
          "name":"gcs_uri",
          "type":"STRING"
       },
       {
          "name":"feature_type",
          "type":"STRING"
       },
       {
          "name":"transaction_timestamp",
          "type":"STRING"
       },
       {
          "name":"mid",
          "type":"STRING"
       },
       {
          "name":"description",
          "type":"STRING"
       },
       {
          "name":"score",
          "type":"FLOAT"
       },
       {
          "fields":[
             {
                "fields":[
                   {
                      "name":"x",
                      "type":"INTEGER"
                   },
                   {
                  "name":"y",
                  "type":"INTEGER"
               }
            ],
            "mode":"REPEATED",
            "name":"vertices",
            "type":"RECORD"
         }
      ],
      "name":"boundingPoly",
      "type":"RECORD"
    },
    {
      "fields":[
         {
            "fields":[
               {
                  "name":"latitude",
                  "type":"FLOAT"
               },
               {
                  "name":"longitude",
                  "type":"FLOAT"
               }
            ],
                "name":"latLon",
                "type":"RECORD"
              }
            ],
          "mode":"REPEATED",
          "name":"locations",
          "type":"RECORD"
       }
    ]
    
  7. כדי לראות את נתוני ההערות שהפיק ה-API, מריצים את הפקודות הבאות של bq query כדי לראות את כל ציוני הדרך שנמצאו בשש התמונות האלה, לפי הציון הסביר ביותר:

    bq query --nouse_legacy_sql "SELECT SPLIT(gcs_uri, '/')[OFFSET(3)] file_name, description, score, locations FROM ${BIGQUERY_DATASET}.landmark_annotation ORDER BY score DESC"
    

    הפלט אמור להיראות כך:

    +------------------+-------------------+------------+---------------------------------+
    |    file_name     |    description    |   score    |            locations            |
    +------------------+-------------------+------------+---------------------------------+
    | eiffel_tower.jpg | Eiffel Tower      |  0.7251996 | ["POINT(2.2944813 48.8583701)"] |
    | eiffel_tower.jpg | Trocadéro Gardens | 0.69601923 | ["POINT(2.2892823 48.8615963)"] |
    | eiffel_tower.jpg | Champ De Mars     |  0.6800974 | ["POINT(2.2986304 48.8556475)"] |
    +------------------+-------------------+------------+---------------------------------+
    

    תיאורים מפורטים של כל העמודות שספציפיות להערות מופיעים במאמר AnnotateImageResponse.

  8. כדי לעצור את פייפליין זורם, מריצים את הפקודה הבאה. הצינור ממשיך לפעול גם אם אין יותר התראות Pub/Sub לעיבוד.

      gcloud dataflow jobs cancel
        --region ${REGION} $(gcloud dataflow jobs list
        --region ${REGION} --filter="NAME:test-vision-analytics AND STATE:Running"
        --format="get(JOB_ID)")
    

    בקטע הבא יש עוד שאילתות לדוגמה שמנתחות מאפיינים שונים של התמונות.

ניתוח של מערך נתונים ב-Flickr30K

בקטע הזה תזהו תוויות וציוני דרך במערך הנתונים הציבורי של תמונות Flickr30k שמתארח ב-Kaggle.

  1. ב-Cloud Shell, משנים את הפרמטרים של צינור עיבוד הנתונים ב-Dataflow כדי לבצע אופטימיזציה למערך נתונים גדול. כדי לאפשר קצב העברה גבוה יותר, צריך להגדיל גם את הערכים של batchSize ו-keyRange. ‫Dataflow משנה את מספר ה-workers לפי הצורך:

    ./gradlew run --args=" \
      --runner=DataflowRunner \
      --jobName=vision-analytics-flickr \
      --streaming \
      --enableStreamingEngine \
      --diskSizeGb=30 \
      --autoscalingAlgorithm=THROUGHPUT_BASED \
      --maxNumWorkers=5 \
      --project=${PROJECT} \
      --region=${REGION} \
      --subscriberId=projects/${PROJECT}/subscriptions/${GCS_NOTIFICATION_SUBSCRIPTION} \
      --visionApiProjectId=${PROJECT} \
      --features=LABEL_DETECTION,LANDMARK_DETECTION \
      --datasetName=${BIGQUERY_DATASET} \
      --batchSize=16 \
      --keyRange=5"
    

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

  2. כדי לאחזר תמונות מ-Kaggle ולשלוח אותן לקטגוריה של Cloud Storage, פועלים לפי ההוראות בקטע Simulate the images being uploaded to the storage bucket במאגר של GitHub.

  3. כדי לעקוב אחרי התקדמות תהליך ההעתקה, אפשר להסתכל על המדדים המותאמים אישית שזמינים בממשק המשתמש של Dataflow. עוברים לדף Dataflow Jobs ובוחרים את צינור עיבוד הנתונים vision-analytics-flickr. המונים של הלקוחות אמורים להשתנות מדי פעם עד שצינור עיבוד הנתונים של Dataflow יעבד את כל הקבצים.

    הפלט דומה לצילום המסך הבא של החלונית Custom Counters. אחד מהקבצים במערך הנתונים הוא מסוג שגוי, והמונה rejectedFiles משקף את זה. הערכים של המונים האלה הם משוערים. יכול להיות שתראו מספרים גבוהים יותר. בנוסף, סביר להניח שמספר ההערות ישתנה בגלל הדיוק המוגבר של העיבוד באמצעות Vision API.

    רשימת המונים שמשויכים לעיבוד התמונות שמבוססות על Kaggle.

    כדי לבדוק אם אתם מתקרבים למכסה או חורגים ממנה, היכנסו לדף המכסות של Vision API.

    בדוגמה שלנו, צינור עיבוד הנתונים של Dataflow השתמש רק בכ-50% מהמכסה שלו. בהתאם לאחוז המכסה שבה אתם משתמשים, אתם יכולים להחליט להגדיל את המקביליות של צינור עיבוד הנתונים על ידי הגדלת הערך של הפרמטר keyRange.

  4. סוגרים את צינור עיבוד הנתונים:

    gcloud dataflow jobs list --region $REGION --filter="NAME:vision-analytics-flickr AND STATE:Running" --format="get(JOB_ID)"
    

ניתוח הערות ב-BigQuery

בפריסה הזו, עיבדתם יותר מ-30,000 תמונות להוספת הערות של תוויות וציוני דרך. בקטע הזה, אתם אוספים נתונים סטטיסטיים על הקבצים האלה. אתם יכולים להריץ את השאילתות האלה בסביבת העבודה של GoogleSQL ל-BigQuery, או להשתמש בכלי שורת הפקודה של BigQuery.

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

  1. במסוף Google Cloud , נכנסים לדף Query editor של BigQuery ומריצים את הפקודה הבאה כדי להציג את 20 התוויות המובילות במערך הנתונים:

    מעבר לעורך השאילתות

    SELECT  description, count(*)ascount \
      FROM vision_analytics.label_annotation
      GROUP BY description ORDER BY count DESC LIMIT 20
    

    הפלט אמור להיראות כך:

    +------------------+-------+
    |   description    | count |
    +------------------+-------+
    | Leisure          |  7663 |
    | Plant            |  6858 |
    | Event            |  6044 |
    | Sky              |  6016 |
    | Tree             |  5610 |
    | Fun              |  5008 |
    | Grass            |  4279 |
    | Recreation       |  4176 |
    | Shorts           |  3765 |
    | Happy            |  3494 |
    | Wheel            |  3372 |
    | Tire             |  3371 |
    | Water            |  3344 |
    | Vehicle          |  3068 |
    | People in nature |  2962 |
    | Gesture          |  2909 |
    | Sports equipment |  2861 |
    | Building         |  2824 |
    | T-shirt          |  2728 |
    | Wood             |  2606 |
    +------------------+-------+
    
  2. לזהות אילו תוויות אחרות קיימות בתמונה עם תווית מסוימת, לפי דירוג התדירות:

    DECLARE label STRING DEFAULT 'Plucked string instruments';
    
    WITH other_labels AS (
       SELECT description, COUNT(*) count
    FROM vision_analytics.label_annotation
    WHERE gcs_uri IN (
        SELECT gcs_uri FROM vision_analytics.label_annotation WHERE description = label )
      AND description != label
    GROUP BY description)
    SELECT description, count, RANK() OVER (ORDER BY count DESC) rank
    FROM other_labels ORDER BY rank LIMIT 20;
    

    הפלט שיתקבל זהה לפלט הבא: בתווית Plucked string instruments שבה השתמשתם בפקודה הקודמת, אמור להופיע:

    +------------------------------+-------+------+
    |         description          | count | rank |
    +------------------------------+-------+------+
    | String instrument            |   397 |    1 |
    | Musical instrument           |   236 |    2 |
    | Musician                     |   207 |    3 |
    | Guitar                       |   168 |    4 |
    | Guitar accessory             |   135 |    5 |
    | String instrument accessory  |    99 |    6 |
    | Music                        |    88 |    7 |
    | Musical instrument accessory |    72 |    8 |
    | Guitarist                    |    72 |    8 |
    | Microphone                   |    52 |   10 |
    | Folk instrument              |    44 |   11 |
    | Violin family                |    28 |   12 |
    | Hat                          |    23 |   13 |
    | Entertainment                |    22 |   14 |
    | Band plays                   |    21 |   15 |
    | Jeans                        |    17 |   16 |
    | Plant                        |    16 |   17 |
    | Public address system        |    16 |   17 |
    | Artist                       |    16 |   17 |
    | Leisure                      |    14 |   20 |
    +------------------------------+-------+------+
    
  3. לצפות ב-10 האתרים המפורסמים המובילים שזוהו:

      SELECT description, COUNT(description) AS count
      FROM vision_analytics.landmark_annotation
      GROUP BY description ORDER BY count DESC LIMIT 10
    

    הפלט אמור להיראות כך:

      +--------------------+-------+
      |    description     | count |
      +--------------------+-------+
      | Times Square       |    55 |
      | Rockefeller Center |    21 |
      | St. Mark's Square  |    16 |
      | Bryant Park        |    13 |
      | Millennium Park    |    13 |
      | Ponte Vecchio      |    13 |
      | Tuileries Garden   |    13 |
      | Central Park       |    12 |
      | Starbucks          |    12 |
      | National Mall      |    11 |
      +--------------------+-------+
      

  4. זהו את התמונות שסביר להניח שיש בהן מפלים:

    SELECT SPLIT(gcs_uri, '/')[OFFSET(3)] file_name, description, score
    FROM vision_analytics.landmark_annotation
    WHERE LOWER(description) LIKE '%fall%'
    ORDER BY score DESC LIMIT 10
    

    הפלט אמור להיראות כך:

    +----------------+----------------------------+-----------+
    |   file_name    |        description         |   score    |
    +----------------+----------------------------+-----------+
    | 895502702.jpg  | Waterfall Carispaccha      |  0.6181358 |
    | 3639105305.jpg | Sahalie Falls Viewpoint    | 0.44379658 |
    | 3672309620.jpg | Gullfoss Falls             | 0.41680416 |
    | 2452686995.jpg | Wahclella Falls            | 0.39005348 |
    | 2452686995.jpg | Wahclella Falls            |  0.3792498 |
    | 3484649669.jpg | Kodiveri Waterfalls        | 0.35024035 |
    | 539801139.jpg  | Mallela Thirtham Waterfall | 0.29260656 |
    | 3639105305.jpg | Sahalie Falls              |  0.2807213 |
    | 3050114829.jpg | Kawasan Falls              | 0.27511594 |
    | 4707103760.jpg | Niagara Falls              | 0.18691841 |
    +----------------+----------------------------+-----------+
    
  5. חיפוש תמונות של ציוני דרך ברדיוס של 3 קילומטרים מהקולוסיאום ברומא (הפונקציה ST_GEOPOINT משתמשת בקו האורך ובקו הרוחב של הקולוסיאום):

    WITH
      landmarksWithDistances AS (
      SELECT
        gcs_uri,
        description,
        location,
        ST_DISTANCE(location,
          ST_GEOGPOINT(12.492231,
            41.890222)) distance_in_meters,
      FROM
        `vision_analytics.landmark_annotation` landmarks
      CROSS JOIN
        UNNEST(landmarks.locations) AS location )
    SELECT
      SPLIT(gcs_uri,"/")[OFFSET(3)] file,
      description,
        ROUND(distance_in_meters) distance_in_meters,
      location,
      CONCAT("https://storage.cloud.google.com/", SUBSTR(gcs_uri, 6)) AS image_url
    FROM
      landmarksWithDistances
    WHERE
      distance_in_meters < 3000
    ORDER BY
      distance_in_meters
    LIMIT
      100
    

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

    כדי להציג את הנתונים באופן חזותי ב-BigQuery Geo Viz, מדביקים את השאילתה הקודמת. בוחרים נקודה במפה כדי לראות את הפרטים שלה. המאפיין Image_url מכיל קישור לקובץ התמונה.

    מפה של מיקומים והמרחק שלהם מהקולוסיאום.

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

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

הסרת המשאבים

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

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

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

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

    כניסה לדף Manage resources

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

אם אתם מחליטים למחוק משאבים בנפרד, בצעו את השלבים בקטע Clean up במאגר GitHub.

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

  • לדוגמאות נוספות של ארכיטקטורות, תרשימים ושיטות מומלצות, עיינו במאמר Cloud Architecture Center.

שותפים ביצירת התוכן

מחברים:

תורמים אחרים: