במדריך הזה מוסבר איך לבצע טרנסקוד לסרטונים אופליין בעדיפות נמוכה באמצעות משימות Cloud Run.
מטרות
במדריך הזה תלמדו:
- יוצרים קטגוריות של Cloud Storage כדי לאחסן את הסרטונים לעיבוד ואת תוצאות הקידוד.
- פריסת משימה ב-Cloud Run באמצעות מעבדים גרפיים כדי להאיץ את הקידוד מחדש של סרטונים.
- מריצים את העבודה ומוודאים שהמרת הקידוד של הסרטון בוצעה בהצלחה.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את ממשקי ה-API של Cloud Run, Artifact Registry ו-Cloud Build:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable run.googleapis.com
cloudbuild.googleapis.com artifactregistry.googleapis.com - מגדירים את האזור כמשתנה סביבה:
export REGION=REGION
- יוצרים חשבון שירות:
gcloud iam service-accounts create video-encoding
- כדי להשלים את המדריך הזה, צריך לבקש
Total Nvidia L4 GPU allocation without zonal redundancy, per project per regionבדף Quotas and system limits בקטע Cloud Run Admin API. אפשר גם לפרוס שירות Cloud Run כדי לקבל באופן אוטומטי מענק של מכסת GPU של 3 nvidia-l4 (היתירות האזורית מושבתת) לאזור.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להשלמת המדריך, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- מנהל מאגר של Artifact Registry (
roles/artifactregistry.repoAdmin) - עריכה ב-Cloud Build (
roles/cloudbuild.builds.editor) - אדמין ב-Cloud Run (
roles/run.admin) - יצירת חשבונות שירות (
roles/iam.serviceAccountCreator) - משתמש בחשבון שירות (
roles/iam.serviceAccountUser)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
מתן התפקידים
המסוף
-
נכנסים לדף IAM במסוף Google Cloud .
כניסה לדף IAM - בוחרים את הפרויקט.
- לוחצים על Grant access.
-
בשדה New principals, מזינים את מזהה המשתמש. בדרך כלל מדובר בכתובת האימייל שמשמשת לפריסת שירות Cloud Run.
- בוחרים תפקיד מהרשימה Select a role.
- כדי להקצות עוד תפקידים, לוחצים על Add another role ומוסיפים אותם.
- לוחצים על Save.
gcloud
כדי להקצות לחשבון שלכם את תפקידי ה-IAM הנדרשים בפרויקט:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
מחליפים את:
- PROJECT_NUMBER עם מספר הפרויקט ב- Google Cloud .
- PROJECT_ID במזהה הפרויקט ב- Google Cloud .
- PRINCIPAL עם החשבון שאליו אתם מוסיפים את הקישור. בדרך כלל זו כתובת האימייל שמשמשת לפריסת שירות Cloud Run.
- ROLE עם התפקיד שאתם מוסיפים לחשבון של כלי הפריסה.
הכנת הבקשה
כדי לאחזר את דוגמת קוד לשימוש:
משכפלים את המאגר לדוגמה ומעבירים אותו למכונה המקומית:
git clone https://github.com/GoogleCloudPlatform/cloud-run-samplesעוברים לספרייה שמכילה את הקוד לדוגמה של Cloud Run:
cd cloud-run-samples/jobs-video-encoding
יצירת קטגוריות ב-Cloud Storage
כדי לאחסן את הסרטונים לעיבוד ולשמור את תוצאות הקידוד, יוצרים את שתי הקטגוריות הבאות ב-Cloud Storage:
יוצרים קטגוריה לאחסון סרטונים לפני העיבוד:
gcloud storage buckets create gs://preprocessing-PROJECT_ID \ --location LOCATIONמחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט.
- LOCATION: המיקום ב-Cloud Storage.
נותנים לחשבון השירות הרשאת קריאה מהקטגוריה הזו:
gcloud storage buckets add-iam-policy-binding gs://preprocessing-PROJECT_ID \ --member="serviceAccount:video-encoding@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/storage.objectViewer"מחליפים את PROJECT_ID במזהה הפרויקט.
יוצרים קטגוריה לאחסון סרטונים שעברו המרה אחרי העיבוד:
gcloud storage buckets create gs://transcoded-PROJECT_ID \ --location LOCATIONמחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט.
- LOCATION: המיקום ב-Cloud Storage.
נותנים לחשבון השירות הרשאת קריאה וכתיבה בקטגוריה הזו:
gcloud storage buckets add-iam-policy-binding gs://transcoded-PROJECT_ID \ --member="serviceAccount:video-encoding@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/storage.objectAdmin"מחליפים את PROJECT_ID במזהה הפרויקט.
פריסת משימה ב-Cloud Run
יוצרים משימת Cloud Run באמצעות קובץ Dockerfile במאגר לדוגמה ומטמיעים את הקטגוריות שיצרתם:
עוברים לספרייה לדוגמה:
cd cloud-run-samples/jobs-video-encoding
יוצרים Artifact Registry אם מאגר ברירת המחדל של Cloud Run עדיין לא קיים:
gcloud artifacts repositories create cloud-run-source-deploy \ --repository-format=docker \ --location LOCATIONמחליפים את LOCATION בשם המיקום של המאגר.
יוצרים את קובץ האימג' של הקונטיינר:
gcloud builds submit \ --tag LOCATION-docker.pkg.dev/PROJECT_ID/cloud-run-source-deploy/IMAGE_NAME \ --machine-type E2-HIGHCPU-32מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט.
- LOCATION:שם המיקום של המרשם.
- IMAGE_NAME: שם קובץ האימג' בקונטיינר, לדוגמה:
ffmpeg-image.
Cloud Run משתמש בסוג מכונה גדול יותר כדי לקצר את משך זמן של תהליך build.
פורסים את המשרה:
gcloud run jobs create video-encoding-job \ --image LOCATION-docker.pkg.dev/PROJECT_ID/cloud-run-source-deploy/IMAGE_NAME \ --region REGION \ --memory 32Gi \ --cpu 8 \ --gpu 1 \ --gpu-type nvidia-l4 \ --no-gpu-zonal-redundancy \ --max-retries 1 \ --service-account video-encoding@PROJECT_ID.iam.gserviceaccount.com \ --add-volume=name=input-volume,type=cloud-storage,bucket=preprocessing-PROJECT_ID,readonly=true \ --add-volume-mount=volume=input-volume,mount-path=/inputs \ --add-volume=name=output-volume,type=cloud-storage,bucket=transcoded-PROJECT_ID \ --add-volume-mount=volume=output-volume,mount-path=/outputsמחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט.
- REGION: שם האזור. הערה: צריך לבחור את אותו אזור שבו יש לכם מכסת GPU.
- IMAGE_NAME: שם קובץ האימג' בקונטיינר, למשל
ffmpeg-image.
אם זו הפעם הראשונה שאתם מבצעים פריסה ממקור בפרויקט הזה, Cloud Run יציג לכם בקשה ליצור מאגר ברירת מחדל של Artifact Registry.
הרצת המשימה
כדי להריץ את העבודה, פועלים לפי השלבים הבאים:
מעלים סרטון לדוגמה לקידוד:
gcloud storage cp gs://cloud-samples-data/video/cat.mp4 gs://preprocessing-PROJECT_IDמריצים את העבודה:
gcloud run jobs execute video-encoding-job \ --region REGION \ --wait \ --args="cat.mp4,encoded_cat.mp4,-vcodec,h264_nvenc,-cq,21,-movflags,+faststart"הקובץ
entrypoint.shדורש קובץ קלט, קובץ פלט וארגומנטים לשליחה אל FFmpeg.בודקים את היומנים של Cloud Run כדי לוודא שהסרטון עבר המרה:
gcloud run jobs logs read video-encoding-job --region REGIONמורידים את הסרטון שהקידוד שלו הומר:
gcloud storage cp gs://transcoded-PROJECT_ID/encoded_cat.mp4 .
הסרת המשאבים
כדי להימנע מחיובים נוספים בחשבון Google Cloud , מוחקים את כל המשאבים שהצבתם באמצעות המדריך הזה.
מחיקת המאגר
ב-Cloud Run, החיוב מתבצע רק על הזמן שבו המשימה פועלת. עם זאת, יכול להיות שעדיין תחויבו על אחסון קובץ האימג' של הקונטיינר ב-Artifact Registry. כדי למחוק מאגרי Artifact Registry, פועלים לפי השלבים שמפורטים במאמר מחיקת מאגרים במסמכי התיעוד של Artifact Registry.
מחיקת המשרה
העלות של משימות ב-Cloud Run נצברת רק כשמשימת עבודה מופעלת. כדי למחוק את עבודת Cloud Run, מבצעים את אחד מהשלבים הבאים:
המסוף
כדי למחוק משרה:
נכנסים ל-Cloud Run במסוף Google Cloud :
ברשימת המשרות, מאתרים את המשרה שרוצים למחוק ולוחצים על תיבת הסימון שלה כדי לבחור אותה.
לוחצים על Delete. הפעולה הזו תסיים את כל ההרצות של המשימות שנמצאות בתהליך ואת כל המכונות של הקונטיינרים שפועלות.
gcloud
כדי למחוק משימה, מריצים את הפקודה הבאה:
gcloud run jobs delete JOB_NAME
מחליפים את JOB_NAME בשם של המשימה.
מחיקת פרויקט הבדיקה
כשמוחקים פרויקט ב- Google Cloud , החיוב על כל המשאבים באותו פרויקט מופסק. כדי לשחרר את כל Google Cloud המשאבים בפרויקט, פועלים לפי השלבים הבאים:
כדי למחוק Google Cloud פרויקט:
gcloud projects delete PROJECT_ID