SaaS 產品整合的程式碼範例 - AWS Marketplace

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

SaaS 產品整合的程式碼範例

您可以使用下列程式碼範例,將軟體即服務 (SaaS產品與 AWS Marketplace APIs發佈和維護產品所需的 整合。如需詳細資訊,請參閱下列區段。

ResolveCustomer 程式碼範例

下列程式碼範例適用於所有定價模型。Python 範例會交換 CustomerIdentifierProductCode和 的x-amzn-marketplace-token權杖CustomerAWSAccountIdCustomerAWSAccountId 是與訂閱相關聯的 AWS 帳戶 ID。當您從 重新導向至註冊網站上的應用程式時,此程式碼會在該處執行 AWS Marketplace 管理入口網站。重新導向是包含權杖的POST請求。

如需 的詳細資訊ResolveCustomer,請參閱 計量服務參考 ResolveCustomer中的 。 AWS Marketplace API

# Import AWS Python SDK and urllib.parse import boto3 import urllib.parse as urlparse # Resolving Customer Registration Token formFields = urlparse.parse_qs(postBody) regToken = formFields['x-amzn-marketplace-token'][0] # If regToken present in POST request, exchange for customerID if (regToken): marketplaceClient = boto3.client('meteringmarketplace') customerData = marketplaceClient.resolve_customer(RegistrationToken=regToken) productCode = customerData['ProductCode'] customerID = customerData['CustomerIdentifier'] customerAWSAccountId = customerData['CustomerAWSAccountId'] # TODO: Store customer information # TODO: Validate no other accounts share the same customerID

回應範例

{ 'CustomerIdentifier': 'string', 'CustomerAWSAccountId':'string', 'ProductCode': 'string' }

GetEntitlement 程式碼範例

下列程式碼範例適用於具有 合約的 SaaS 產品,以及具有耗用定價模型的 SaaS 合約。Python 範例會驗證客戶是否具有作用中的權限。

如需 的詳細資訊GetEntitlement,請參閱 權限服務參考 GetEntitlement 中的 。 AWS Marketplace API

# Import AWS Python SDK import boto3 marketplaceClient = boto3.client('marketplace-entitlement', region_name='us-east-1') # Filter entitlements for a specific customerID # # productCode is supplied after the AWS Marketplace Ops team has published # the product to limited # # customerID is obtained from the ResolveCustomer response entitlement = marketplaceClient.get_entitlements({ 'ProductCode': 'productCode', 'Filter' : { 'CUSTOMER_IDENTIFIER': [ 'customerID', ] }, 'NextToken' : 'string', 'MaxResults': 123 }) # TODO: Verify the dimension a customer is subscribed to and the quantity, # if applicable

回應範例

傳回的值對應於您在 中建立產品時建立的維度 AWS Marketplace 管理入口網站。

{ "Entitlements": [ { "CustomerIdentifier": "string", "Dimension": "string", "ExpirationDate": number, "ProductCode": "string", "Value": { "BooleanValue": boolean, "DoubleValue": number, "IntegerValue": number, "StringValue": "string" } } ], "NextToken": "string" }

BatchMeterUsage 程式碼範例

下列程式碼範例與 SaaS 訂閱和具有消耗定價模型的合約相關,但不適用於沒有消耗的 SaaS 合約產品。Python 範例會將計量記錄傳送至 AWS Marketplace ,以向客戶收取 pay-as-you-go費用。

# NOTE: Your application will need to aggregate usage for the # customer for the hour and set the quantity as seen below. # AWS Marketplace can only accept records for up to an hour in the past. # # productCode is supplied after the AWS Marketplace Ops team has # published the product to limited # # customerID is obtained from the ResolveCustomer response # Import AWS Python SDK import boto3 usageRecord = [ { 'Timestamp': datetime(2015, 1, 1), 'CustomerIdentifier': 'customerID', 'Dimension': 'string', 'Quantity': 123 } ] marketplaceClient = boto3.client('meteringmarketplace') response = marketplaceClient.batch_meter_usage(usageRecord, productCode)

如需 的詳細資訊BatchMeterUsage,請參閱 計量服務參考 BatchMeterUsage中的 。 AWS Marketplace API

回應範例

{ 'Results': [ { 'UsageRecord': { 'Timestamp': datetime(2015, 1, 1), 'CustomerIdentifier': 'string', 'Dimension': 'string', 'Quantity': 123 }, 'MeteringRecordId': 'string', 'Status': 'Success' | 'CustomerNotSubscribed' | 'DuplicateRecord' }, ], 'UnprocessedRecords': [ { 'Timestamp': datetime(2015, 1, 1), 'CustomerIdentifier': 'string', 'Dimension': 'string', 'Quantity': 123 } ] }

BatchMeterUsage 使用用量配置標記程式碼範例 (選用)

下列程式碼範例與 SaaS 訂閱和具有消耗定價模型的合約相關,但不適用於沒有消耗的 SaaS 合約產品。Python 範例會傳送具有適當用量分配標籤的 pay-as-you-go計量記錄給 AWS Marketplace ,以向客戶收取費用。

# NOTE: Your application will need to aggregate usage for the # customer for the hour and set the quantity as seen below. # AWS Marketplace can only accept records for up to an hour in the past. # # productCode is supplied after the AWS Marketplace Ops team has # published the product to limited # # customerID is obtained from the ResolveCustomer response # Import AWS Python SDK import boto3 import time usageRecords = [ { "Timestamp": int(time.time()), "CustomerIdentifier": "customerID", "Dimension": "Dimension1", "Quantity":3, "UsageAllocations": [ { "AllocatedUsageQuantity": 2, "Tags": [ { "Key": "BusinessUnit", "Value": "IT" }, { "Key": "AccountId", "Value": "123456789" }, ] }, { "AllocatedUsageQuantity": 1, "Tags": [ { "Key": "BusinessUnit", "Value": "Finance" }, { "Key": "AccountId", "Value": "987654321" }, ] }, ] } ] marketplaceClient = boto3.client('meteringmarketplace') response = marketplaceClient.batch_meter_usage(UsageRecords=usageRecords, ProductCode="testProduct")

如需 的詳細資訊BatchMeterUsage,請參閱 參考 BatchMeterUsage中的 。 AWS Marketplace Metering Service API

回應範例

{ "Results": [ { "Timestamp": "1634691015", "CustomerIdentifier": "customerID", "Dimension": "Dimension1", "Quantity":3, "UsageAllocations": [ { "AllocatedUsageQuantity": 2, "Tags": [ { "Key": "BusinessUnit", "Value": "IT" }, { "Key": "AccountId", "Value": "123456789" }, ] }, { "AllocatedUsageQuantity": 1, "Tags": [ { "Key": "BusinessUnit", "Value": "Finance" }, { "Key": "AccountId", "Value": "987654321" }, ] }, ] }, "MeteringRecordId": "8fjef98ejf", "Status": "Success" }, ], "UnprocessedRecords": [ { "Timestamp": "1634691015", "CustomerIdentifier": "customerID", "Dimension": "Dimension1", "Quantity":3, "UsageAllocations": [] } ] }