Cloud Run जॉब का इस्तेमाल शुरू करना

1. परिचय

1965fab24c502bd5.png

खास जानकारी

Cloud Run सेवाएं उन कंटेनर के लिए बेहतर हैं जो एचटीटीपी अनुरोधों को हमेशा के लिए सुनती रहती हैं. वहीं, Cloud Run नौकरियां उन कंटेनर के लिए बेहतर होती हैं जो पूरा होने (फ़िलहाल, 24 घंटे तक) की जांच करते हैं और अनुरोधों को पूरा नहीं करते हैं. उदाहरण के लिए, किसी डेटाबेस के रिकॉर्ड को प्रोसेस करना, Cloud Storage बकेट से फ़ाइलों की सूची प्रोसेस करना या लंबे समय तक चलने वाली कार्रवाई, जैसे कि 'पाई' का हिसाब लगाना, अगर इसे Cloud Run जॉब के तौर पर लागू किया जाए, तो ये अच्छे से काम करेंगे.

जॉब में अनुरोधों को दिखाने या पोर्ट पर सुनने की सुविधा नहीं होती. इसका मतलब है कि Cloud Run सेवाओं के उलट, जॉब को वेब सर्वर को बंडल नहीं करना चाहिए. इसके बजाय, जॉब कंटेनर बंद हो जाने के बाद उन्हें बंद कर देना चाहिए.

Cloud Run जॉब में, टास्क की संख्या तय करके अपने कंटेनर की एक साथ कई कॉपी चलाई जा सकती हैं. हर टास्क, कंटेनर की एक ही चल रही कॉपी को दिखाता है. कई टास्क का इस्तेमाल करना तब फ़ायदेमंद होता है, जब हर टास्क आपके डेटा के सबसेट को अलग से प्रोसेस कर सकता हो. उदाहरण के लिए, Cloud SQL से 10,000 रिकॉर्ड या Cloud Storage से 10,000 फ़ाइलों को तेज़ी से प्रोसेस किया जा सकता है. इसके लिए, 10 टास्क से 1,000 रिकॉर्ड या फ़ाइलों को साथ में प्रोसेस करना आसान हो जाता है.

Cloud Run जॉब का इस्तेमाल करना, दो चरणों वाली प्रोसेस है:

  1. जॉब बनाएं: इसमें काम को चलाने के लिए ज़रूरी सभी कॉन्फ़िगरेशन शामिल होते हैं, जैसे कि कंटेनर इमेज, क्षेत्र, एनवायरमेंट वैरिएबल.
  2. टास्क चलाएं: इससे जॉब को लागू करने का नया तरीका बन जाता है. इसके अलावा, Cloud शेड्यूलर का इस्तेमाल करके, जॉब को शेड्यूल के हिसाब से सेट अप करें.

इस कोडलैब में, सबसे पहले आप वेब पेजों के स्क्रीनशॉट लेने और उन्हें Cloud Storage में सेव करने के लिए, Node.js ऐप्लिकेशन को एक्सप्लोर करते हैं. इसके बाद, ऐप्लिकेशन के लिए एक कंटेनर इमेज बनाएं, उसे Cloud Run जॉब पर चलाएं, जॉब को ज़्यादा वेब पेजों को प्रोसेस करने के लिए अपडेट करें, और जॉब को Cloud Scheduler के साथ शेड्यूल पर चलाएं.

आप इन चीज़ों के बारे में जानेंगे

  • वेब पेजों के स्क्रीनशॉट लेने के लिए, किसी ऐप्लिकेशन का इस्तेमाल करने का तरीका.
  • ऐप्लिकेशन के लिए कंटेनर इमेज बनाने का तरीका.
  • ऐप्लिकेशन के लिए Cloud Run जॉब बनाने का तरीका.
  • ऐप्लिकेशन को Cloud Run जॉब के तौर पर चलाने का तरीका.
  • नौकरी की जानकारी अपडेट करने का तरीका.
  • क्लाउड शेड्यूलर की मदद से जॉब शेड्यूल करने का तरीका.

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेटअप करें

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.

