1. खास जानकारी
कोडलैब (अपने हिसाब से इस्तेमाल किए जाने वाले टूल) की इस सीरीज़ का मकसद, डेवलपर की मदद करना है, ताकि वे अपने ऐप्लिकेशन को डिप्लॉय करते समय मौजूद कई विकल्पों को समझ सकें. आप एक आसान वेब ऐप्लिकेशन में Google Cloud Translation API को इस्तेमाल करने के तरीके के बारे में जान पाएंगे. इस ऐप्लिकेशन को स्थानीय तौर पर चलाया जा सकता है या इसे बिना सर्वर वाले कंप्यूट प्लैटफ़ॉर्म (App Engine, Cloud Functions या Cloud Run) पर डिप्लॉय किया जा सकता है.
Node.js के साथ आपको Express.js वेब फ़्रेमवर्क का इस्तेमाल करके यह JavaScript ट्यूटोरियल बनाना होगा. यहां आपको बिना सर्वर वाले प्लैटफ़ॉर्म से Google Cloud API को ऐक्सेस करने का तरीका भी पता चलेगा. इस ऐप्लिकेशन के सभी वर्शन "बिना सर्वर वाले बिना सर्वर" के हैं ओपन सोर्स रेपो, जिसमें इस ऐप्लिकेशन का Python वर्शन और स्वतंत्र कोडलैब (कोड बनाना सीखना) शामिल है. रेपो, ऐसे मिलते-जुलते ऐप्लिकेशन को भी होस्ट करता है जो डेवलपर को बताते हैं कि हमारे बिना सर्वर वाले प्लैटफ़ॉर्म से, गैर-Cloud Google API को ऐक्सेस कैसे करें.
यह कोडलैब इस ऐप्लिकेशन को ऊपर दिए गए बोल्ड प्लैटफ़ॉर्म पर डिप्लॉय करने पर फ़ोकस करता है.
आपको इनके बारे में जानकारी मिलेगी
- Google Cloud API का इस्तेमाल करें, खास तौर पर Cloud Translation API (बेहतर/v3)
- किसी बेसिक वेब ऐप्लिकेशन को स्थानीय तौर पर चलाएं या Cloud सर्वरलेस कंप्यूट प्लैटफ़ॉर्म पर डिप्लॉय करें
आपको इन चीज़ों की ज़रूरत होगी
- Google Cloud प्रोजेक्ट, जिसमें चालू क्लाउड बिलिंग खाता हो
- स्थानीय तौर पर चलाने के लिए इंस्टॉल किया गया वेब फ़्रेमवर्क ( Python ट्यूटोरियल करने वाले लोगों के लिए Flask या JavaScript/Node.js ट्यूटोरियल करने वालों के लिए एक्सप्रेस
- Google Cloud डिप्लॉयमेंट के लिए, कम से कम एक अलग कंप्यूट प्लैटफ़ॉर्म चालू किया गया है
- प्रोग्रामिंग की बुनियादी स्किल (Python या JavaScript/Node.js)
- ऑपरेटिंग सिस्टम के बुनियादी निर्देशों के बारे में काम करने की जानकारी
सर्वे
इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?
Python या Node.js के साथ डेवलप करने के अपने अनुभव को आप कितनी रेटिंग देंगे/देंगी?
Google Cloud की सेवाएं इस्तेमाल करने का आपका अनुभव कैसा रहा?
2. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेटअप करना
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.
- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों का डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करता. साथ ही, आप इसे किसी भी समय अपडेट कर सकते हैं.
- प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होना चाहिए. साथ ही, आईडी को बदला नहीं जा सकता. सेट अप के बाद इसे बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है; आम तौर पर, आपको उसके होने की कोई परवाह नहीं होती. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना पड़ता है और आम तौर पर इसकी पहचान
PROJECT_ID
के रूप में की जाती है. इसलिए, अगर आपको यह पसंद नहीं आता है, तो कोई भी कोड जनरेट करें. इसके अलावा, खुद का भी कोड बनाकर देखा जा सकता है कि वह उपलब्ध है या नहीं. फिर यह "फ़्रोज़न" होता है प्रोजेक्ट बनने के बाद. - तीसरी वैल्यू, प्रोजेक्ट नंबर है, जिसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
- इसके बाद, आपको क्लाउड संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा किसी अन्य प्लैटफ़ॉर्म पर बिलिंग न करने के लिए, संसाधनों को बंद करने के लिए, "साफ़-सफ़ाई" का पालन करें कोडलैब के आखिर में दिए गए निर्देश देखें. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.
3. Translation API चालू करें
इस सेक्शन में, आपको Google API को चालू करने का तरीका बताया जाएगा. हमारे सैंपल ऐप्लिकेशन के लिए, आपको Cloud Translation API चालू करना होगा. सैंपल ऐप्लिकेशन को किस प्लैटफ़ॉर्म पर डिप्लॉय किया जा रहा है, इसके आधार पर आपको App Engine, Cloud Functions, और/या Cloud Run (साथ ही Cloud Artifact Registry) भी चालू करने होंगे.
Google API चालू करना
शुरुआती जानकारी
आप अपने ऐप्लिकेशन में चाहे जिस Google API का इस्तेमाल करना चाहते हों वह चालू होना चाहिए. कमांड-लाइन या Cloud Console पर जाकर, एपीआई चालू किए जा सकते हैं. एपीआई को चालू करने की प्रोसेस एक जैसी है. इसलिए, जब एक एपीआई चालू किया जाता है, तो इसी तरह दूसरा एपीआई भी चालू किया जा सकता है.
पहला विकल्प: gcloud
कमांड-लाइन इंटरफ़ेस (क्लाउड शेल या लोकल एनवायरमेंट)
हालांकि, Cloud Console से एपीआई चालू करना सामान्य बात है, लेकिन कुछ डेवलपर कमांड लाइन से ही सारे काम करना पसंद करते हैं. ऐसा करने के लिए, आपको एपीआई की "सेवा का नाम" खोजना होगा. यह यूआरएल जैसा लग रहा है: SERVICE_NAME
.googleapis.com
. इन्हें इस्तेमाल किए जा सकने वाले प्रॉडक्ट के चार्ट में देखा जा सकता है. इसके अलावा, Google Discovery API की मदद से, प्रोग्राम बनाकर इनके लिए क्वेरी की जा सकती है.
Cloud Shell का इस्तेमाल करके या gcloud
कमांड-लाइन टूल इंस्टॉल किए हुए आपके लोकल डेवलपमेंट एनवायरमेंट का इस्तेमाल करके), इस जानकारी के साथ एपीआई को चालू किया जा सकता है. इसके लिए, यह तरीका अपनाएं:
gcloud services enable SERVICE_NAME.googleapis.com
पहला उदाहरण: Cloud Vision API को चालू करना
gcloud services enable vision.googleapis.com
उदाहरण 2: Google App Engine को चालू करना
gcloud services enable appengine.googleapis.com
तीसरा उदाहरण: एक अनुरोध से कई एपीआई चालू करें. उदाहरण के लिए, अगर इस कोडलैब के व्यूअर किसी ऐप्लिकेशन को Cloud Translation API से App Engine, Cloud Functions, और Cloud Run में डिप्लॉय कर रहे हैं, तो कमांड लाइन यह होगी:
gcloud services enable appengine.googleapis.com cloudfunctions.googleapis.com artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
यह निर्देश App Engine, Cloud Functions, Cloud Run, और Cloud Translation API को चालू करता है. इसके अलावा, यह Cloud Artifact Registry को चालू कर देता है. इसकी वजह यह है कि कंटेनर इमेज को Cloud Build सिस्टम में रजिस्टर किया जाना चाहिए, ताकि उन्हें Cloud Run पर डिप्लॉय किया जा सके.
दूसरा विकल्प: Cloud Console
एपीआई मैनेजर में जाकर भी, Google API को चालू किया जा सकता है. Cloud Console में, एपीआई मैनेजर पर जाएं और लाइब्रेरी चुनें.
मिलते-जुलते नतीजे देखने के लिए, खोज बार में किसी एपीआई का नाम डालें:
वह एपीआई चुनें जिसे आपको चालू करना है और चालू करें बटन पर क्लिक करें:
आप चाहे किसी भी Google API का इस्तेमाल करना चाहते हों, सभी एपीआई को चालू करने की प्रोसेस एक जैसी ही होती है.
लागत
कई Google API का इस्तेमाल बिना किसी शुल्क के किया जा सकता है. हालांकि, Google Cloud के ज़्यादातर प्रॉडक्ट और एपीआई का इस्तेमाल करने पर पैसे चुकाने पड़ सकते हैं. Cloud API चालू करते समय, आपसे कोई चालू बिलिंग खाता बनाने के लिए कहा जा सकता है. हालांकि, Google Cloud के कुछ प्रॉडक्ट में "हमेशा मुफ़्त" सुविधा उपलब्ध है टियर चुनें, जिसे बिलिंग शुल्क देने के लिए आपको पार करना होगा.
GCP के नए उपयोगकर्ताओं को मुफ़्त में आज़माने की सुविधा दी जा सकती है. फ़िलहाल, इस ऑफ़र में शुरुआती 90 दिनों के लिए 300 डॉलर की छूट है. आम तौर पर, कोड लैब पर ज़्यादा या कोई बिलिंग नहीं होती है. इसलिए, हमारा सुझाव है कि जब तक आप इसे आज़माने के लिए तैयार न हों, तब तक मुफ़्त में आज़माने की सुविधा को रोक दें. खास तौर पर, ऐसा इसलिए है, क्योंकि यह एक बार इस्तेमाल किया जा सकने वाला ऑफ़र है. मुफ़्त टियर का कोटा खत्म नहीं होता है और इस पर कोई असर नहीं पड़ता. भले ही, आपने मुफ़्त में आज़माने की सुविधा का इस्तेमाल किया हो या नहीं.
उपयोगकर्ताओं को एपीआई को चालू करने से पहले, किसी भी एपीआई के लिए कीमत की जानकारी देखनी चाहिए. जैसे, Cloud Vision API की कीमत पेज. खास तौर पर यह ध्यान रखना चाहिए कि क्या एपीआई का कोई फ़्री टियर है और अगर उपलब्ध है, तो वह क्या है. अगर आपने हर दिन या महीने की तय सीमा के अंदर रहकर काम किया है, तो आपसे कोई शुल्क नहीं लिया जाएगा. Google प्रॉडक्ट ग्रुप एपीआई के हिसाब से, कीमत और मुफ़्त टियर अलग-अलग होते हैं. उदाहरण:
- Google Cloud/GCP — हर प्रॉडक्ट का बिल अलग तरीके से बनाया जाता है और आम तौर पर, हर बार इस्तेमाल के लिए पैसे चुकाने होते हैं; ऊपर फ़्री टियर की जानकारी देखें.
- Google Maps — इसमें एपीआई का एक सुइट है और उपयोगकर्ताओं को हर महीने 200 डॉलर का मुफ़्त क्रेडिट दिया जाता है.
- Google Workspace (पहले इसे G Suite के नाम से जाना जाता था) API — इस वर्शन में, Workspace के हर महीने के सदस्यता शुल्क के तहत इस्तेमाल (कुछ तय सीमाओं तक) किए जा सकते हैं. इसलिए, Gmail, Google Drive, Calendar, Docs, Sheets या Slides जैसे ऐप्लिकेशन के एपीआई के इस्तेमाल के लिए, डायरेक्ट बिलिंग की सुविधा का इस्तेमाल नहीं किया जाता.
Google के अलग-अलग प्रॉडक्ट के लिए, अलग-अलग तरीके से बिल भेजा जाता है. इसलिए, पक्का करें कि आपने उस जानकारी के लिए सही दस्तावेज़ दिए हों.
पक्का करना कि कौनसी सेवाएं चालू हैं
पक्का करें कि एपीआई मैनेजर में, ऊपर बताए गए तरीके से Cloud Translation API का इस्तेमाल किया जा रहा है. अगर आपने कमांड-लाइन से, बिना सर्वर वाले प्लैटफ़ॉर्म को चालू नहीं किया है, तो Cloud Console में उनसे जुड़े हर डैशबोर्ड से ऐसा किया जा सकता है: App Engine, Cloud Functions, Cloud Run.
Cloud Console से एपीआई को चालू करने से जुड़ी विज़ुअल जानकारी काफ़ी अहम होती है. हालांकि, gcloud
टूल का इस्तेमाल ज़्यादा तेज़ी से किया जा सकता है. इस टूल में कुछ ही सेकंड में सभी सेवाएं चालू हो जाती हैं:
$ gcloud services enable appengine.googleapis.com \ cloudfunctions.googleapis.com artifactregistry.googleapis.com \ run.googleapis.com translate.googleapis.com Operation "operations/acf.p2-xxxxxx035451-704918f2-5470-4436-9bdd-c3b204yyyyyy" finished successfully.
कीमत के बारे में ज़्यादा जानकारी
लागत के बारे में ऊपर दिया गया सेक्शन सभी Google API पर सामान्य है. चलिए, इस ट्यूटोरियल की ज़्यादा खास बातों पर चर्चा करते हैं. हालांकि, इसका हर महीने का कोटा कुल "हमेशा मुफ़्त" सूची में शामिल नहीं है" टीयर की खास जानकारी वाले पेज पर दिखता है, तो Translation API के कीमत तय करने वाले पेज पर यह जानकारी मिलती है कि सभी उपयोगकर्ताओं को हर महीने तय संख्या में अनुवाद किए गए वर्ण मिलते हैं. इस थ्रेशोल्ड से नीचे रहने पर, एपीआई से कोई शुल्क नहीं लिया जाएगा. Google Cloud के बिना सर्वर वाले प्लैटफ़ॉर्म का इस्तेमाल करने की लागत के बारे में ज़्यादा जानने के लिए, डेटा स्टोर करने की जगह का लागत सेक्शन देखें. "स्टोरेज खाली करें" सेक्शन में इस बारे में चर्चा की जाएगी कि कोडलैब का यह मॉड्यूल पूरा होने के बाद, बिलिंग की सुविधा कैसे बंद की जाए.
4. सैंपल ऐप्लिकेशन कोड पाएं
ZIP या क्लोन रिपो डाउनलोड करें
- ZIP फ़ाइल डाउनलोड करें या
git clone https://github.com/googlecodelabs/cloud-nebulous-serverless.git
की मदद से रेपो का क्लोन बनाएं - अगर आपके पास लोकल डेवलपर एनवायरमेंट नहीं है और आपको Cloud Shell में यह ट्यूटोरियल देखना है, तो यहां दिए गए
git clone
निर्देश से ही रेपो का क्लोन बनाएं. - ZIP फ़ाइल को उसके हरे कोड बटन से भी ऐक्सेस किया जा सकता है, जैसा कि इस स्क्रीनशॉट में दिखाया गया है:
अब आपके पास सब कुछ है, तो इस खास ट्यूटोरियल को करने के लिए फ़ोल्डर की पूरी कॉपी बनाएं, क्योंकि इसमें फ़ाइलों को मिटाना या बदलना शामिल हो सकता है. अगर आपको अलग से कोई डिप्लॉयमेंट करना है, तो ओरिजनल फ़ाइल को कॉपी करके फिर से शुरू करें. इससे आपको उसका क्लोन बनाने या उसे दोबारा डाउनलोड करने की ज़रूरत नहीं पड़ेगी.
5. Node.js के एनवायरमेंट की पुष्टि करें
Node.js के एनवायरमेंट को सेट अप करने के लिए, यह तरीका अपनाएं:
- पक्का करें कि आपने Node (>=10) और NPM (>=6) के कंटेंपररी वर्शन इंस्टॉल किए हैं
- वहां जाएं जहां आपने रेपो को क्लोन किया था (या ZIP फ़ाइल को अनज़िप किया था) फिर
cloud/nodejs
फ़ोल्डर पर जाएं - पुष्टि करें कि
package.json
मौजूद है. इसके बाद,npm install
चलाएं
ऊपर दिए गए #1 के लिए, आप पुष्टि कर सकते हैं कि आपके पास कमांड-लाइन में क्या-क्या वर्शन हैं:
$ node -v v17.0.1 $ npm -v 8.1.0
6. सैंपल ऐप्लिकेशन के बारे में जानकारी
यह सैंपल ऐप्लिकेशन, Google Translate से जुड़ा एक आसान टूल है. यह उपयोगकर्ताओं को अंग्रेज़ी में टेक्स्ट डालने और उसके बराबर अनुवाद स्पैनिश में पाने के लिए कहता है.
package.json
कॉन्फ़िगरेशन फ़ाइल से यह पता चलता है कि इस ऐप्लिकेशन के लिए, तीसरे पक्ष के कौनसे पैकेज की ज़रूरत है (ध्यान दें कि पैकेज वर्शन, यहां दी गई सूची में बताए गए वर्शन के अलावा भी अपडेट किए जा सकते हैं):
{
"name": "cloud-nebulous-serverless-nodejs",
"version": "0.0.1",
"description": "Nebulous Serverless sample app",
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "mocha test/test_neb.js"
},
"author": "Google LLC",
"license": "Apache-2.0",
"dependencies": {
"@google-cloud/translate": "^6.3.1",
"express": "^4.17.1",
"nunjucks": "^3.2.3"
},
"devDependencies": {
"mocha": "^9.1.3",
"supertest": "^6.1.6"
}
}
अब index.js
फ़ाइल खोलें, ताकि हम देख सकें कि यह कैसे काम करती है. लाइसेंस के बारे में टिप्पणी की गई लाइनों को हटाने पर, सबसे ऊपर और सबसे नीचे ऐसा दिखता है:
const express = require('express');
const nunjucks = require('nunjucks');
const {TranslationServiceClient} = require('@google-cloud/translate');
const app = express();
app.use(express.urlencoded({extended: true}));
nunjucks.configure('templates', {autoescape: true, express: app});
const TRANSLATE = new TranslationServiceClient();
const PORT = process.env.PORT || 8080;
const SOURCE = ['en', 'English'];
const TARGET = ['es', 'Spanish'];
let parent;
TRANSLATE.getProjectId().then(result => {
parent = `projects/${result}`;
});
if (!process.env.FUNCTION_TARGET) {
app.listen(PORT, () =>
console.log(`Listening on port ${PORT}`)
);
}
# . . . [translate() function definition] . . .
app.all('/', translate);
module.exports = {
app
};
require
में फ़्रेमवर्क और टेंप्लेट करने की सुविधा के साथ-साथ Cloud Translation API क्लाइंट लाइब्रेरी भी उपलब्ध होती है.- ग्लोबल वैरिएबल, वेब ऐप्लिकेशन, Cloud प्रोजेक्ट आईडी, Translation API क्लाइंट, पैरंट "जगह की जानकारी का पाथ" दिखाते हैं के साथ-साथ
SOURCE
औरTARGET
भाषाओं के लिए उपलब्ध है. इस मामले में, यह अंग्रेज़ी (en
) और स्पैनिश (es
) है. हालांकि, इन वैल्यू को बेझिझक Cloud Translation API में इस्तेमाल होने वाले अन्य भाषा कोड में भी बदला जा सकता है. - हर जोड़े का पहला एलिमेंट (
SOURCE
औरTARGET
) भाषा कोड है. वहीं दूसरा एलिमेंट, भाषा का नाम है. इसे सिर्फ़ डिसप्ले के लिए इस्तेमाल किया जाता है, क्योंकि एपीआई के काम का नहीं है. - सबसे नीचे दी गई कुछ लाइनों का मतलब है कि सभी एचटीटीपी अनुरोधों को
translate()
पर भेजना है और फिरapp
ऐप्लिकेशन ऑब्जेक्ट को एक्सपोर्ट करना है.
आखिर में, index.js
के बीच में ऐप्लिकेशन का मुख्य बिंदु है, translate()
फ़ंक्शन:
async function translate(req, rsp) {
let text = null;
let translated = null;
if (req.method === 'POST') {
text = req.body.text.trim();
if (text) {
const data = {
contents: [text],
parent: parent,
targetLanguageCode: TARGET[0]
};
const [response] = await TRANSLATE.translateText(data);
translated = response.translations[0].translatedText;
}
}
const context = {
orig: {text: text, lc: SOURCE},
trans: {text: translated, lc: TARGET}
};
rsp.render('index.html', context);
}
मुख्य फ़ंक्शन, उपयोगकर्ता से इनपुट लेने का काम करता है और काम को बेहतर बनाने के लिए Translation API को कॉल करता है. आइए, इसके बारे में जानते हैं:
- फ़ॉर्म के बेसिक वैरिएबल को रीसेट करें. यह मुख्य रूप से जीईटी अनुरोधों के लिए है, क्योंकि पोस्ट अनुरोधों में ऐसा डेटा होगा जो इनकी जगह ले लेगा.
- अगर यह एक पीओएसटी है, तो अनुवाद करने के लिए टेक्स्ट लें और अगर वह खाली नहीं है, तो एपीआई मेटाडेटा की ज़रूरत के बारे में बताने वाली JSON संरचना बनाएं. इसके बाद, एपीआई को सर्विस के लिए कॉल करें.
- हमने अंग्रेज़ी के किसी खास सोर्स के लिए,
SOURCE[0]
में एपीआई को पास नहीं किया है. जब सोर्स भाषा को छोड़ा जाता है, तो इसका मतलब है कि एपीआई से सोर्स भाषा की अपने-आप पहचान करने का अनुरोध किया जा रहा है. ऐसा करने के लिए, दस्तावेज़ मेंsourceLanguageCode
देखें पर क्लिक करें. - इसके बावजूद, टेंप्लेट के कॉन्टेक्स्ट में असल नतीजों (POST) या कोई डेटा नहीं (GET) फ़ॉर्मैट करें और रेंडर करें.
ऐप्लिकेशन का विज़ुअल हिस्सा, टेंप्लेट index.html
फ़ाइल में है. इसमें, पहले अनुवाद किए गए सभी नतीजे दिखते हैं. अगर ऐसा नहीं है, तो किसी फ़ॉर्म के बाद उसका अनुवाद करने के लिए कहा जाता है:
<!doctype html>
<html><head><title>My Google Translate 1990s</title><body>
<style>
body {
font-family: Verdana, Helvetica, sans-serif;
background-color: #DDDDDD;
}
</style>
<h2>My Google Translate (1990s edition)</h2>
{% if trans['text'] %}
<h4>Previous translation</h4>
<li><b>Original</b>: {{ orig['text'] }} (<i>{{ orig['lc'][0] }}</i>)</li>
<li><b>Translated</b>: {{ trans['text'] }} (<i>{{ trans['lc'][0] }}</i>)</li>
{% endif %}
<h4>Enter <i>{{ orig['lc'][1] }}</i> text to translate to <i>{{ trans['lc'][1] }}</i>:</h4>
<form method="POST"><input name="text"><input type="submit"></form>
</body></html>
ट्यूटोरियल के बाकी बचे हिस्से के लिए, इस ऐप्लिकेशन को डिप्लॉय करने और चलाने के लिए, चारों में से कोई एक या सभी विकल्प चुने जा सकते हैं. सभी डिप्लॉयमेंट वैकल्पिक होते हैं. इसका मतलब है कि उनमें से कोई भी या सभी डिप्लॉय किए जा सकते हैं.
- सेवा को स्थानीय तौर पर चलाएं
- App Engine में डिप्लॉय करें (स्टैंडर्ड एनवायरमेंट)
- Cloud Functions में डिप्लॉय करें
- Cloud Run पर डिप्लॉय करें
7. पहला विकल्प: सेवा को स्थानीय तौर पर चलाना
कोडलैब का यह सेक्शन सिर्फ़ लोकल नेटवर्क पर चलने के लिए है. अगर सिर्फ़ क्लाउड पर डिप्लॉय किया जा रहा है, तो अगले सेक्शन पर जाएं.
सैंपल ऐप्लिकेशन को स्थानीय तौर पर चलाने के लिए, तीन अलग-अलग चरणों का पालन करना होगा:
- सेवा खाता बनाना
- सेवा खाते के लिए सार्वजनिक/निजी कुंजी का जोड़ा बनाना
- क्रेडेंशियल फ़ाइल डाउनलोड करें और ऐप्लिकेशन कोड के साथ बंडल का इस्तेमाल करें
- सेवा शुरू करें
सेवा खातों के बारे में जानें
सेवा खाते, ऐसे डेटा को ऐक्सेस करते समय क्लाउड-आधारित ऐप्लिकेशन के लिए Google API को ऐक्सेस करने का सुरक्षा तरीका है जो किसी व्यक्ति का नहीं होता. उपयोगकर्ताओं को Cloud पर डिप्लॉय करते समय, रैंप-अप में लगने वाले समय को कम करने के लिए, Google Cloud के सभी कंप्यूट प्लैटफ़ॉर्म (सर्वर-लेस या अन्य) डिफ़ॉल्ट सेवा खाते उपलब्ध कराते हैं.
डिफ़ॉल्ट सेवा खातों में कई तरह की अनुमतियां होती हैं. इन्हें "लाल टेप से काटना" करने की अनुमति मिलती है. हालांकि, जब आप प्रोडक्शन सेवा लॉन्च करने के लिए तैयार हों, तो हमारा सुझाव है कि उपयोगकर्ता "कम से कम अधिकारों" के सबसे सही तरीकों का पालन करें. लेकिन उपयोगकर्ता के मैनेज किए जाने वाले सेवा खाते बनाना, ताकि आपका ऐप्लिकेशन ठीक से काम करे. इसके लिए, आपको सिर्फ़ ज़रूरी अनुमतियां देनी होंगी. इसके बावजूद, स्थानीय डिप्लॉयमेंट के लिए कोई भी डिफ़ॉल्ट सेवा खाता नहीं होता है. इसलिए, आपको एक सेवा खाता, साथ ही एक सेवा खाता कुंजी (असल में सार्वजनिक/निजी कुंजी का जोड़ा) बनानी होगी और उन क्रेडेंशियल को ऐप्लिकेशन कोड में उपलब्ध कराना होगा.
सेवा खाते का कुंजी का जोड़ा बनाना और क्रेडेंशियल फ़ाइल डाउनलोड करना
स्थानीय तौर पर इस्तेमाल करने के लिए, सेवा खाता और सार्वजनिक/निजी कुंजी का जोड़ा बनाने के लिए, इस पेज पर दिए गए निर्देशों का पालन करें. सेवा खाता कुंजी बनाते समय, आपसे ज़रूरी अनुमतियां देने के लिए कहा जाएगा. roles/cloudtranslate.user
को ज़रूर चुनें, ताकि आप एपीआई को ऐक्सेस कर सकें.
कुंजी का जोड़ा बन जाने के बाद, आपको सेवा खाते की कुंजी वाली फ़ाइल डाउनलोड करने के लिए कहा जाएगा. इसे credentials.json
नाम दें और इसे ऐप्लिकेशन के टॉप-लेवल फ़ोल्डर में ले जाएं. अब आपको क्लाउड SDK टूल को यह बताना होगा कि वह उन क्रेडेंशियल का इस्तेमाल करे: उस फ़ाइल पर ले जाने के लिए, GOOGLE_APPLICATION_CREDENTIALS
एनवायरमेंट वैरिएबल सेट करें. इस प्रोसेस के बारे में ज़्यादा जानकारी इस पेज पर भी मिल सकती है. इसमें सेवा खातों के इस्तेमाल की जानकारी दी गई है.
सेवा शुरू करें
जब आप आगे बढ़ने के लिए तैयार हों, तो यहां दिए गए निर्देश के साथ, Express सर्वर को स्थानीय तौर पर लॉन्च करें:
$ npm start > cloud-nebulous-serverless-nodejs@0.0.1 start > node index.js Listening on port 8080
localhost:8080 पर इससे कनेक्ट करने के लिए, अपने वेब ब्राउज़र पर जाएं. आपको कुछ ऐसा दिखेगा:
यह देखने के लिए कि कोई चीज़ काम कर रही है, उसका अनुवाद करें!
जब आप इससे संतुष्ट हो जाएं, तो ^C (control-C) के साथ सर्वर को बंद करें और बाहर निकलें. स्थानीय डिप्लॉयमेंट चलाने के लिए बधाई. अच्छी खबर है: क्लाउड पर डिप्लॉय करना बहुत आसान है.
समस्या हल करने से जुड़ी जानकारी
क्या अनुवाद का अनुरोध करते समय आपको इस तरह की कोई गड़बड़ी मिल रही है?
node:fs:2486 handleErrorFromBinding(ctx); ^ Error: The file at credentials.json does not exist, or it is not a file. ENOENT: no such file or directory, lstat '/tmp/nodejs/credentials.json' . . .
SOLUTION: इस गड़बड़ी का मतलब है कि आपने सेवा खाता नहीं बनाया और सार्वजनिक/निजी की-पेयर वाली फ़ाइल credentials.json
डाउनलोड नहीं की. कृपया " पहला विकल्प: सेवा को स्थानीय तौर पर चलाना" और इस प्रक्रिया को पूरा करें और आगे बढ़ने से पहले मुख्य फ़ोल्डर में क्रेडिट इंस्टॉल करें.
8. विकल्प 2: App Engine में डिप्लॉय करें (स्टैंडर्ड एनवायरमेंट)
कोडलैब का यह सेक्शन सिर्फ़ नोड App Engine में डिप्लॉय करने के लिए है. अगर आपको दिलचस्पी नहीं है, तो अगले सेक्शन पर जाएं.
यह डिप्लॉयमेंट app.yaml
कॉन्फ़िगरेशन फ़ाइल का इस्तेमाल करता है. इससे App Engine को यह पता चलता है कि एक लाइन के साथ किस रनटाइम का इस्तेमाल करना है:
runtime: nodejs16
app.yaml
फ़ाइल का इस्तेमाल, Cloud Functions या Cloud Run नहीं करता. अगर आप App Engine का इस्तेमाल नहीं करना चाहते, तो यह फ़ाइल सुरक्षित तरीके से मिटाई जा सकती है. जब आप App Engine पर डिप्लॉय करने के लिए तैयार हों, तब इस निर्देश को चलाएं:
$ gcloud app deploy
क्षेत्र चुनने के बाद, gcloud app deploy
आउटपुट बहुत कम शब्दों वाला होगा और यह ऐसा दिखना चाहिए:
Services to deploy: descriptor: [/private/tmp/nodejs/app.yaml] source: [/private/tmp/nodejs] target project: [PROJECT_ID] target service: [default] target version: [2021...] target url: [https://PROJECT_ID.REG_ABBR.appspot.com] target service account: [App Engine default service account] Do you want to continue (Y/n)? Beginning deployment of service [default]... ╔════════════════════════════════════════════════════════════╗ ╠═ Uploading 2 files to Google Cloud Storage ═╣ ╚════════════════════════════════════════════════════════════╝ File upload done. Updating service [default]...⠏WARNING: *** Improve build performance by generating and committing package-lock.json. Updating service [default]...done. Setting traffic split for service [default]...done. Deployed service [default] to [https://PROJECT_ID.REG_ABBR.appspot.com] You can stream logs from the command line by running: $ gcloud app logs tail -s default To view your application in the web browser run: $ gcloud app browse To take a quick anonymous survey, run: $ gcloud survey
अब आपका ऐप्लिकेशन दुनिया भर में उपलब्ध है, इसलिए आप अपने प्रोजेक्ट आईडी वाले यूआरएल पर पहुंच सकते हैं. साथ ही, आपको लोकल एक्सप्रेस वर्शन से मिलता-जुलता आउटपुट भी दिखेगा. हालांकि, ध्यान रखें कि यह क्लाउड पर चल रहा है और दुनिया भर में उपलब्ध है:
कोई अनुरोध सबमिट करने पर, पता चलेगा कि यह अन्य सभी डिप्लॉयमेंट की तरह ही काम करता है.
9. तीसरा विकल्प: क्लाउड फ़ंक्शन में डिप्लॉय करें
कोडलैब का यह सेक्शन सिर्फ़ नोड Cloud Functions को डिप्लॉय करने के लिए है. अगर आपको दिलचस्पी नहीं है, तो अगले सेक्शन पर जाएं.
Cloud Functions वाली कोई कॉन्फ़िगरेशन फ़ाइल नहीं है, इसलिए जब आप Cloud Functions पर डिप्लॉय करने के लिए तैयार हों, तो यह निर्देश चलाएं:
$ gcloud functions deploy translate \ --runtime nodejs16 \ --entry-point app \ --trigger-http \ --region REGION \ --allow-unauthenticated
आपके GCP प्रोजेक्ट में डिफ़ॉल्ट रूप से REGION
का इस्तेमाल किया जा सकता है. हालांकि, अपने फ़ंक्शन को किसी खास इलाके में डिप्लॉय करने के लिए, --region
फ़्लैग का इस्तेमाल किया जा सकता है. Cloud Functions, आपको क्लाउड के दूसरे प्रॉडक्ट पसंद करने का सुझाव नहीं देता है. आप चाहे कोई भी इलाका चुनें, gcloud functions deploy
आउटपुट इस तरह दिखना चाहिए:
Deploying function (may take a while - up to 2 minutes)...⠛ For Cloud Build Logs, visit: https://console.cloud.google.com/cloud-build/builds;region=REGION/15ac7fc1-731d-4f3b-bc15-8f2614xxxxxx?project=062269xxxxxx Deploying function (may take a while - up to 2 minutes)...done. availableMemoryMb: 256 buildId: aaf7e0cd-fbbd-4624-abeb-3e7437xxxxxx buildName: projects/062269xxxxxx/locations/REGION/builds/aaf7e0cd-fbbd-4624-abeb-3e7437xxxxxx entryPoint: app httpsTrigger: securityLevel: SECURE_OPTIONAL url: https://REGION-PROJECT_ID.cloudfunctions.net/translate ingressSettings: ALLOW_ALL labels: deployment-tool: cli-gcloud name: projects/PROJECT_ID/locations/REGION/functions/translate runtime: nodejs16 serviceAccountEmail: PROJECT_ID@appspot.gserviceaccount.com sourceUploadUrl: https://storage.googleapis.com/gcf-upload-REGION-01de94c2-6eb4-4c49-aaff-09276cdb7ae9/a1db9f2d-3511-414b-aeeb-de6042xxxxxx.zip status: ACTIVE timeout: 60s updateTime: '2021...' versionId: '...'
अब आपका ऐप्लिकेशन दुनिया भर में उपलब्ध है. इसलिए, डिप्लॉयमेंट आउटपुट ("httpsTrigger/url
" में) के मुताबिक, इस ऐप्लिकेशन को उस यूआरएल से ऐक्सेस किया जा सकता है जिसमें आपका प्रोजेक्ट आईडी है. यूआरएल कुछ ऐसा दिखना चाहिए: https://
REGION
-
PROJECT_ID
.cloudfunctions.net/translate
. यह इस बात पर निर्भर करता है कि आपने कौनसा इलाका और Cloud प्रोजेक्ट आईडी चुना है.
10. विकल्प 4: क्लाउड रन में डिप्लॉय करें
कोडलैब का यह सेक्शन सिर्फ़ Cloud Run पर डिप्लॉय करने के लिए है. अगर आपको दिलचस्पी नहीं है, तो अगले सेक्शन पर जाएं.
Cloud Run के साथ कोई कॉन्फ़िगरेशन फ़ाइल नहीं होती, इसलिए जब आप Cloud Run पर डिप्लॉय करने के लिए तैयार हों, तो नीचे दिए गए निर्देशों का पालन करें.
अब आप इस आदेश को चलाकर अपनी अनुवाद सेवा को Cloud Run पर डिप्लॉय करने के लिए तैयार हैं:
$ gcloud run deploy translate --source . --allow-unauthenticated --platform managed
आउटपुट ऐसा दिखना चाहिए. साथ ही, अगले चरणों के बारे में कुछ निर्देश दें:
Please specify a region: [1] asia-east1 [2] asia-east2 . . . (other regions) . . . [28] us-west4 [29] cancel Please enter your numeric choice: REGION_CHOICE To make this the default region, run `gcloud config set run/region REGION`. Deploying from source requires an Artifact Registry repository to store build artifacts. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)? This command is equivalent to running "gcloud builds submit --pack image=[IMAGE] ." and "gcloud run deploy translate --image [IMAGE]" Building . . . and deploying container to Cloud Run service [translate] in project [PROJECT_ID] region [REGION] ✓ Building and deploying... Done. ✓ Creating Container Repository... ✓ Uploading sources... ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/60e1b 9bb-b991-4b4e-8d8a-HASH?project=PROJECT_NUMBER]. ✓ Creating Revision... ✓ Routing traffic... ✓ Setting IAM Policy... Done. Service [translate] revision [translate-00001-xyz] has been deployed and is serving 100 percent of traffic. Service URL: https://SVC_NAME-HASH-REG_ABBR.a.run.app
Cloud Build आपके ऐप्लिकेशन को Cloud Run पर ठीक उसी तरह इस्तेमाल करता है जिस तरह आप ऐप्लिकेशन को स्थानीय तौर पर चलाते हैं. Node.js के उपयोगकर्ताओं के लिए, यह npm install
और npm start
पर काम करता है. Python के लिए, यह pip install -r requirements.txt
चलाता है और आपके Procfile
में दिए गए निर्देशों से ऐप्लिकेशन को चालू करता है. (यह बात, Cloud Buildpack के साथ काम करने वाली अन्य सभी भाषाओं पर लागू होती है. बिल्ड की प्रोसेस पूरी होने के बाद, आपका ऐप्लिकेशन काम के लिए तैयार हो जाएगा.
इसके बाद, आपका ऐप्लिकेशन दुनिया भर में उपलब्ध होता है. हालांकि, उसे इलाके के हिसाब से डिप्लॉय किया जाता है. साथ ही, डिप्लॉयमेंट आउटपुट में "Service URL
" के नीचे दिखाए गए आपके प्रोजेक्ट आईडी वाले यूआरएल पर जाकर, इस ऐप्लिकेशन को ऐक्सेस किया जा सकता है:
यह देखने के लिए कि कोई चीज़ काम कर रही है, उसका अनुवाद करें!
11. नतीजा
बधाई हो! आपने Cloud Translation API को चालू और इस्तेमाल करने, ज़रूरी क्रेडेंशियल पाने, और एक आसान वेब ऐप्लिकेशन को स्थानीय तौर पर Express इंजन, Cloud Functions, और/या Cloud Run में डिप्लॉय करने के बारे में सीखा है. ज़्यादा जानने या इस ऐप्लिकेशन के दूसरे वर्शन के साथ-साथ दूसरे कोडलैब ऐक्सेस करने के लिए, कृपया रेपो फ़ोल्डर देखें.
व्यवस्थित करें
Cloud Translation API की मदद से, हर महीने अनुवाद किए गए वर्णों की संख्या तय की जा सकती है. इसके लिए, कोई शुल्क नहीं चुकाना पड़ता. App Engine का एक मुफ़्त कोटा भी है. ऐसा Cloud Functions और Cloud Run के लिए भी किया जाता है. दोनों में से कोई भी सीमा पार होने पर आपको शुल्क देना होगा. अगर आपको अगले कोडलैब का इस्तेमाल जारी रखना है, तो आपको अपना ऐप्लिकेशन बंद करने की ज़रूरत नहीं है.
हालांकि, अगर आप अभी अगले ट्यूटोरियल पर जाने के लिए तैयार नहीं हैं या आपको इस बात की चिंता है कि इंटरनेट ने उस ऐप्लिकेशन को खोज लिया है जिसे आपने अभी-अभी डिप्लॉय किया है, तो अपना App Engine ऐप्लिकेशन बंद करें, अपना Cloud Function मिटाएं या अपनी Cloud Run सेवा को बंद करें. जब आप अगले कोडलैब पर जाने के लिए तैयार हों, तो उसे फिर से चालू किया जा सकता है. दूसरी ओर, अगर आपको इस ऐप्लिकेशन या अन्य कोडलैब का इस्तेमाल नहीं करना है और सब कुछ पूरी तरह से मिटाना है, तो अपना प्रोजेक्ट बंद करें.
साथ ही, बिना सर्वर वाले किसी Google Cloud कंप्यूट प्लैटफ़ॉर्म पर डिप्लॉय करने पर, मामूली बिल्ड और स्टोरेज की लागत आती है. Cloud Storage की तरह Cloud Build का अपना अलग कोटा होता है. ज़्यादा पारदर्शिता के लिए, Cloud Build आपके ऐप्लिकेशन की इमेज बनाता है. इसके बाद, इस इमेज को Cloud Container Registry या Artifact Registry में सेव कर दिया जाता है. जब इमेज को सेवा में ट्रांसफ़र किया जाता है, तो नेटवर्क इग्रेस डेटा ट्रैफ़िक के लिए उस इमेज को सेव करने के लिए, तय कोटे का कुछ हिस्सा इस्तेमाल होता है. हालांकि, हो सकता है कि आप किसी ऐसे क्षेत्र में हों जहां ऐसा कोई फ़्री टीयर उपलब्ध न हो. इसलिए, संभावित लागत को कम करने के लिए, अपने स्टोरेज के इस्तेमाल को ध्यान में रखें.
12. अन्य संसाधन
यहां दिए गए सेक्शन में, पढ़ने के लिए अतिरिक्त कॉन्टेंट के साथ-साथ सुझाए गए एक्सरसाइज़ भी दिए गए हैं. इनकी मदद से, इस ट्यूटोरियल को पूरा करने के बाद मिली जानकारी को बेहतर बनाया जा सकता है.
अतिरिक्त स्टडी
अब आपको Translation API का थोड़ा-बहुत अनुभव है. अब आपके हुनर को बेहतर बनाने के लिए हम कुछ और काम करने जा रहे हैं. अपना लर्निंग पाथ जारी रखने के लिए, हमारे सैंपल ऐप्लिकेशन में बदलाव करें, ताकि ये काम किए जा सकें:
- कोडलैब के इस मॉड्यूल के अन्य सभी वर्शन को ऐप्लिकेशन में काम करने या Google Cloud के बिना सर्वर वाले कंप्यूट प्लैटफ़ॉर्म पर डिप्लॉय करने के लिए पूरा करें. ज़्यादा जानने के लिए, रेपो README देखें.
- इस ट्यूटोरियल को पूरा करने के लिए, प्रोग्रामिंग की किसी दूसरी भाषा का इस्तेमाल करें.
- अलग-अलग स्रोत या लक्षित भाषाओं का समर्थन करने के लिए इस ऐप्लिकेशन को बदलें.
- लेख का एक से ज़्यादा भाषाओं में अनुवाद करने के लिए इस ऐप्लिकेशन को अपग्रेड करें; समर्थित लक्ष्य भाषाओं के पुलडाउन के लिए टेम्प्लेट फ़ाइल को बदल सकते हैं.
ज़्यादा जानें
Google App Engine
Google Cloud के फ़ंक्शन
Google क्लाउड रन
Google Cloud Buildpack, कंटेनर रजिस्ट्री, Artifact Registry
- Cloud Buildpacks के बारे में सूचना
- Cloud Buildpacks रेपो
- Cloud Artifact Registry का होम पेज
- Cloud Artifact Registry के दस्तावेज़
- Cloud Container Registry का होम पेज
- Cloud Container Registry के दस्तावेज़
Google Cloud Translation और Google ML Kit
- Cloud Translation का होम पेज
- Cloud Translation से जुड़े दस्तावेज़
- Cloud Translation API क्लाइंट लाइब्रेरी (डेवलपर के लिए सभी भाषाएं)
- Cloud Translation API की सुविधा, जो बोली गई या लिखी गई भाषाओं में उपलब्ध है
- Translation API कीमत तय करने का पेज
- क्लाउड एआई/एमएल के सभी "बिल्डिंग ब्लॉक" एपीआई
- Google ML Kit (मोबाइल के लिए Cloud AI/ML API का सबसेट)
- Google ML Kit Translate API
Google Cloud के अन्य प्रॉडक्ट/पेज
Python लिंक
- Python 3 App Engine क्विकस्टार्ट
- Python 2 App Engine (स्टैंडर्ड) रनटाइम
- Python 3 App Engine (स्टैंडर्ड) रनटाइम
- Python 2 और Python 2 के बीच अंतर तीन App Engine (स्टैंडर्ड) रनटाइम
- Python 2 से 3 App Engine (स्टैंडर्ड) माइग्रेशन गाइड
- Python Cloud Functions क्विकस्टार्ट
- Python Cloud Run क्विकस्टार्ट
- Google Cloud Python सहायता
- फ़्लास्क
Node.js लिंक
- Node.js App Engine का क्विकस्टार्ट
- Node.js App Engine (स्टैंडर्ड) रनटाइम
- Node.js Cloud Functions क्विकस्टार्ट
- Node.js Cloud Run क्विकस्टार्ट
- Google Cloud Node.js सहायता
- एक्सप्रेस
लाइसेंस
इस ट्यूटोरियल को क्रिएटिव कॉमंस एट्रिब्यूशन 2.0 जेनरिक लाइसेंस के तहत लाइसेंस मिला है. वहीं, रेपो में मौजूद सोर्स कोड को Apache 2 के तहत लाइसेंस मिला है.