הרצת משימה באצווה באמצעות Workflows

Batch הוא שירות שמנוהל במלואו שמאפשר לתזמן, להוסיף לתור ולהפעיל עומסי עבודה של עיבוד באצווה במכונות וירטואליות (VM) של Compute Engine. ‫Batch מקצה משאבים ומנהל את הקיבולת בשמכם, וכך מאפשר לעומסי העבודה שלכם באצווה לפעול בהיקף גדול.

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

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

מטרות

במדריך הזה תלמדו:

  1. יוצרים מאגר ב-Artifact Registry לקובץ אימג' של קונטיינר Docker.
  2. מקבלים את הקוד של עומס העבודה של עיבוד ברצף (batch processing) מ-GitHub: תוכנית לדוגמה שמייצרת מספרים ראשוניים באצוות של 10,000.
  3. יוצרים את קובץ האימג' של Docker עבור עומס העבודה.
  4. פורסים ומריצים תהליך עבודה שמבצע את הפעולות הבאות:
    1. יוצרים קטגוריה של Cloud Storage לאחסון התוצאות של מחולל המספרים הראשוניים.
    2. מתזמן ומריץ משימה באצווה שמריצה את קונטיינר Docker כשש משימות במקביל בשתי מכונות וירטואליות של Compute Engine.
    3. אפשרות למחוק את משימת האצווה אחרי שהיא מסתיימת.
  5. מוודאים שהתוצאות הן כצפוי ושהקבוצות של המספרים הראשוניים שנוצרו מאוחסנות ב-Cloud Storage.

אפשר להריץ את רוב הפקודות הבאות במסוף Google Cloud , או להריץ את כל הפקודות באמצעות Google Cloud CLI בטרמינל או ב-Cloud Shell.

עלויות

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

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

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

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

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

המסוף

  1. בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- Google Cloud או יוצרים אותו.

    כניסה לדף לבחירת הפרויקט

  2. מוודאים שהחיוב מופעל בפרויקט Google Cloud . כך בודקים אם החיוב מופעל בפרויקט

  3. מפעילים את ממשקי ה-API של Artifact Registry,‏ Batch,‏ Cloud Build,‏ Compute Engine,‏ Workflow Executions ו-Workflows.

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

  4. יוצרים חשבון שירות כדי שהתהליך העסקי יוכל להשתמש בו לאימות עם שירותים אחרים Google Cloud ומקצים לו את התפקידים המתאימים:

    1. במסוף Google Cloud , נכנסים לדף יצירת חשבון שירות.

      כניסה לדף Create service account

    2. בוחרים את הפרויקט הרצוי.

    3. כותבים שם בשדה Service account name. השדה Service account ID ימולא במסוף Google Cloud בהתאם לשם הזה.

      כותבים תיאור בשדה Service account description. לדוגמה, Service account for tutorial.

    4. לוחצים על Create and continue.

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

      • עורך משימות באצווה: לעריכת משימות באצווה.
      • בעל הרשאת כתיבה של יומנים: כדי לכתוב יומנים.
      • אדמין לניהול נפח האחסון: כדי לשלוט במשאבים של Cloud Storage.

      כדי להוסיף עוד תפקידים, לוחצים על Add another role ומוסיפים אותם אחד אחרי השני.

    6. לוחצים על Continue.

    7. כדי לסיים את יצירת החשבון, לוחצים על סיום.

  5. מקצים את התפקיד Service Account User ב-IAM בחשבון השירות שמוגדר כברירת מחדל לחשבון השירות שמנוהל על ידי משתמש שנוצר בשלב הקודם. אחרי שמפעילים את Compute Engine API, חשבון השירות שמוגדר כברירת מחדל הוא חשבון השירות של Compute Engine שמוגדר כברירת מחדל (PROJECT_NUMBER-compute@developer.gserviceaccount.com), וההרשאה מוקצית בדרך כלל באמצעות התפקיד roles/iam.serviceAccountUser.

    1. בדף Service Accounts, לוחצים על כתובת האימייל של חשבון השירות שמוגדר כברירת מחדל (PROJECT_NUMBER-compute@developer.gserviceaccount.com).

    2. לוחצים על הכרטיסייה Permissions.

    3. לוחצים על הלחצן Grant access.

    4. כדי להוסיף חשבון משתמש חדש, מזינים את כתובת האימייל של חשבון השירות (SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com).

    5. ברשימה Select a role בוחרים בתפקיד Service Accounts > Service Account User.

    6. לוחצים על Save.