295004821बाबा6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों का डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करता. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. इसे सेट करने के बाद बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है; आम तौर पर, आपको उसके होने की कोई परवाह नहीं होती. ज़्यादातर कोडलैब में, आपको अपना प्रोजेक्ट आईडी बताना होगा. आम तौर पर, इसकी पहचान PROJECT_ID के रूप में की जाती है. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो किसी भी क्रम में एक और आईडी जनरेट किया जा सकता है. दूसरा तरीका यह है कि आप खुद भी आज़माकर देखें कि वह उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. साथ ही, यह प्रोजेक्ट के खत्म होने तक बना रहता है.
  • आपकी जानकारी के लिए, प्रोजेक्ट नंबर नाम की एक तीसरी वैल्यू दी गई है. इसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
  1. इसके बाद, आपको क्लाउड संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा, बिलिंग से बचने के लिए संसाधनों को बंद करें. इसके लिए, अपने बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.

क्लाउड शेल शुरू करें

Google Cloud को आपके लैपटॉप से, कहीं से भी ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जा रहा है. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Google Cloud Console में जाकर, सबसे ऊपर दाईं ओर मौजूद टूलबार पर क्लाउड शेल आइकॉन पर क्लिक करें:

84688aa223b1c3a2.png

प्रावधान करने और एनवायरमेंट से कनेक्ट होने में कुछ ही समय लगेगा. उसके पूरा हो जाने पर, आपको कुछ ऐसा दिखाई देगा:

320e18fedb7fbe0.png

इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत पड़ेगी. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud पर चलता है. यह नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रक्रिया को बेहतर बनाता है. इस कोडलैब (कोड बनाना सीखना) में आपका सारा काम ब्राउज़र में किया जा सकता है. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.

gcloud सेट अप करें

Cloud Shell में, अपना प्रोजेक्ट आईडी और वह इलाका सेट करें जहां आपको Cloud Run जॉब को डिप्लॉय करना है. उन्हें PROJECT_ID और REGION वैरिएबल के तौर पर सेव करें. आने वाले समय में, Cloud Run की जगहों में से किसी एक को चुना जा सकेगा.

PROJECT_ID=[YOUR-PROJECT-ID]
REGION=us-central1
gcloud config set core/project $PROJECT_ID

एपीआई चालू करें

सभी ज़रूरी सेवाएं चालू करना:

gcloud services enable \
  artifactregistry.googleapis.com \
  cloudbuild.googleapis.com \
  run.googleapis.com

3. कोड प्राप्त करें

वेब पेजों के स्क्रीनशॉट लेने और उन्हें Cloud Storage में सेव करने के लिए, आपको सबसे पहले Node.js ऐप्लिकेशन को एक्सप्लोर करना है. बाद में, ऐप्लिकेशन के लिए एक कंटेनर इमेज बनाई जाती है और उसे Cloud Run पर जॉब के तौर पर चलाया जाता है.

Cloud Shell से, इस रेपो से ऐप्लिकेशन कोड का क्लोन बनाने के लिए, नीचे दिया गया कमांड चलाएं:

git clone https://github.com/GoogleCloudPlatform/jobs-demos.git

ऐप्लिकेशन वाली डायरेक्ट्री पर जाएं:

cd jobs-demos/screenshot

आपको यह फ़ाइल लेआउट दिखेगा:

screenshot
 |
 ├── Dockerfile
 ├── README.md
 ├── screenshot.js
 ├── package.json

यहां हर फ़ाइल का छोटा ब्यौरा दिया गया है:

  • screenshot.js में ऐप्लिकेशन का Node.js कोड शामिल होता है.
  • package.json, लाइब्रेरी डिपेंडेंसी के बारे में बताता है.
  • Dockerfile कंटेनर इमेज के बारे में बताता है.

4. कोड एक्सप्लोर करें

कोड के बारे में जानने के लिए, पहले से मौजूद टेक्स्ट एडिटर का इस्तेमाल करें. इसके लिए, Cloud Shell विंडो के सबसे ऊपर मौजूद Open Editor बटन पर क्लिक करें.

15a2cdc9b7f6dfc6.png

यहां हर फ़ाइल की कम शब्दों में जानकारी दी गई है.

screenshot.js

screenshot.js सबसे पहले, Puppeteer और Cloud Storage को डिपेंडेंसी के तौर पर जोड़ता है. Puppeteer एक Node.js लाइब्रेरी है. इसका इस्तेमाल वेब पेजों के स्क्रीनशॉट लेने के लिए किया जाता है:

const puppeteer = require('puppeteer');
const {Storage} = require('@google-cloud/storage');

दिए गए यूआरएल का स्क्रीनशॉट लेने के लिए, Puppeteer और takeScreenshot फ़ंक्शन को शुरू करने के लिए initBrowser फ़ंक्शन का इस्तेमाल किया जाता है:

