View a markdown version of this page

Codebeispiele für die SaaS-Produktintegration - AWS Marketplace

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Codebeispiele für die SaaS-Produktintegration

Sie können die folgenden Codebeispiele verwenden, um Ihr SaaS-Produkt (Software as a Service) mit den AWS Marketplace APIs zu integrieren, die für die Veröffentlichung und Wartung Ihres Produkts erforderlich sind. Weitere Informationen finden Sie in den folgenden Abschnitten.

ResolveCustomerCodebeispiel

Das folgende Codebeispiel ist für alle Preismodelle relevant. Das Python-Beispiel tauscht ein x-amzn-marketplace-token Token gegen ein CustomerIdentifierProductCode,LicenseArn, und ausCustomerAWSAccountId. Das CustomerAWSAccountId ist die AWS-Konto ID, die dem Abonnement zugeordnet ist, und LicenseArn ist eine eindeutige Kennung für eine bestimmte erteilte Lizenz. Diese werden für Software verwendet, die über gekauft wurde AWS Marketplace. Dieser Code wird in einer Anwendung auf Ihrer Registrierungswebsite ausgeführt, wenn Sie von der dorthin weitergeleitet werden AWS Marketplace Management Portal. Die Umleitung ist eine POST-Anforderung, die das Token enthält.

Weitere Informationen ResolveCustomer dazu finden Sie ResolveCustomerin der AWS Marketplace Metering Service API-Referenz.

Wichtig

Bei neuen SaaS-Produktintegrationen ist das CustomerIdentifier Feld in der ResolveCustomer API-Antwort nicht ausgefüllt. Verwenden Sie LicenseArn stattdessen CustomerAWSAccountId und zur Kundenidentifikation.

# 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'] licenseARN = customerData['LicenseArn'] # TODO: Store customer information # TODO: Validate no other accounts share the same customerID

Beispielantwort

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

GetEntitlementCode-Beispiel

Das folgende Codebeispiel ist relevant für SaaS-Produkte mit den Preismodellen Vertrag und Vertrag mit Verbrauch. Im Python-Beispiel wird überprüft, ob ein Kunde über eine aktive Berechtigung verfügt.

Weitere Informationen zu GetEntitlement finden Sie GetEntitlementin der AWS Marketplace Entitlement Service API-Referenz.

# 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' : { # Option 1: Using CustomerAWSAccountId (preferred) 'CUSTOMER_AWS_ACCOUNT_ID': [ 'awsAccountId', ] # Option 2: Using LICENSE_ARN (to get entitlements for the license) # 'LICENSE_ARN': [ # 'licenseARN', # ] # Option 3: Using CustomerIdentifier (existing integrations only, not supported for new integrations) # 'CUSTOMER_IDENTIFIER': [ # 'customerID', # ] }, 'NextToken' : 'string', 'MaxResults': 123 }) # TODO: Verify the dimension a customer is subscribed to and the quantity, # if applicable

Beispielantwort

Der zurückgegebene Wert entspricht den Dimensionen, die erstellt wurden, als Sie das Produkt in der AWS Marketplace Management Portal erstellt haben.

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

BatchMeterUsageCode-Beispiel

Das folgende Codebeispiel ist relevant für SaaS-Abonnements und Verträge mit Verbrauchspreismodellen, jedoch nicht für SaaS-Vertragsprodukte ohne Verbrauch. Das Python-Beispiel sendet einen Messdatensatz an, AWS Marketplace um Ihren Kunden Pay-as-you-go-Gebühren in Rechnung zu stellen.

Wichtig

BatchMeterUsageunterstützt CustomerIdentifier keine neuen SaaS-Produktintegrationen. Informationen zu neuen Integrationen finden Sie unter. BatchMeterUsageCodebeispiel: Mit Lizenz ARN

# 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 from datetime import datetime usageRecord = [ { 'Timestamp': datetime(2015, 1, 1), 'CustomerIdentifier': 'customerID', 'Dimension': 'string', 'Quantity': 123 } ] marketplaceClient = boto3.client('meteringmarketplace') response = marketplaceClient.batch_meter_usage( UsageRecords=usageRecord, ProductCode='productCode' )

Weitere Informationen zu BatchMeterUsage finden Sie BatchMeterUsagein der AWS Marketplace Metering Service API-Referenz.

Beispielantwort

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

BatchMeterUsageCodebeispiel: Mit Lizenz ARN

Das folgende Codebeispiel ist relevant für SaaS-Produkte, die Concurrent Agreements unterstützen. Die LicenseArn und CustomerAWSAccountId werden von der ResolveCustomer API zurückgegeben, wenn sich ein Käufer für Ihr Produkt registriert.