gcloud

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

    הפעלת Cloud Shell

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

  2. מוודאים שהחיוב מופעל בפרויקט Google Cloud . כך בודקים אם החיוב מופעל בפרויקט

  3. מפעילים את ממשקי ה-API של Artifact Registry,‏ Batch,‏ Cloud Build,‏ Compute Engine Workflow Executions ו-Workflows.

    gcloud services enable artifactregistry.googleapis.com \
      batch.googleapis.com \
      cloudbuild.googleapis.com \
      compute.googleapis.com \
      workflowexecutions.googleapis.com \
      workflows.googleapis.com
  4. יוצרים חשבון שירות שהתהליך העסקי ישתמש בו לאימות מול שירותים אחרים Google Cloud ומקצים לו את התפקידים המתאימים.

    1. יוצרים את חשבון השירות:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

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

    2. נותנים תפקידים לחשבון השירות בניהול המשתמשים שיצרתם בשלב הקודם. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM:

      • roles/batch.jobsEditor: כדי לערוך עבודות אצווה.
      • roles/logging.logWriter: כדי לכתוב יומנים.
      • roles/storage.admin: כדי לשלוט במשאבי Cloud Storage.
      gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=ROLE

      מחליפים את מה שכתוב בשדות הבאים:

      • PROJECT_ID: מזהה הפרויקט שבו יצרתם את חשבון השירות
      • ROLE: התפקיד שאתם רוצים לתת
  5. נותנים את התפקיד 'משתמש בחשבון שירות' ב-IAM לחשבון השירות שנוצר בשלב הקודם בניהול המשתמשים בחשבון השירות שמוגדר כברירת מחדל. אחרי שמפעילים את Compute Engine API, חשבון השירות שמוגדר כברירת מחדל הוא חשבון השירות של Compute Engine שמוגדר כברירת מחדל (PROJECT_NUMBER-compute@developer.gserviceaccount.com), וההרשאה מוקצית בדרך כלל דרך התפקיד roles/iam.serviceAccountUser.

    PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format='value(projectNumber)')
    gcloud iam service-accounts add-iam-policy-binding \
      $PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --role=roles/iam.serviceAccountUser

יצירת מאגר Artifact Registry

יוצרים מאגר לאחסון קובץ האימג' של קונטיינר Docker.

המסוף

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

    כניסה לדף Repositories

  2. לוחצים על Create Repository (יצירת מאגר).

  3. מזינים containers כשם המאגר.

  4. בקטע פורמט, בוחרים באפשרות Docker.

  5. בקטע Location Type, בוחרים באפשרות Region.

  6. ברשימה Region בוחרים באפשרות us-central1.

  7. לוחצים על יצירה.

gcloud

מריצים את הפקודה הבאה:

  gcloud artifacts repositories create containers \
    --repository-format=docker \
    --location=us-central1

יצרתם מאגר Artifact Registry בשם containers באזור us-central1. מידע נוסף על אזורים נתמכים זמין במאמר מיקומים של Artifact Registry.

קבלת דוגמאות קוד

‫Google Cloud מאחסן את קוד המקור של האפליקציה עבור המדריך הזה ב-GitHub. אפשר לשכפל את המאגר או להוריד את הדוגמאות.

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

    git clone https://github.com/GoogleCloudPlatform/batch-samples.git
    

    אפשר גם להוריד את הדוגמאות בקובץ main.zip ולחלץ אותו.

  2. עוברים לספרייה שמכילה את הקוד לדוגמה:

    cd batch-samples/primegen
    

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

יצירת קובץ אימג' של Docker באמצעות Cloud Build