async function initBrowser() {
  console.log('Initializing browser');
  return await puppeteer.launch();
}

async function takeScreenshot(browser, url) {
  const page = await browser.newPage();

  console.log(`Navigating to ${url}`);
  await page.goto(url);

  console.log(`Taking a screenshot of ${url}`);
  return await page.screenshot({
    fullPage: true
  });
}

इसके बाद, एक Cloud Storage बकेट बनाने या पाने के लिए एक फ़ंक्शन है और बकेट में वेबपेज के स्क्रीनशॉट को अपलोड करने के लिए दूसरा फ़ंक्शन है:

async function createStorageBucketIfMissing(storage, bucketName) {
  console.log(`Checking for Cloud Storage bucket '${bucketName}' and creating if not found`);
  const bucket = storage.bucket(bucketName);
  const [exists] = await bucket.exists();
  if (exists) {
    // Bucket exists, nothing to do here
    return bucket;
  }

  // Create bucket
  const [createdBucket] = await storage.createBucket(bucketName);
  console.log(`Created Cloud Storage bucket '${createdBucket.name}'`);
  return createdBucket;
}

async function uploadImage(bucket, taskIndex, imageBuffer) {
  // Create filename using the current time and task index
  const date = new Date();
  date.setMinutes(date.getMinutes() - date.getTimezoneOffset());
  const filename = `${date.toISOString()}-task${taskIndex}.png`;

  console.log(`Uploading screenshot as '${filename}'`)
  await bucket.file(filename).save(imageBuffer);
}

आखिर में, main फ़ंक्शन एंट्री पॉइंट है:

async function main(urls) {
  console.log(`Passed in urls: ${urls}`);

  const taskIndex = process.env.CLOUD_RUN_TASK_INDEX || 0;
  const url = urls[taskIndex];
  if (!url) {
    throw new Error(`No url found for task ${taskIndex}. Ensure at least ${parseInt(taskIndex, 10) + 1} url(s) have been specified as command args.`);
  }
  const bucketName = process.env.BUCKET_NAME;
  if (!bucketName) {
    throw new Error('No bucket name specified. Set the BUCKET_NAME env var to specify which Cloud Storage bucket the screenshot will be uploaded to.');
  }

  const browser = await initBrowser();
  const imageBuffer = await takeScreenshot(browser, url).catch(async err => {
    // Make sure to close the browser if we hit an error.
    await browser.close();
    throw err;
  });
  await browser.close();

  console.log('Initializing Cloud Storage client')
  const storage = new Storage();
  const bucket = await createStorageBucketIfMissing(storage, bucketName);
  await uploadImage(bucket, taskIndex, imageBuffer);

  console.log('Upload complete!');
}

main(process.argv.slice(2)).catch(err => {
  console.error(JSON.stringify({severity: 'ERROR', message: err.message}));
  process.exit(1);
});

main तरीके के बारे में यहां दी गई बातों पर ध्यान दें:

  • यूआरएल, आर्ग्युमेंट के तौर पर पास किए जाते हैं.
  • बकेट का नाम, उपयोगकर्ता की ओर से तय किए गए BUCKET_NAME एनवायरमेंट वैरिएबल के तौर पर पास किया जाता है. बकेट का नाम, सभी Google Cloud में, दुनिया भर में अलग-अलग होना चाहिए.
  • Cloud Run जॉब से, CLOUD_RUN_TASK_INDEX एनवायरमेंट वैरिएबल पास किया जाता है. Cloud Run जॉब, ऐप्लिकेशन की एक से ज़्यादा कॉपी को यूनीक टास्क के तौर पर चला सकती हैं. CLOUD_RUN_TASK_INDEX, चल रहे टास्क का इंडेक्स दिखाता है. जब कोड को Cloud Run जॉब के बाहर चलाया जाता है, तो यह डिफ़ॉल्ट रूप से शून्य हो जाता है. जब ऐप्लिकेशन को कई टास्क के तौर पर चलाया जाता है, तो हर टास्क/कंटेनर उस यूआरएल को चुनता है जिसके लिए वह ज़िम्मेदार होता है. इसके बाद, वह स्क्रीनशॉट लेता है और इमेज को बकेट में सेव करता है.

package.json

package.json फ़ाइल, ऐप्लिकेशन के बारे में बताती है. साथ ही, Cloud Storage और Puppeteer के लिए डिपेंडेंसी के बारे में भी बताती है:

