1. परिचय
Google Cloud Marketplace पर उपलब्ध SaaS सलूशन, सॉफ़्टवेयर सलूशन होते हैं. ये आपके इन्फ़्रास्ट्रक्चर पर चलते हैं, भले ही आपकी जगह कोई भी हो. हालांकि, इनका बिल Google भेजता है.
इस कोडलैब में, आपको एक बुनियादी SaaS सलूशन सेट अप करने का तरीका बताया जाएगा. यह Google Cloud Marketplace के साथ इंटिग्रेट होता है. इससे ये काम किए जा सकते हैं:
- जब कोई उपयोगकर्ता सैंपल समाधान के लिए साइन अप करे, तब सूचनाएं पाएं.
- साइन अप करने वाले ग्राहकों को मंज़ूरी दें और उन्हें अपने डेटाबेस में जोड़ें.
- उन स्थितियों को मैनेज करें जिनमें ग्राहक, बिलिंग प्लान बदलना या रद्द करना चाहते हैं.
- Google को इस्तेमाल से जुड़ी रिपोर्ट भेजें.
इस कोडलैब की मदद से, Google Cloud Marketplace के प्रोक्योरमेंट और सेवा कंट्रोल करने वाले एपीआई के बारे में ज़्यादा जाना जा सकता है. ध्यान दें कि इस गाइड में, टेस्टिंग के लिए प्रॉडक्ट एनवायरमेंट की पूरी जानकारी नहीं दी गई है.
2. शुरू करने से पहले
- अगर आपने पहले से ही अपने प्रोजेक्ट के लिए कोडलैब चालू नहीं किया है, तो Producer Portal का इस्तेमाल करके इसे चालू करें.
Producer Portal का डायरेक्ट लिंक यह है:
https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
कोड लैब को चालू करने के लिए, स्क्रीन की दाईं ओर मौजूद Codelabs पैनल में, चालू करें पर क्लिक करें.
- अपनी मशीन पर Python 3 इंस्टॉल करें. साथ ही, ये मॉड्यूल भी इंस्टॉल करें:
- Python Google Client APIs.
google-cloud-pubsub
क्लाइंट लाइब्रेरी.
Python मॉड्यूल इंस्टॉल करने के लिए, इस निर्देश का इस्तेमाल करें:
pip install --upgrade google-api-python-client google-cloud-pubsub
- इस कोडलैब के लिए, GitHub रिपॉज़िटरी को क्लोन करें या डाउनलोड करें. इसके लिए, यह कमांड इस्तेमाल करें:
git clone https://github.com/googlecodelabs/gcp-marketplace-integrated-saas.git cd gcp-marketplace-integrated-saas
- इस प्रोजेक्ट के आईडी के लिए,
GOOGLE_CLOUD_PROJECT
एनवायरमेंट वैरिएबल सेट करें: - Linux:
export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
- Windows:
set GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID
- सेवा खाते
saas-codelab
को Pub/Sub एडिटर की भूमिका असाइन करें. भूमिकाएं असाइन करने और उन्हें मैनेज करने का तरीका जानने के लिए, संसाधनों का ऐक्सेस देना, बदलना, और रद्द करना लेख पढ़ें. - सेवा खाते के लिए JSON कुंजी बनाएं और उसे डाउनलोड करें. कुंजी बनाने का तरीका जानने के लिए, सेवा खाते की कुंजियां बनाना और उन्हें मैनेज करना लेख पढ़ें.
GOOGLE_APPLICATION_CREDENTIALS
एनवायरमेंट वैरिएबल को डाउनलोड की गई फ़ाइल के पूरे पाथ पर सेट करें:- Linux:
export GOOGLE_APPLICATION_CREDENTIALS="[YOUR_MACHINE]/path/service-account-key.json"
- Windows:
set GOOGLE_APPLICATION_CREDENTIALS=[YOUR_MACHINE]/path/service-account-key.json
- Google Cloud Marketplace में समाधान का सैंपल देखने के लिए, Producer Portal पर जाएं. इसके बाद, Codelabs पैनल में जाकर Codelab product पर क्लिक करें. इस समाधान को सीधे तौर पर https://console.cloud.google.com/marketplace/product/DEMO-YOUR_PROJECT_ID/isaas-codelab पर भी ऐक्सेस किया जा सकता है
- Google Cloud Console में, अपने नए प्रोजेक्ट में Partner Procurement API चालू करें.
इसके बाद, सैंपल समाधान के लिए बैकएंड सेट अप करें.
3. Google Cloud Marketplace के साथ इंटिग्रेट करना
बड़े लेवल पर, सैंपल समाधान को Google Cloud Marketplace के साथ इन तरीकों से इंटिग्रेट किया जा सकता है:
- Google Cloud Marketplace से सूचनाएं पाने के लिए, Cloud Pub/Sub के साथ इंटिग्रेट करें. जैसे, जब कोई उपयोगकर्ता आपके समाधान के लिए साइन अप करता है. आपका पार्टनर इंजीनियर, Cloud Pub/Sub का एक विषय बनाता है. सूचनाएं पाने के लिए, आपको इसकी सदस्यता लेनी होगी.
- नए ग्राहकों के लिए खाते बनाने के लिए, Partner Procurement API के साथ इंटिग्रेट करें. जब उपयोगकर्ता सदस्यता प्लान चुनते हैं, बदलते हैं या रद्द करते हैं, तब खातों को अपडेट करने के लिए Partner Procurement API का इस्तेमाल किया जाता है. एपीआई के साथ इंटिग्रेट करने के लिए, आपको अपनी क्लाइंट लाइब्रेरी बनानी होगी.
- इस्तेमाल की जानकारी देने के लिए, Google सेवा नियंत्रण के साथ इंटिग्रेट करें.
4. Cloud Pub/Sub विषय की सदस्यता लेना
जब कोई उपयोगकर्ता सदस्यता प्लान चुनता है, तो आपको Cloud Pub/Sub विषय के ज़रिए Google Cloud Marketplace से सूचना मिलती है.
Cloud Pub/Sub विषय पर मैसेज सुनने के लिए, आपको सबसे पहले सदस्यता बनानी होगी.
सदस्यता बनाने के लिए, create_subscription.py
स्क्रिप्ट का इस्तेमाल करें:
cd gcp-marketplace-integrated-saas/tools python create_subscription.py
सदस्यता देखने के लिए, Cloud Console में Cloud Pub/Sub डैशबोर्ड खोलें:
https://console.cloud.google.com/cloudpubsub/subscriptions
सदस्यता के लिए अनुरोध करने की सुविधा को आज़माएं
उपयोगकर्ता के तौर पर इस सैंपल ऐप्लिकेशन को टेस्ट करने के लिए, Marketplace में codelab प्रॉडक्ट खोलें. इसके लिए, https://console.cloud.google.com/marketplace/product/DEMO-YOUR_PROJECT_ID/isaas-codelab पर जाएं. पक्का करें कि आपने अपना कोडलैब प्रोजेक्ट चुना हो. इसके बाद, सदस्यता प्लान चुनें.
कोई प्लान चुनने पर भेजे गए Cloud Pub/Sub मैसेज देखने के लिए, रिपॉज़िटरी में python3
डायरेक्ट्री के रूट पर जाएं और यह कमांड चलाएं:
~/gcp-marketplace-integrated-saas/python3$ python -m impl.step_1_pubsub.app
Cloud Pub/Sub मैसेज सुनने वाले सैंपल कोड को देखने के लिए, https://github.com/googlecodelabs/gcp-marketplace-integrated-saas/blob/master/python3/impl/step_1_pubsub/app.py पर जाएं.
Cloud Pub/Sub मैसेज में, eventType
फ़ील्ड से पता चलता है कि मैसेज क्यों भेजा गया था. कोई प्लान चुनने पर, आपको eventType: ENTITLEMENT_CREATION_REQUESTED
का मैसेज दिखेगा. यह आपके चुने गए पिछले सदस्यता प्लान को दिखाता है.
अगर स्क्रिप्ट चालू रहने के दौरान प्लान रद्द किया जाता है, तो आपको eventType: ENTITLEMENT_CANCELLED
के लिए एक नया मैसेज दिखेगा.
ध्यान दें कि ऊपर दिए गए सैंपल में, मैसेज को स्वीकार नहीं किया गया है. इससे आपको हर बार ऐप्लिकेशन चलाने पर एक ही मैसेज मिलता है. इससे आपको टेस्टिंग करने में आसानी होती है.
स्क्रिप्ट बंद करने के लिए, CTRL + \
दबाएं.
5. खाते के अनुरोध को स्वीकार करना
अब आपको Google Cloud Marketplace से मैसेज मिल सकते हैं. इसलिए, आपको उन संसाधनों को मैनेज करना होगा जिन्हें Google Cloud Marketplace Procurement सेवा, खरीदार की ओर से बनाती है.
पहला खाता संसाधन है. खाता, ग्राहक के आपके प्रॉडक्ट से कनेक्शन को दिखाता है. आपको ग्राहक के Procurement खाते का आईडी अपने डेटाबेस में सेव करना होगा, ताकि उनके Google खाते और आपकी सेवा के लिए बनाए गए खाते के बीच संबंध को मैप किया जा सके.
जब कोई ग्राहक कोई प्लान चुनता है, तो Google Cloud Marketplace, Cloud Pub/Sub को एक सूचना भेजता है. इसमें बताया जाता है कि ग्राहक खाते का अनुरोध कर रहा है. आपके ऐप्लिकेशन को अनुरोध स्वीकार करना होगा. इस कोडलैब में, Cloud Pub/Sub से मैसेज मिलने पर, खाते के अनुरोधों को स्वीकार किया जाता है.
खाते की जानकारी के लिए डेटाबेस बनाना
इस कोडलैब के लिए, हम एक सामान्य JSON डेटाबेस का इस्तेमाल करते हैं. यह डेटाबेस, ग्राहक खातों और खरीदारी को ट्रैक कर सकता है.
इस सैंपल को आज़माने के लिए, अपने वर्कस्टेशन पर किसी भी जगह पर एक फ़ाइल बनाएं. इसमें एक खाली JSON ऑब्जेक्ट हो:
{}
PROCUREMENT_CODELAB_DATABASE
एनवायरमेंट वैरिएबल को इस फ़ाइल के पूरे पाथ पर सेट करें:
- Linux:
export PROCUREMENT_CODELAB_DATABASE="YOUR_MACHINE/path/EMPTY_JSON_OBJECT.json"
- Windows:
set PROCUREMENT_CODELAB_DATABASE=YOUR_MACHINE/path/EMPTY_JSON_OBJECT.json
डेटाबेस को पढ़ने और उसमें बदलाव करने वाला मॉड्यूल, python3/impl/database
में है.
सैंपल के तौर पर लागू किए गए इस तरीके में, एक ऐसे स्कीमा का इस्तेमाल किया गया है जिसे बढ़ाया जा सकता है. ऐसा तब किया जा सकता है, जब Google Cloud Marketplace के साथ एक से ज़्यादा प्रॉडक्ट ऑफ़रिंग इंटिग्रेट की जा रही हों. यहां एक ऐसे उपयोगकर्ता के लिए डेटाबेस एंट्री का उदाहरण दिया गया है जिसने सैंपल ऐप्लिकेशन में Very Good प्लान की सदस्यता ली है:
{
"a2b3c4d5-b3f1-4dea-b134-generated_id":{
"procurement_account_id":"generated-b3f1-4dea-b134-4a1d100c0335",
"internal_account_id":"generated-45b7-4f4d-1bcd-2abb114f77de",
"products":{
"isaas-codelab":{
"start_time":"2019-01-04T01:21:16.188Z",
"plan_id":"very-good",
"product_id":"isaas-codelab",
"consumer_id":"project_number:123123345345"
}
}
}
}
आखिरी चरण में, आपको अपने ऐप्लिकेशन को अपने डेटाबेस से कनेक्ट करना होगा. इससे, ग्राहकों के Google Cloud Marketplace खातों को अपनी ग्राहक संसाधनों से लिंक किया जा सकेगा.
खाते को मंज़ूरी देना
खाते के अनुरोध को स्वीकार करने के लिए, यह कमांड चलाएं:
~/gcp-marketplace-integrated-saas/python3$ python3 -m impl.step_2_account.app
खाते को मंज़ूरी देने के लिए सैंपल कोड, impl/step_2_account में मौजूद है.
सैंपल के तौर पर लागू किए गए इस कोड में, Procurement
क्लास का इस्तेमाल किया गया है. यह Procurement API के साथ इंटरैक्शन को मैनेज करती है. इसके get_account()
और approve_account()
तरीके यहां दिए गए हैं:
def _get_account_name(self, account_id):
return 'providers/DEMO-{}/accounts/{}'.format(PROJECT_ID,
account_id)
def get_account(self, account_id):
"""Gets an account from the Procurement Service."""
name = self._get_account_name(account_id)
request = self.service.providers().accounts().get(name=name)
try:
response = request.execute()
return response
except HttpError as err:
if err.resp.status == 404:
return None
def approve_account(self, account_id):
"""Approves the account in the Procurement Service."""
name = self._get_account_name(account_id)
request = self.service.providers().accounts().approve(
name=name, body={'approvalName': 'signup'})
request.execute()
इस कोडलैब के लिए, खरीद सेवा में सेवा देने वाली कंपनी का आईडी DEMO-
YOUR_PROJECT_ID
है. यहां YOUR_PROJECT_ID
वह प्रोजेक्ट है जिसे आपने बनाया है. Procurement API के साथ इंटरैक्ट करते समय, खाते के नाम का फ़ॉर्मैट यह होना चाहिए:
providers/DEMO-YOUR_PROJECT_ID/accounts/account-id
इसके बाद, आपको एनटाइटलमेंट को मंज़ूरी देनी होगी. यह ग्राहक की खरीदारी का रिकॉर्ड होता है.
6. एनटाइटलमेंट को मंज़ूरी देना
जब कोई ग्राहक Google Cloud Marketplace में सदस्यता प्लान चुनता है, तो एक खाता बनाया जाता है. इसके बाद, तुरंत एनटाइटलमेंट का नया अनुरोध बनाया जाता है. एनटाइटलमेंट, किसी सेवा की खरीदारी को दिखाता है. ग्राहक को सेवा का इस्तेमाल करने की अनुमति देने से पहले, आपको एनटाइटलमेंट के अनुरोध को स्वीकार करना होगा. इसके बाद, ग्राहक के लिए सेवा सेट अप करनी होगी, ताकि वह इसका इस्तेमाल शुरू कर सके.
जब सैंपल ऐप्लिकेशन को eventType
ENTITLEMENT_CREATION_REQUESTED
के साथ Cloud Pub/Sub मैसेज मिलता है, तो एनटाइटलमेंट को मंज़ूरी मिल जाती है. इसके बाद, ऐप्लिकेशन को ENTITLEMENT_ACTIVE
मैसेज का इंतज़ार करना होता है, ताकि डेटाबेस में एनटाइटलमेंट रिकॉर्ड किया जा सके. इसके बाद, ग्राहक के लिए संसाधन सेट अप किए जाते हैं.
एनटाइटलमेंट बनाने के लिए, यह कमांड चलाएं:
~/gcp-marketplace-integrated-saas/python3$ python3 -m impl.step_3_entitlement_create.app
एनटाइटलमेंट को मंज़ूरी देने का कोड, सैंपल लागू करने में दिया गया है.
इसके बाद, आपको उन स्थितियों को मैनेज करना होगा जिनमें कोई खरीदार, सदस्यता प्लान में बदलाव करने का अनुरोध करता है.
7. किसी एनटाइटलमेंट में किए गए बदलावों को स्वीकार करना
अगर आपकी सेवा के लिए कई प्लान उपलब्ध हैं, तो आपको उन ग्राहकों के अनुरोधों को मैनेज करना होगा जो अपने मौजूदा प्लान को अपग्रेड या डाउनग्रेड करना चाहते हैं.
अगर आपकी सेवा के लिए सिर्फ़ एक प्लान उपलब्ध है, तो रद्द की गई खरीदारी मैनेज करें पर जाएं.
किसी एनटाइटलमेंट के पहली बार चालू होने और प्लान बदलने के बाद चालू होने में कोई तकनीकी अंतर नहीं होता. इस वजह से, सैंपल लागू करने के लिए, दोनों मामलों में handleActiveEntitlement()
का एक ही तरीका इस्तेमाल किया जाता है. यह तरीका, एनटाइटलमेंट से जुड़े इवेंट के लिए आने वाले मैसेज की जांच करता है:
step_4_entitlement_change/app.py
def handleActiveEntitlement(self, entitlement, customer, accountId):
"""Updates the database to match the active entitlement."""
product = {
'product_id': entitlement['product'],
'plan_id': entitlement['plan'],
}
if 'consumerId' in entitlement:
product['consumer_id'] = entitlement['consumerId']
customer['products'][entitlement['product']] = product
self.db.write(accountId, customer)
यहां दिए गए स्निपेट से पता चलता है कि eventType
, ENTITLEMENT_PLAN_CHANGE_REQUESTED
है या ENTITLEMENT_PLAN_CHANGED
:
step_4_entitlement_change/app.py
elif eventType == 'ENTITLEMENT_PLAN_CHANGE_REQUESTED':
if state == 'ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL':
# Don't write anything to our database until the entitlement becomes
# active within the Procurement Service.
self.approveEntitlementPlanChange(id, entitlement['newPendingPlan'])
return True
elif eventType == 'ENTITLEMENT_PLAN_CHANGED':
if state == 'ENTITLEMENT_ACTIVE':
# Handle an active entitlement after a plan change.
self.handleActiveEntitlement(entitlement, customer, accountId)
return True
आखिरी चरण में, जब एनटाइटलमेंट ENTITLEMENT_ACTIVE
स्थिति में वापस आ जाता है, तो आपकी लिसनर विधि को अपने डेटाबेस को अपडेट करना चाहिए, ताकि बदलाव दिख सके. साथ ही, ज़रूरी प्रावधान करने चाहिए.
आपने अपने प्रॉडक्ट को पार्टनर इंजीनियर के साथ कैसे सेट अप किया है, इसके आधार पर हो सकता है कि आपकी सेवा, बिलिंग साइकल के खत्म होने तक सदस्यता को डाउनग्रेड या रद्द करने की अनुमति न दे. ऐसे मामलों में, प्लान बदलने का अनुरोध मंज़ूरी मिलने के बाद भी 'मंज़ूरी बाकी है' स्थिति में रहेगा. हालांकि, प्लान बदलने की प्रोसेस पूरी होने तक, एनटाइटलमेंट ENTITLEMENT_ACTIVE
स्थिति में वापस नहीं जाएगा.
एनटाइटलमेंट में हुए बदलावों की जांच करने और उन्हें स्वीकार करने वाले कोड के लिए, सैंपल लागू करने का तरीका देखें.
इसके बाद, आपको उन स्थितियों को मैनेज करना होगा जिनमें खरीदार अपनी खरीदारी रद्द करते हैं.
8. रद्द की गई खरीदारी मैनेज करना
खरीदार, अपनी खरीदारी रद्द कर सकते हैं. आपने अपने पार्टनर इंजीनियर के साथ मिलकर, प्रॉडक्ट को जिस तरह से सेट अप किया है उसके हिसाब से, सदस्यता रद्द करने का अनुरोध तुरंत लागू हो सकता है या बिलिंग साइकल के खत्म होने पर लागू हो सकता है.
जब कोई खरीदार अपनी खरीदारी रद्द करता है, तो उसे eventType
ENTITLEMENT_PENDING_CANCELLATION
वाला मैसेज भेजा जाता है. अगर आपने रद्द किए गए प्रॉडक्ट को तुरंत प्रोसेस करने के लिए सेट अप किया है, तो eventType
ENTITLEMENT_CANCELLED
वाला मैसेज तुरंत भेज दिया जाता है.
step_5_entitlement_cancel/app.py
elif eventType == 'ENTITLEMENT_CANCELLED':
# Clear out our records of the customer's plan.
if entitlement['product'] in customer['products']:
del customer['products'][entitlement['product']]
### TODO: Turn off customer's service. ###
self.db.write(accountId, customer)
return True
elif eventType == 'ENTITLEMENT_PENDING_CANCELLATION':
# Do nothing. We want to cancel once it's truly canceled. For now it's
# just set to not renew at the end of the billing cycle.
return True
elif eventType == 'ENTITLEMENT_CANCELLATION_REVERTED':
# Do nothing. The service was already active, but now it's set to renew
# automatically at the end of the billing cycle.
return True
आपकी सेवा को ENTITLEMENT_CANCELLED
के मैसेज का इंतज़ार करना होगा. इसके बाद, आपको अपने डेटाबेस से एनटाइटलमेंट हटाना होगा और ग्राहक के लिए सेवा बंद करनी होगी.
एनटाइटलमेंट रद्द होने के बाद, इसे Google के सिस्टम से मिटा दिया जाता है. साथ ही, eventType
ENTITLEMENT_DELETED
वाला मैसेज भेजा जाता है:
step_5_entitlement_cancel/app.py
elif eventType == 'ENTITLEMENT_DELETED':
# Do nothing. Entitlements can only be deleted when they are already
# cancelled, so our state is already up-to-date.
return True
एनटाइटलमेंट रद्द करने वाले कोड के लिए, सैंपल कोड देखें.
9. इस्तेमाल की जानकारी देने वाली रिपोर्ट भेजना
कुछ सेवाओं में इस्तेमाल पर आधारित कॉम्पोनेंट होते हैं. इनमें Google को यह जानना होता है कि ग्राहक ने सेवा का इस्तेमाल किस तरह किया है, ताकि उससे सही शुल्क लिया जा सके. आपकी सेवा को Google Service Control API के ज़रिए, इस्तेमाल की जानकारी देनी होगी.
अगर आपकी सेवा में इस्तेमाल के आधार पर शुल्क लेने वाले कॉम्पोनेंट नहीं हैं, तो इस सेक्शन को छोड़ दें.
इस्तेमाल की रिपोर्ट भेजने के बारे में ज़्यादा जानकारी के लिए, शामिल होने से जुड़ा दस्तावेज़ देखें.
इस्तेमाल की जानकारी देने वाली रिपोर्ट, Google Service Control API को हर घंटे भेजी जानी चाहिए. इस कोडलैब में, रिपोर्ट भेजने के लिए एक स्क्रिप्ट का इस्तेमाल किया जाता है. इसे क्रॉन जॉब के तौर पर शेड्यूल किया जा सकता है. यह स्क्रिप्ट, डेटाबेस में इस्तेमाल की रिपोर्ट के आखिरी समय को सेव करती है. साथ ही, इस्तेमाल का पता लगाने के लिए, इसे शुरुआती समय के तौर पर इस्तेमाल करती है.
यह स्क्रिप्ट, सेवा के हर चालू ग्राहक की जांच करती है. साथ ही, ग्राहक के एनटाइटलमेंट के consumer_id
फ़ील्ड का इस्तेमाल करके, Google सेवा कंट्रोल को इस्तेमाल की रिपोर्ट भेजती है. इसके बाद, स्क्रिप्ट ग्राहक के लिए डेटाबेस एंट्री को अपडेट करती है, ताकि last_report_time
को इस्तेमाल की रिपोर्ट के खत्म होने के समय पर सेट किया जा सके.
Google Service Control, दो तरीके उपलब्ध कराता है: check
और report
. पहले वाले को हमेशा दूसरे वाले को कॉल करने से ठीक पहले कॉल किया जाना चाहिए. अगर पहले वाले में कोई गड़बड़ी है, तो उसे ठीक होने तक ग्राहक की सेवा बंद कर दी जानी चाहिए.
किसी एनटाइटलमेंट के सभी इस्तेमाल का श्रेय, एक ही usageReportingId
को दिया जाता है. हालांकि, SaaS प्रॉडक्ट के लिए, यह इस्तेमाल Google Cloud Billing में [Charges not specific to a project]
लाइन आइटम से जुड़ा होता है. अगर आपके SaaS प्रॉडक्ट को किसी ग्राहक के संगठन में बड़े पैमाने पर शेयर किया जा सकता है और आपको लागत एट्रिब्यूशन की सुविधा का इस्तेमाल करना है, तो हमारा सुझाव है कि आपकी सभी सेवाओं में, इस्तेमाल की रिपोर्ट पर मौजूद userLabels
फ़ील्ड शामिल हो. operation.
Google Cloud Marketplace, cloudmarketplace.googleapis.com/resource_name और cloudmarketplace.googleapis.com/container_name लेबल कुंजियों को रिज़र्व करता है. इन लेबल का मकसद, आपकी नेटिव सेवा और संसाधन के क्रम के हिसाब से इस्तेमाल के कॉन्टेक्स्ट को कैप्चर करना है. इन संसाधनों के लिए, ग्राहक की ओर से असाइन किए गए नाम, इस्तेमाल की रिपोर्ट में लेबल वैल्यू के तौर पर शामिल किए जाएंगे. हमारा सुझाव है कि आप इन लेबल को अपनी इस्तेमाल की रिपोर्ट में डिफ़ॉल्ट रूप से शामिल करें.
लेबल की कुंजी | लेबल की वैल्यू | ब्यौरा |
cloudmarketplace.googleapis.com/resource_name | RESOURCE_NAME | इस्तेमाल की मेट्रिक से जुड़े संसाधन का नाम. |
cloudmarketplace.googleapis.com/container_name | CONTAINER_NAME | संसाधन कंटेनर का नाम. |
यहां दिया गया स्निपेट, डेमो ऐप्लिकेशन के इस्तेमाल की जानकारी देता है. साथ ही, SaaS प्रॉडक्ट के इस्तेमाल का श्रेय, ग्राहक की ओर से असाइन किए गए products_db
नाम के संसाधन को देता है. इस कोडलैब के लिए, service_name
isaas-codelab.mp-marketplace-partner-demos.appspot.com
है.
operation = {
'operationId': '<UUID>',
'operationName': 'Codelab Usage Report',
'consumerId': 'project_number:<Project Number>',
'startTime': '<Timestamp>',
'endTime': '<Timestamp>',
'metricValues': [{
'int64Value': 100,
}],
'userLabels': {
'cloudmarketplace.googleapis.com/container_name': 'saas-storage-solutions',
'cloudmarketplace.googleapis.com/resource_name': 'products_db'
}
}
service.services().report(
serviceName=service_name, body={
'operations': [operation]
}).execute()
product['last_report_time'] = end_time
database.write(customer_id, customer)
पूरे कोड के लिए, इस स्क्रिप्ट का सैंपल लागू करने का तरीका देखें. इस्तेमाल की सैंपल रिपोर्ट बनाने के लिए, यह कमांड चलाएं:
~/gcp-marketplace-integrated-saas/python3$ python3 -m impl.step_6_usage_reporting.report isaas-codelab.mp-marketplace-partner-demos.appspot.com
10. बधाई हो!
आपने यह जाना कि ग्राहक खातों और एनटाइटलमेंट को मैनेज करने के लिए, आपके SaaS समाधान को Google Cloud Marketplace के साथ कैसे इंटिग्रेट किया जा सकता है. साथ ही, किसी सेवा के इस्तेमाल की जानकारी कैसे दी जा सकती है. इंटिग्रेशन की पूरी जानकारी पाने के लिए, बैकएंड इंटिग्रेशन से जुड़ा दस्तावेज़ देखें.
व्यवस्थित करें
अगर आपको इनका इस्तेमाल नहीं करना है, तो इन संसाधनों को मिटाएं:
- Cloud Pub/Sub की सदस्यता
- सेवा खाता और उसकी कुंजियां
- इसके अलावा, आपके पास वह प्रोजेक्ट चुनने का विकल्प भी होता है जिसे आपने बनाया है
- वैकल्पिक तौर पर, वह बिलिंग खाता जिसे आपने बनाया है
आगे क्या करना है
अपने फ़्रंटएंड को इंटिग्रेट करना
इस कोडलैब में दिए गए सैंपल, खातों और एनटाइटलमेंट को अपने-आप मंज़ूरी दे देते हैं. असल में, आपके खरीदारों को उस साइन-अप पेज पर रीडायरेक्ट किया जाना चाहिए जिसे आपने बनाया है. इस पेज पर, वे आपके सिस्टम में खाते बना सकते हैं. साइन अप करने के बाद, आपको उनके खातों और एनटाइटलमेंट को मंज़ूरी देने के लिए, एपीआई अनुरोध करने होंगे.
अपने ऐप्लिकेशन के फ़्रंटएंड को इंटिग्रेट करने के बारे में जानकारी के लिए, Google Cloud Marketplace का दस्तावेज़ देखें.
SaaS समाधान उपलब्ध कराने के बारे में ज़्यादा जानें
Google Cloud Marketplace पर SaaS समाधान ऑफ़र करने की खास जानकारी के लिए, SaaS समाधान ऑफ़र करना लेख पढ़ें.