הקובץ Dockerfile מכיל את המידע שנדרש כדי ליצור קובץ אימג' של Docker באמצעות Cloud Build. מריצים את הפקודה הבאה כדי לבנות אותו:

gcloud builds submit \
  -t us-central1-docker.pkg.dev/PROJECT_ID/containers/primegen-service:v1 PrimeGenService/

מחליפים את PROJECT_ID במזהה הפרויקט ב- Google Cloud.

בסיום ה-build, הפלט אמור להיראות כך:

DONE
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ID: a54818cc-5d14-467b-bfda-5fc9590af68c
CREATE_TIME: 2022-07-29T01:48:50+00:00
DURATION: 48S
SOURCE: gs://project-name_cloudbuild/source/1659059329.705219-17aee3a424a94679937a7200fab15bcf.tgz
IMAGES: us-central1-docker.pkg.dev/project-name/containers/primegen-service:v1
STATUS: SUCCESS

יצרתם קובץ אימג' של Docker בשם primegen-service באמצעות Dockerfile, והעברתם את קובץ האימג' בדחיפה למאגר Artifact Registry בשם containers.

פריסת תהליך עבודה שמתזמן ומריץ משימה באצווה

בתרשים זרימת העבודה הבא מתוזמנת ומופעלת משימת Batch שמריצה קונטיינר Docker כשש משימות במקביל בשתי מכונות וירטואליות של Compute Engine. התוצאה היא יצירה של שש קבוצות של מספרים ראשוניים, שמאוחסנות בקטגוריה של Cloud Storage.

המסוף

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

    כניסה לדף Workflows

  2. לוחצים על Create.

  3. מזינים שם לתהליך העבודה החדש, למשל batch-workflow.

  4. ברשימה Region בוחרים באפשרות us-central1.

  5. בוחרים את חשבון השירות שיצרתם קודם.

  6. לוחצים על הבא.

  7. בעורך תהליכי העבודה, מזינים את ההגדרה הבאה לתהליך העבודה:

    YAML

    main:
      params: [args]
      steps:
        - init:
            assign:
              - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
              - region: "us-central1"
              - imageUri: ${region + "-docker.pkg.dev/" + projectId + "/containers/primegen-service:v1"}
              - jobId: ${"job-primegen-" + string(int(sys.now()))}
              - bucket: ${projectId + "-" + jobId}
        - createBucket:
            call: googleapis.storage.v1.buckets.insert
            args:
              query:
                project: ${projectId}
              body:
                name: ${bucket}
        - logCreateBucket:
            call: sys.log
            args:
              data: ${"Created bucket " + bucket}
        - logCreateBatchJob:
            call: sys.log
            args:
              data: ${"Creating and running the batch job " + jobId}
        - createAndRunBatchJob:
            call: googleapis.batch.v1.projects.locations.jobs.create
            args:
                parent: ${"projects/" + projectId + "/locations/" + region}
                jobId: ${jobId}
                body:
                  taskGroups:
                    taskSpec:
                      runnables:
                        - container:
                            imageUri: ${imageUri}
                          environment:
                            variables:
                              BUCKET: ${bucket}
                    # Run 6 tasks on 2 VMs
                    taskCount: 6
                    parallelism: 2
                  logsPolicy:
                    destination: CLOUD_LOGGING
            result: createAndRunBatchJobResponse
        # You can delete the batch job or keep it for debugging
        - logDeleteBatchJob:
            call: sys.log
            args:
              data: ${"Deleting the batch job " + jobId}
        - deleteBatchJob:
            call: googleapis.batch.v1.projects.locations.jobs.delete
            args:
                name: ${"projects/" + projectId + "/locations/" + region + "/jobs/" + jobId}
            result: deleteResult
        - returnResult:
            return:
              jobId: ${jobId}
              bucket: ${bucket}

    JSON

    {
      "main": {
        "params": [
          "args"
        ],
        "steps": [
          {
            "init": {
              "assign": [
                {
                  "projectId": "${sys.get_env(\"GOOGLE_CLOUD_PROJECT_ID\")}"
                },
                {
                  "region": "us-central1"
                },
                {
                  "imageUri": "${region + \"-docker.pkg.dev/\" + projectId + \"/containers/primegen-service:v1\"}"
                },
                {
                  "jobId": "${\"job-primegen-\" + string(int(sys.now()))}"
                },
                {
                  "bucket": "${projectId + \"-\" + jobId}"
                }
              ]
            }
          },
          {
            "createBucket": {
              "call": "googleapis.storage.v1.buckets.insert",
              "args": {
                "query": {
                  "project": "${projectId}"
                },
                "body": {
                  "name": "${bucket}"
                }
              }
            }
          },
          {
            "logCreateBucket": {
              "call": "sys.log",
              "args": {
                "data": "${\"Created bucket \" + bucket}"
              }
            }
          },
          {
            "logCreateBatchJob": {
              "call": "sys.log",
              "args": {
                "data": "${\"Creating and running the batch job \" + jobId}"
              }
            }
          },
          {
            "createAndRunBatchJob": {
              "call": "googleapis.batch.v1.projects.locations.jobs.create",
              "args": {
                "parent": "${\"projects/\" + projectId + \"/locations/\" + region}",
                "jobId": "${jobId}",
                "body": {
                  "taskGroups": {
                    "taskSpec": {
                      "runnables": [
                        {
                          "container": {
                            "imageUri": "${imageUri}"
                          },
                          "environment": {
                            "variables": {
                              "BUCKET": "${bucket}"
                            }
                          }
                        }
                      ]
                    },
                    "taskCount": 6,
                    "parallelism": 2
                  },
                  "logsPolicy": {
                    "destination": "CLOUD_LOGGING"
                  }
                }
              },
              "result": "createAndRunBatchJobResponse"
            }
          },
          {
            "logDeleteBatchJob": {
              "call": "sys.log",
              "args": {
                "data": "${\"Deleting the batch job \" + jobId}"
              }
            }
          },
          {
            "deleteBatchJob": {
              "call": "googleapis.batch.v1.projects.locations.jobs.delete",
              "args": {
                "name": "${\"projects/\" + projectId + \"/locations/\" + region + \"/jobs/\" + jobId}"
              },
              "result": "deleteResult"
            }
          },
          {
            "returnResult": {
              "return": {
                "jobId": "${jobId}",
                "bucket": "${bucket}"
              }
            }
          }
        ]
      }
    }
    
  8. לוחצים על פריסה.