{
  "name": "screenshot",
  "version": "1.0.0",
  "description": "Create a job to capture screenshots",
  "main": "screenshot.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Google LLC",
  "license": "Apache-2.0",
  "dependencies": {
    "@google-cloud/storage": "^5.18.2",
    "puppeteer": "^13.5.1"
  }
}

डॉकरफ़ाइल

Dockerfile सभी ज़रूरी लाइब्रेरी और डिपेंडेंसी के साथ ऐप्लिकेशन के लिए कंटेनर इमेज के बारे में बताता है:

FROM ghcr.io/puppeteer/puppeteer:16.1.0
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
ENTRYPOINT ["node", "screenshot.js"]

5. जॉब डिप्लॉय करें

जॉब बनाने से पहले, आपको एक सेवा खाता बनाना होगा, जिसका इस्तेमाल आप जॉब को चलाने के लिए करेंगे.

gcloud iam service-accounts create screenshot-sa --display-name="Screenshot app service account"

सेवा खाते को storage.admin की भूमिका दें, ताकि इसका इस्तेमाल बकेट और ऑब्जेक्ट बनाने के लिए किया जा सके.

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --role roles/storage.admin \
  --member serviceAccount:screenshot-sa@$PROJECT_ID.iam.gserviceaccount.com

अब आप Cloud Run जॉब डिप्लॉय करने के लिए तैयार हैं. इसमें जॉब को चलाने के लिए ज़रूरी कॉन्फ़िगरेशन शामिल है.

gcloud beta run jobs deploy screenshot \
  --source=. \
  --args="https://example.com" \
  --args="https://cloud.google.com" \
  --tasks=2 \
  --task-timeout=5m \
  --region=$REGION \
  --set-env-vars=BUCKET_NAME=screenshot-$PROJECT_ID \
  --service-account=screenshot-sa@$PROJECT_ID.iam.gserviceaccount.com

यह सोर्स के आधार पर डिप्लॉयमेंट का इस्तेमाल करता है और बिना एक्ज़ीक्यूट किए Cloud Run जॉब बनाता है.

ध्यान दें कि वेब पेजों को आर्ग्युमेंट के तौर पर कैसे पास किया जाता है. स्क्रीनशॉट सेव करने के लिए बकेट का नाम, एनवायरमेंट वैरिएबल के तौर पर पास किया जाता है.

--tasks फ़्लैग के साथ चलाए जाने वाले कई टास्क तय करके, अपने कंटेनर की एक साथ कई कॉपी चलाई जा सकती हैं. हर टास्क, कंटेनर की एक ही चल रही कॉपी को दिखाता है. कई टास्क का इस्तेमाल करना तब फ़ायदेमंद होता है, जब हर टास्क आपके डेटा के सबसेट को अलग से प्रोसेस कर सकता हो. यह सुविधा उपलब्ध कराने के लिए, हर टास्क को अपने इंडेक्स का पता है, जिसे CLOUD_RUN_TASK_INDEX के एनवायरमेंट वैरिएबल में सेव किया जाता है. आपके कोड की ज़िम्मेदारी यह तय करना है कि कौनसा टास्क, डेटा के किस सबसेट को मैनेज करता है. इस सैंपल में सूचना --tasks=2. इससे यह पक्का होता है कि जिन दो यूआरएल को प्रोसेस करना है उनके लिए दो कंटेनर चलेंगे.

हर टास्क, ज़्यादा से ज़्यादा 24 घंटे तक चल सकता है. जैसा कि हमने इस उदाहरण में किया है, --task-timeout फ़्लैग का इस्तेमाल करके इस टाइम आउट को कम किया जा सकता है. किसी टास्क को पूरा करने के लिए, सभी टास्क का पूरा होना ज़रूरी है. डिफ़ॉल्ट रूप से, पूरे न हो पाने वाले टास्क को दोबारा नहीं किया जाता. टास्क पूरे न हो पाने पर, उन्हें फिर से कोशिश करने के लिए कॉन्फ़िगर किया जा सकता है. अगर किसी टास्क को इससे ज़्यादा बार करने की कोशिश की जाती है, तो पूरा टास्क नहीं हो पाता.

डिफ़ॉल्ट रूप से, आपका जॉब साथ-साथ ज़्यादा से ज़्यादा टास्क पर चलेगा. यह आपके टास्क की संख्या के बराबर होगा. ज़्यादा से ज़्यादा 100 टास्क हो सकते हैं. ऐसी नौकरियों के लिए, पैरलिज़्म को कम पर सेट किया जा सकता है जिनमें सीमित बढ़ाए जा सकने वाले बैकएंड का ऐक्सेस होता है. उदाहरण के लिए, ऐसा डेटाबेस जो सीमित संख्या में ऐक्टिव कनेक्शन को सपोर्ट करता है. आप --parallelism फ़्लैग के साथ समानता को कम कर सकते हैं.