# 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. # # LicenseArn and CustomerAWSAccountId are returned by the ResolveCustomer # API when a buyer registers to your product # Import AWS Python SDK import boto3 from datetime import datetime usageRecord = [{ 'LicenseArn' : 'licenseArn', 'Timestamp': datetime(2015, 1, 1), 'CustomerAWSAccountId': 'awsAccountId', 'Dimension': 'string', 'Quantity': 123 }] marketplaceClient = boto3.client('meteringmarketplace') response = marketplaceClient.batch_meter_usage( UsageRecords = usageRecord )

Beispielantwort

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

BatchMeterUsageBeispiel für einen Code zur Kennzeichnung der Nutzungszuweisung (optional)

Das folgende Codebeispiel ist relevant für SaaS-Abonnements und Verträge mit Nutzungspreismodellen, jedoch nicht für SaaS-Vertragsprodukte ohne Nutzung. Das Python-Beispiel sendet einen Messdatensatz mit entsprechenden Nutzungszuweisungs-Tags an, AWS Marketplace um Ihren Kunden Pay-as-you-go-Gebühren in Rechnung zu stellen.

In diesem Beispiel werden LicenseArn und verwendetCustomerAWSAccountId, die von der ResolveCustomer API zurückgegeben werden, wenn sich ein Käufer für Ihr Produkt registriert. Die Verwendung LicenseArn unterstützt Produkte mit gleichzeitigen Verträgen, bei denen ein einziger Käufer mehrere aktive Verträge für dasselbe Produkt haben kann.

# 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. # # LicenseArn and CustomerAWSAccountId are returned by the # ResolveCustomer API when a buyer registers to your product. # Import AWS Python SDK import boto3 from datetime import datetime, timezone usageRecords = [ { "Timestamp": datetime.now(timezone.utc).replace(minute=0, second=0, microsecond=0), "CustomerAWSAccountId": "111122223333", "Dimension": "Dimension1", "LicenseArn": "arn:aws:license-manager::123456789012:license:l-exampleLicense12345", "Quantity": 10000, "UsageAllocations": [ { "AllocatedUsageQuantity": 5000, "Tags": [ {"Key": "user", "Value": "john"}, {"Key": "feature", "Value": "data-processing"}, {"Key": "job-name", "Value": "job11111"}, ] }, { "AllocatedUsageQuantity": 2500, "Tags": [ {"Key": "user", "Value": "john"}, {"Key": "feature", "Value": "data-storage"}, {"Key": "cluster-name", "Value": "cluster11111"}, ] }, { "AllocatedUsageQuantity": 2500, "Tags": [ {"Key": "user", "Value": "jane"}, {"Key": "feature", "Value": "data-storage"}, {"Key": "cluster-name", "Value": "cluster22222"}, ] }, ] }, { "Timestamp": datetime.now(timezone.utc).replace(minute=0, second=0, microsecond=0), "CustomerAWSAccountId": "111122223333", "Dimension": "Dimension2", "LicenseArn": "arn:aws:license-manager::123456789012:license:l-exampleLicense12345", "Quantity": 2000, "UsageAllocations": [ { "AllocatedUsageQuantity": 1000, "Tags": [ {"Key": "user", "Value": "john"}, {"Key": "feature", "Value": "data-processing"}, {"Key": "job-name", "Value": "job11111"}, ] }, { "AllocatedUsageQuantity": 1000, "Tags": [ {"Key": "user", "Value": "jane"}, {"Key": "feature", "Value": "data-processing"}, {"Key": "job-name", "Value": "job22222"}, ] }, ] } ] marketplaceClient = boto3.client('meteringmarketplace', region_name='us-east-1') response = marketplaceClient.batch_meter_usage( UsageRecords=usageRecords )

Weitere Informationen zu BatchMeterUsage finden Sie BatchMeterUsagein der AWS Marketplace Metering Service API-Referenz.

Beispielantwort

{ "Results": [ { "UsageRecord": { "Timestamp": "2025-06-05T14:00:00Z", "CustomerIdentifier": "customerID", "CustomerAWSAccountId": "111122223333", "Dimension": "Dimension1", "Quantity": 10000, "LicenseArn": "arn:aws:license-manager::123456789012:license:l-exampleLicense12345", "UsageAllocations": [ { "AllocatedUsageQuantity": 5000, "Tags": [ { "Key": "user", "Value": "john" }, { "Key": "feature", "Value": "data-processing" }, { "Key": "job-name", "Value": "job11111" } ] }, { "AllocatedUsageQuantity": 2500, "Tags": [ { "Key": "user", "Value": "john" }, { "Key": "feature", "Value": "data-storage" }, { "Key": "cluster-name", "Value": "cluster11111" } ] }, { "AllocatedUsageQuantity": 2500, "Tags": [ { "Key": "user", "Value": "jane" }, { "Key": "feature", "Value": "data-storage" }, { "Key": "cluster-name", "Value": "cluster22222" } ] } ] }, "MeteringRecordId": "8fjef98ejf", "Status": "Success" } ], "UnprocessedRecords": [] }