gcloud

  1. יוצרים קובץ קוד מקור לתהליך העבודה:

    touch batch-workflow.JSON_OR_YAML

    מחליפים את JSON_OR_YAML ב-yaml או ב-json, בהתאם לפורמט של תהליך העבודה.

  2. בכלי לעריכת טקסט, מעתיקים את זרימת העבודה הבאה לקובץ קוד המקור:

    YAML

    main:
      params: [args]
      steps:
        - init:
            assign:
              - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
              - region: "us-central1"
              - imageUri: ${region + "-docker.pkg.dev/" + projectId + "/containers/primegen-service:v1"}
              - jobId: ${"job-primegen-" + string(int(sys.now()))}
              - bucket: ${projectId + "-" + jobId}
        - createBucket:
            call: googleapis.storage.v1.buckets.insert
            args:
              query:
                project: ${projectId}
              body:
                name: ${bucket}
        - logCreateBucket:
            call: sys.log
            args:
              data: ${"Created bucket " + bucket}
        - logCreateBatchJob:
            call: sys.log
            args:
              data: ${"Creating and running the batch job " + jobId}
        - createAndRunBatchJob:
            call: googleapis.batch.v1.projects.locations.jobs.create
            args:
                parent: ${"projects/" + projectId + "/locations/" + region}
                jobId: ${jobId}
                body:
                  taskGroups:
                    taskSpec:
                      runnables:
                        - container:
                            imageUri: ${imageUri}
                          environment:
                            variables:
                              BUCKET: ${bucket}
                    # Run 6 tasks on 2 VMs
                    taskCount: 6
                    parallelism: 2
                  logsPolicy:
                    destination: CLOUD_LOGGING
            result: createAndRunBatchJobResponse
        # You can delete the batch job or keep it for debugging
        - logDeleteBatchJob:
            call: sys.log
            args:
              data: ${"Deleting the batch job " + jobId}
        - deleteBatchJob:
            call: googleapis.batch.v1.projects.locations.jobs.delete
            args:
                name: ${"projects/" + projectId + "/locations/" + region + "/jobs/" + jobId}
            result: deleteResult
        - returnResult:
            return:
              jobId: ${jobId}
              bucket: ${bucket}

    JSON

    {
      "main": {
        "params": [
          "args"
        ],
        "steps": [
          {
            "init": {
              "assign": [
                {
                  "projectId": "${sys.get_env(\"GOOGLE_CLOUD_PROJECT_ID\")}"
                },
                {
                  "region": "us-central1"
                },
                {
                  "imageUri": "${region + \"-docker.pkg.dev/\" + projectId + \"/containers/primegen-service:v1\"}"
                },
                {
                  "jobId": "${\"job-primegen-\" + string(int(sys.now()))}"
                },
                {
                  "bucket": "${projectId + \"-\" + jobId}"
                }
              ]
            }
          },
          {
            "createBucket": {
              "call": "googleapis.storage.v1.buckets.insert",
              "args": {
                "query": {
                  "project": "${projectId}"
                },
                "body": {
                  "name": "${bucket}"
                }
              }
            }
          },
          {
            "logCreateBucket": {
              "call": "sys.log",
              "args": {
                "data": "${\"Created bucket \" + bucket}"
              }
            }
          },
          {
            "logCreateBatchJob": {
              "call": "sys.log",
              "args": {
                "data": "${\"Creating and running the batch job \" + jobId}"
              }
            }
          },
          {
            "createAndRunBatchJob": {
              "call": "googleapis.batch.v1.projects.locations.jobs.create",
              "args": {
                "parent": "${\"projects/\" + projectId + \"/locations/\" + region}",
                "jobId": "${jobId}",
                "body": {
                  "taskGroups": {
                    "taskSpec": {
                      "runnables": [
                        {
                          "container": {
                            "imageUri": "${imageUri}"
                          },
                          "environment": {
                            "variables": {
                              "BUCKET": "${bucket}"
                            }
                          }
                        }
                      ]
                    },
                    "taskCount": 6,
                    "parallelism": 2
                  },
                  "logsPolicy": {
                    "destination": "CLOUD_LOGGING"
                  }
                }
              },
              "result": "createAndRunBatchJobResponse"
            }
          },
          {
            "logDeleteBatchJob": {
              "call": "sys.log",
              "args": {
                "data": "${\"Deleting the batch job \" + jobId}"
              }
            }
          },
          {
            "deleteBatchJob": {
              "call": "googleapis.batch.v1.projects.locations.jobs.delete",
              "args": {
                "name": "${\"projects/\" + projectId + \"/locations/\" + region + \"/jobs/\" + jobId}"
              },
              "result": "deleteResult"
            }
          },
          {
            "returnResult": {
              "return": {
                "jobId": "${jobId}",
                "bucket": "${bucket}"
              }
            }
          }
        ]
      }
    }
    
  3. מריצים את הפקודה הבאה כדי לפרוס את תהליך העבודה:

    gcloud workflows deploy batch-workflow \
      --source=batch-workflow.yaml \
      --location=us-central1 \
      --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

    מחליפים את SERVICE_ACCOUNT_NAME בשם של חשבון השירות שיצרתם קודם.

