1. บทนำ
โซลูชัน SaaS ใน Google Cloud Marketplace คือโซลูชันซอฟต์แวร์ที่ทำงานบนโครงสร้างพื้นฐานโดยไม่คำนึงถึงสถานที่ตั้ง แต่เรียกเก็บเงินโดย Google
ใน Codelab นี้ คุณจะได้ตั้งค่าโซลูชัน SaaS ขั้นพื้นฐานที่ผสานรวมกับ Google Cloud Marketplace เพื่อทำสิ่งต่อไปนี้
- รับการแจ้งเตือนเมื่อผู้ใช้ลงชื่อสมัครใช้โซลูชันตัวอย่าง
- อนุมัติลูกค้าที่ต้องการลงชื่อสมัครใช้ และเพิ่มลูกค้าลงในฐานข้อมูล
- จัดการสถานการณ์ที่ลูกค้าต้องการเปลี่ยนหรือยกเลิกแพ็กเกจการเรียกเก็บเงิน
- ส่งรายงานการใช้งานไปยัง Google
Codelab นี้จะช่วยให้คุณคุ้นเคยกับ API การจัดซื้อจัดจ้างและการควบคุมบริการของ Google Cloud Marketplace โปรดทราบว่าคู่มือนี้ไม่ได้ให้สภาพแวดล้อมผลิตภัณฑ์เต็มรูปแบบสำหรับการทดสอบ
2. ก่อนเริ่มต้น
- ใช้พอร์ทัลผู้ผลิตเพื่อเปิดใช้ Codelab สำหรับโปรเจ็กต์ของคุณ หากยังไม่ได้เปิดใช้
ลิงก์โดยตรงไปยัง Producer Portal คือ
https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
หากต้องการเปิดใช้ Codelab ให้คลิกเปิดใช้ในแผง Codelab ทางด้านขวาของหน้าจอ
- ติดตั้ง Python 3 ในเครื่องของคุณพร้อมโมดูลต่อไปนี้
- Python Google Client APIs
google-cloud-pubsub
ไลบรารีของไคลเอ็นต์
หากต้องการติดตั้งโมดูล Python ให้ใช้คำสั่งต่อไปนี้
pip install --upgrade google-api-python-client google-cloud-pubsub
- โคลนหรือดาวน์โหลดที่เก็บ GitHub สำหรับ Codelab นี้โดยใช้คำสั่งต่อไปนี้
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
- มอบบทบาทผู้แก้ไข Pub/Sub ให้กับบัญชีบริการ
saas-codelab
ดูขั้นตอนการให้และจัดการบทบาทได้ที่การให้ เปลี่ยน และเพิกถอนสิทธิ์เข้าถึงทรัพยากร - สร้างและดาวน์โหลดคีย์ 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 ให้ไปที่พอร์ทัลผู้ผลิต แล้วคลิกผลิตภัณฑ์ Codelab ในแผง Codelab นอกจากนี้ คุณยังเข้าถึงโซลูชันได้โดยตรงที่ 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 ได้ด้วยวิธีต่อไปนี้
- ผสานรวมกับ Cloud Pub/Sub เพื่อรับการแจ้งเตือนจาก Google Cloud Marketplace เช่น เมื่อผู้ใช้ลงชื่อสมัครใช้โซลูชันของคุณ วิศวกรพาร์ทเนอร์จะสร้างหัวข้อ Cloud Pub/Sub ที่คุณต้องสมัครใช้บริการเพื่อรับการแจ้งเตือน
- ผสานรวมกับ Partner Procurement API เพื่อสร้างบัญชีสำหรับลูกค้าใหม่ คุณใช้ Partner Procurement API เพื่ออัปเดตบัญชีเมื่อผู้ใช้เลือก เปลี่ยน หรือยกเลิกแพ็กเกจการสมัครใช้บริการ หากต้องการผสานรวมกับ API คุณจะต้องสร้างไลบรารีไคลเอ็นต์ของคุณเอง
- ผสานรวมกับ Service Control ของ Google เพื่อรายงานข้อมูลการใช้งาน
4. สมัครรับข้อมูลหัวข้อ Cloud Pub/Sub
เมื่อผู้ใช้เลือกแพ็กเกจการสมัครใช้บริการ คุณจะได้รับการแจ้งเตือนจาก Google Cloud Marketplace ผ่านหัวข้อ Cloud Pub/Sub
หากต้องการฟังข้อความในหัวข้อ Cloud Pub/Sub คุณต้องสร้างการสมัครใช้บริการก่อน
หากต้องการสร้างการสมัครใช้บริการ ให้ใช้สคริปต์ create_subscription.py
cd gcp-marketplace-integrated-saas/tools python create_subscription.py
หากต้องการดูการสมัครใช้บริการ ให้เปิดแดชบอร์ด Cloud Pub/Sub ใน Cloud Console โดยทำดังนี้
https://console.cloud.google.com/cloudpubsub/subscriptions
ลองส่งคำขอสมัครใช้บริการทดสอบ
หากต้องการทดสอบแอปตัวอย่างนี้ในฐานะผู้ใช้ ให้เปิดผลิตภัณฑ์ Codelab ใน Marketplace โดยไปที่ https://console.cloud.google.com/marketplace/product/DEMO-YOUR_PROJECT_ID/isaas-codelab ตรวจสอบว่าคุณได้เลือกโปรเจ็กต์ 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 สร้างในนามของลูกค้า
รายการแรกคือทรัพยากรบัญชี บัญชีแสดงถึงการเชื่อมต่อของลูกค้ากับผลิตภัณฑ์ของคุณ คุณต้องจัดเก็บรหัสบัญชีการจัดซื้อของลูกค้าไว้ในฐานข้อมูลเพื่อเชื่อมโยงความสัมพันธ์ระหว่างบัญชี 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
การติดตั้งใช้งานตัวอย่างใช้สคีมาที่ขยายได้หากคุณผสานรวมข้อเสนอผลิตภัณฑ์มากกว่า 1 รายการกับ 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()
สำหรับ Codelab นี้ ในบริการจัดซื้อจัดจ้าง รหัสผู้ให้บริการคือ DEMO-
YOUR_PROJECT_ID
โดย YOUR_PROJECT_ID
คือโปรเจ็กต์ที่คุณสร้างขึ้น ขณะโต้ตอบกับ Procurement API ชื่อบัญชีต้องใช้รูปแบบต่อไปนี้
providers/DEMO-YOUR_PROJECT_ID/accounts/account-id
จากนั้นอนุมัติการให้สิทธิ์ ซึ่งเป็นบันทึกการซื้อของลูกค้า
6. อนุมัติการให้สิทธิ์
เมื่อลูกค้าเลือกแพ็กเกจการสมัครใช้บริการใน Google Cloud Marketplace ระบบจะสร้างบัญชี จากนั้นจะสร้างคำขอสิทธิ์ใหม่ทันที การให้สิทธิ์แสดงถึงการซื้อบริการ ก่อนที่ลูกค้าจะเริ่มใช้บริการได้ คุณต้องอนุมัติคำขอสิทธิ์ แล้วตั้งค่าบริการเพื่อให้ลูกค้าเริ่มใช้งานได้
เมื่อแอปตัวอย่างได้รับข้อความ Cloud Pub/Sub ที่มี eventType
ENTITLEMENT_CREATION_REQUESTED
ระบบจะอนุมัติสิทธิ์ และแอปต้องรอข้อความ ENTITLEMENT_ACTIVE
เพื่อบันทึกสิทธิ์ในฐานข้อมูล จากนั้นตั้งค่าทรัพยากรสำหรับลูกค้า
หากต้องการสร้างสิทธิ์ ให้เรียกใช้คำสั่งต่อไปนี้
~/gcp-marketplace-integrated-saas/python3$ python3 -m impl.step_3_entitlement_create.app
โค้ดเพื่ออนุมัติสิทธิ์อยู่ในการติดตั้งใช้งานตัวอย่าง
จากนั้นคุณจะจัดการกับกรณีที่ลูกค้าขอเปลี่ยนแพ็กเกจการสมัครใช้บริการ
7. อนุมัติการเปลี่ยนแปลงสิทธิ์
หากบริการมีหลายแพ็กเกจ คุณต้องจัดการคำขอจากลูกค้าที่อาจต้องการอัปเกรดหรือดาวน์เกรดแพ็กเกจที่มีอยู่
หากบริการมีแพ็กเกจเดียว ให้ข้ามไปที่จัดการการซื้อที่ยกเลิกแล้ว
การเปิดใช้งานสิทธิ์เป็นครั้งแรกและการเปิดใช้งานหลังจากเปลี่ยนแพ็กเกจไม่มีความแตกต่างกันในทางเทคนิค ด้วยเหตุนี้ การติดตั้งใช้งานตัวอย่างจึงมีเมธอด handleActiveEntitlement()
ที่ใช้ร่วมกันสำหรับทั้ง 2 กรณี วิธีนี้จะตรวจสอบข้อความขาเข้าเพื่อหาเหตุการณ์ที่เกี่ยวข้องกับการให้สิทธิ์ ดังนี้
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
วิธีการ Listener ควรจะอัปเดตฐานข้อมูลเพื่อให้สอดคล้องกับการเปลี่ยนแปลงและทำการจัดสรรที่จำเป็น
บริการของคุณอาจไม่อนุญาตให้ดาวน์เกรดหรือยกเลิกจนกว่าจะสิ้นสุดรอบการเรียกเก็บเงิน ทั้งนี้ขึ้นอยู่กับวิธีที่คุณตั้งค่าผลิตภัณฑ์กับวิศวกรพาร์ทเนอร์ ในกรณีดังกล่าว การเปลี่ยนแพ็กเกจจะยังคงอยู่ในสถานะรอดำเนินการแม้หลังจากได้รับการอนุมัติแล้ว แต่สิทธิ์จะไม่กลับไปอยู่ในสถานะ 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 ทุกชั่วโมง ใน Codelab นี้ ระบบจะส่งรายงานโดยใช้สคริปต์ที่คุณตั้งเวลาเป็นงาน Cron ได้ สคริปต์จะจัดเก็บเวลาของรายงานการใช้งานล่าสุดในฐานข้อมูล และใช้เวลาดังกล่าวเป็นเวลาเริ่มต้นในการวัดการใช้งาน
สคริปต์จะตรวจสอบลูกค้าที่ใช้งานอยู่แต่ละรายของบริการ และส่งรายงานการใช้งานไปยังการควบคุมบริการของ Google โดยใช้ฟิลด์ consumer_id
ของสิทธิ์ของลูกค้า จากนั้นสคริปต์จะอัปเดตรายการฐานข้อมูลของลูกค้าให้มี last_report_time
ตั้งค่าเป็นเวลาสิ้นสุดของรายงานการใช้งานที่เพิ่งส่ง
การควบคุมบริการของ Google แสดงเมธอด 2 รายการ ได้แก่ check
และ report
โดยควรเรียกใช้ฟังก์ชันแรกก่อนฟังก์ชันที่สองเสมอ หากอดีตมีข้อผิดพลาดใดๆ ระบบควรปิดใช้บริการของลูกค้าจนกว่าจะแก้ไขได้
การใช้งานทั้งหมดสำหรับสิทธิ์ที่กำหนดจะถือว่ามาจาก usageReportingId
รายการเดียว อย่างไรก็ตาม สำหรับผลิตภัณฑ์ SaaS การใช้งานนี้จะเชื่อมโยงกับรายการบรรทัด [Charges not specific to a project]
ในการเรียกเก็บเงินของ Google Cloud หากผลิตภัณฑ์ 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
สำหรับ Codelab นี้ 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
- บัญชีบริการและคีย์ของบัญชี
- (ไม่บังคับ) โปรเจ็กต์ที่คุณสร้าง
- บัญชีสำหรับการเรียกเก็บเงินที่คุณสร้าง (ไม่บังคับ)
ขั้นตอนถัดไป
ผสานรวมฟรอนท์เอนด์
ตัวอย่างใน Codelab นี้จะอนุมัติบัญชีและสิทธิ์โดยอัตโนมัติ ในทางปฏิบัติ คุณต้องนำลูกค้าไปยังหน้าลงชื่อสมัครใช้ที่คุณสร้าง ซึ่งลูกค้าจะสร้างบัญชีในระบบของคุณได้ หลังจากที่ผู้ใช้ลงชื่อสมัครใช้เรียบร้อยแล้ว คุณต้องส่งคำขอ API เพื่ออนุมัติบัญชีและสิทธิ์ของผู้ใช้
ดูข้อมูลเกี่ยวกับการผสานรวมฟรอนท์เอนด์ของแอปได้ในเอกสารประกอบของ Google Cloud Marketplace
ดูข้อมูลเพิ่มเติมเกี่ยวกับการให้บริการโซลูชัน SaaS
ดูภาพรวมของการให้บริการโซลูชัน SaaS ใน Google Cloud Marketplace ได้ที่การให้บริการโซลูชัน SaaS