6. कोई जॉब चलाएं

कार्य को चलाने से पहले, यह देखने के लिए कार्य को सूचीबद्ध करें कि यह बना दिया गया है:

gcloud run jobs list

✔
JOB: screenshot
REGION: us-central
LAST RUN AT:
CREATED: 2022-02-22 12:20:50 UTC

निम्न आदेश के साथ जॉब चलाएं:

gcloud run jobs execute screenshot --region=$REGION

यह जॉब को लागू करता है. मौजूदा और पिछले एक्ज़ीक्यूशन की सूची बनाई जा सकती है:

gcloud run jobs executions list --job screenshot --region=$REGION

...
JOB: screenshot
EXECUTION: screenshot-znkmm
REGION: $REGION
RUNNING: 1
COMPLETE: 1 / 2
CREATED: 2022-02-22 12:40:42 UTC

एक्ज़ीक्यूशन के बारे में बताएं. आपको हरे रंग का सही का निशान और tasks completed successfully मैसेज दिखेगा:

gcloud run jobs executions describe screenshot-znkmm --region=$REGION

✔ Execution screenshot-znkmm in region $REGION
2 tasks completed successfully


Image:           $REGION-docker.pkg.dev/$PROJECT_ID/containers/screenshot at 311b20d9...
Tasks:           2
Args:            https://example.com https://cloud.google.com
Memory:          1Gi
CPU:             1000m
Task Timeout:    3600s
Parallelism:     2
Service account: 11111111-compute@developer.gserviceaccount.com
Env vars:
  BUCKET_NAME    screenshot-$PROJECT_ID

आप स्थिति देखने के लिए Cloud Console के Cloud Run जॉब पेज भी देख सकते हैं:

1afde14d65f0d9ce.png

Cloud Storage बकेट की जांच करने पर, आपको बनाई गई दो स्क्रीनशॉट फ़ाइलें दिखेंगी:

7c4d355f6f65106.png

कभी-कभी आपको एक्ज़ीक्यूशन पूरा होने से पहले उसे रोकना पड़ सकता है. ऐसा इसलिए, क्योंकि आपको महसूस हुआ कि आपको अलग-अलग पैरामीटर के साथ जॉब चलाना है या कोड में कोई गड़बड़ी है और आपको बेवजह कंप्यूट टाइम का इस्तेमाल नहीं करना है.

अपने जॉब के एक्ज़ीक्यूशन को रोकने के लिए, आपको लागू किए गए जॉब को मिटाना होगा:

gcloud run jobs executions delete screenshot-znkmm --region=$REGION

7. नौकरी अपडेट करें

अगले एक्ज़ीक्यूशन में, Cloud Run जॉब के लिए आपके कंटेनर के नए वर्शन अपने-आप नहीं दिखते. अगर आपको अपने जॉब का कोड बदलना है, तो कंटेनर फिर से बनाएं और जॉब अपडेट करें. टैग की गई इमेज का इस्तेमाल करने से, आपको यह पता लगाने में मदद मिलेगी कि फ़िलहाल इमेज के किस वर्शन का इस्तेमाल किया जा रहा है.

इसी तरह, अगर आप कुछ कॉन्फ़िगरेशन वैरिएबल अपडेट करना चाहते हैं, तो आपको जॉब को भी अपडेट करना होगा. जॉब को लागू करने के बाद, नए कंटेनर और कॉन्फ़िगरेशन सेटिंग का इस्तेमाल किया जाएगा.

--args फ़्लैग में, जॉब अपडेट करें और उन पेजों को बदलें जिनके स्क्रीनशॉट, ऐप्लिकेशन लेते हैं. साथ ही, पेज की संख्या दिखाने के लिए, --tasks फ़्लैग को अपडेट करें.

gcloud run jobs update screenshot \
  --args="https://www.pinterest.com" \
  --args="https://www.apartmenttherapy.com" \
  --args="https://www.google.com" \
  --region=$REGION \
  --tasks=3

काम को फिर से चलाएं. निष्पादन खत्म होने की इंतज़ार करने के लिए --wait फ़्लैग में यह टाइम पास:

gcloud run jobs execute screenshot --region=$REGION --wait