ביצוע תהליך העבודה

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

המסוף

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

    כניסה לדף Workflows

  2. בדף Workflows, לוחצים על זרימת העבודה batch-workflow כדי לעבור לדף הפרטים שלה.

  3. בדף פרטי תהליך העבודה, לוחצים על הפעלה.

  4. לוחצים שוב על Execute.

    ההרצה של תהליך העבודה אמורה להימשך כמה דקות.

  5. אפשר לראות את התוצאות של תהליך העבודה בחלונית פלט.

    התוצאות אמורות להיראות כך:

    {
      "bucket": "project-name-job-primegen-TIMESTAMP",
      "jobId": "job-primegen-TIMESTAMP"
    }
    

gcloud

  1. מריצים את תהליך העבודה:

    gcloud workflows run batch-workflow \
      --location=us-central1

    ההרצה של תהליך העבודה אמורה להימשך כמה דקות.

  2. אפשר לבדוק את הסטטוס של ביצוע ממושך.

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

    gcloud workflows executions describe-last

    התוצאות אמורות להיות דומות לתוצאות הבאות:

    name: projects/PROJECT_NUMBER/locations/us-central1/workflows/batch-workflow/executions/EXECUTION_ID
    result: '{"bucket":"project-name-job-primegen-TIMESTAMP","jobId":"job-primegen-TIMESTAMP"}'
    startTime: '2022-07-29T16:08:39.725306421Z'
    state: SUCCEEDED
    status:
      currentSteps:
      - routine: main
        step: returnResult
    workflowRevisionId: 000001-9ba
    