कुछ सेकंड के बाद, आपको बकेट में जोड़े गए तीन और स्क्रीनशॉट दिखेंगे:

ed0cbe0b5a5f9144.png

8. किसी जॉब को शेड्यूल करें

अभी तक, आप मैन्युअल रूप से जॉब चला रहे हैं. असल दुनिया में, हो सकता है कि आप किसी इवेंट के रिस्पॉन्स या शेड्यूल के हिसाब से जॉब चलाना चाहें. आइए देखें कि Cloud Scheduler का इस्तेमाल करके, किसी शेड्यूल पर स्क्रीनशॉट जॉब चलाने का तरीका क्या है.

सबसे पहले, पक्का करें कि Cloud Scheduler API चालू है:

gcloud services enable cloudscheduler.googleapis.com

Cloud Run जॉब के ज़्यादा जानकारी वाले पेज पर जाएं और Triggers सेक्शन पर क्लिक करें:

3ae456368905472f.png

Add Scheduler Trigger बटन चुनें:

48cbba777f75e1eb.png

इसके बाद, दाईं ओर एक पैनल खुलेगा. इस कॉन्फ़िगरेशन के साथ हर दिन 9:00 बजे चलाने के लिए एक शेड्यूलर जॉब बनाएं और Continue चुनें:

81fd098be0db216.png

अगले पेज पर, कंप्यूट सेवा का डिफ़ॉल्ट खाता चुनें. इसके बाद, Create चुनें:

fe479501dfb91f9f.png

अब आपको एक नया क्लाउड शेड्यूलर ट्रिगर बनाया हुआ दिखेगा:

5a7bc6d96b970b92.png

क्लाउड शेड्यूलर पेज पर जाने के लिए, View Details पर क्लिक करें.

शेड्यूलर के शुरू होने के लिए, सुबह 9 बजे तक इंतज़ार किया जा सकता है. इसके अलावा, Force Run को चुनकर, क्लाउड शेड्यूलर को मैन्युअल तरीके से भी ट्रिगर किया जा सकता है:

959525f2c8041a6a.png

कुछ सेकंड के बाद, आपको दिखेगा कि क्लाउड शेड्यूलर का काम सही तरीके से हो रहा है या नहीं:

d64e03fc84d61145.png

आपको Cloud शेड्यूलर से मिले कॉल के दौरान जोड़े गए तीन और स्क्रीनशॉट भी दिखेंगे:

56398a0e827de8b0.png

9. बधाई हो

बधाई हो, आपने कोडलैब पूरा कर लिया है!

क्लीनअप (ज़रूरी नहीं)

शुल्क देने से बचने के लिए, संसाधनों का इस्तेमाल करना अच्छा रहेगा.

अगर आपको प्रोजेक्ट की ज़रूरत नहीं है, तो आप प्रोजेक्ट को आसानी से मिटा सकते हैं:

gcloud projects delete $PROJECT_ID

अगर आपको प्रोजेक्ट की ज़रूरत है, तो संसाधनों को एक-एक करके मिटाया जा सकता है.

सोर्स कोड मिटाएं:

rm -rf ~/jobs-demos/

Artifact Registry का डेटा स्टोर करने की जगह मिटाएं:

gcloud artifacts repositories delete containers --location=$REGION

सेवा खाता मिटाने के लिए:

gcloud iam service-accounts delete screenshot-sa@$PROJECT_ID.iam.gserviceaccount.com

क्लाउड रन जॉब मिटाएं:

gcloud run jobs delete screenshot --region=$REGION

क्लाउड शेड्यूलर जॉब मिटाएं:

gcloud scheduler jobs delete screenshot-scheduler-trigger --location=$REGION

Cloud Storage बकेट को मिटाना:

gcloud storage rm --recursive gs://screenshot-$PROJECT_ID

हमने इन विषयों के बारे में बताया

  • वेब पेजों के स्क्रीनशॉट लेने के लिए, किसी ऐप्लिकेशन का इस्तेमाल करने का तरीका.
  • ऐप्लिकेशन के लिए कंटेनर इमेज बनाने का तरीका.
  • ऐप्लिकेशन के लिए Cloud Run जॉब बनाने का तरीका.
  • ऐप्लिकेशन को Cloud Run जॉब के तौर पर चलाने का तरीका.
  • नौकरी की जानकारी अपडेट करने का तरीका.
  • क्लाउड शेड्यूलर की मदद से जॉब शेड्यूल करने का तरीका.