הצגת רשימת האובייקטים בקטגוריית הפלט

כדי לוודא שהתוצאות הן כמו שציפיתם, אתם יכולים להציג את רשימת האובייקטים בקטגוריית הפלט של Cloud Storage.

המסוף

  1. במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.

    כניסה לדף Buckets

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

    התוצאות צריכות להיות דומות לתוצאות הבאות, עם שישה קבצים בסך הכול, וכל קובץ מציג קבוצה של 10,000 מספרים ראשוניים:

    primes-1-10000.txt
    primes-10001-20000.txt
    primes-20001-30000.txt
    primes-30001-40000.txt
    primes-40001-50000.txt
    primes-50001-60000.txt
    

gcloud

  1. מאחזרים את שם קטגוריית הפלט:

    gcloud storage ls

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

    gs://PROJECT_ID-job-primegen-TIMESTAMP/

  2. הצגת רשימת האובייקטים בקטגוריית הפלט:

    gcloud storage ls gs://PROJECT_ID-job-primegen-TIMESTAMP/** --recursive

    מחליפים את TIMESTAMP בחותמת הזמן שהוחזרה מהפקודה הקודמת.

    הפלט צריך להיות דומה לזה שבהמשך, עם שישה קבצים בסך הכול, וכל קובץ מציג קבוצה של 10,000 מספרים ראשוניים:

    gs://project-name-job-primegen-TIMESTAMP/primes-1-10000.txt
    gs://project-name-job-primegen-TIMESTAMP/primes-10001-20000.txt
    gs://project-name-job-primegen-TIMESTAMP/primes-20001-30000.txt
    gs://project-name-job-primegen-TIMESTAMP/primes-30001-40000.txt
    gs://project-name-job-primegen-TIMESTAMP/primes-40001-50000.txt
    gs://project-name-job-primegen-TIMESTAMP/primes-50001-60000.txt
    

הסרת המשאבים

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

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

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

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

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

    כניסה לדף Manage resources

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

מחיקת משאבים שנוצרו במדריך הזה

  1. מחיקת משימה באצווה:

    1. קודם מאחזרים את שם המשרה:

      gcloud batch jobs list --location=us-central1

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

      NAME: projects/project-name/locations/us-central1/jobs/job-primegen-TIMESTAMP
      STATE: SUCCEEDED
      

      כאשר job-primegen-TIMESTAMP הוא שם העבודה של Batch.

    2. מחיקת המשימה:

      gcloud batch jobs delete BATCH_JOB_NAME --location us-central1
  2. מחיקת תהליך העבודה:

    gcloud workflows delete WORKFLOW_NAME
  3. מחיקת מאגר הקונטיינרים:

    gcloud artifacts repositories delete REPOSITORY_NAME --location=us-central1
  4. ב-Cloud Build משתמשים ב-Cloud Storage כדי לאחסן משאבי build. כדי למחוק קטגוריה של Cloud Storage, אפשר לעיין במאמר בנושא מחיקת קטגוריות.

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