Exemples de code pour l'intégration de produits SaaS - AWS Marketplace

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exemples de code pour l'intégration de produits SaaS

Les exemples de code suivants peuvent vous aider à intégrer votre produit SaaS aux AWS Marketplace API nécessaires à la publication et à la maintenance de votre produit.

ResolveCustomerexemple de code

L'exemple de code suivant est pertinent pour tous les modèles de tarification. L'exemple Python échange un x-amzn-marketplace-token jeton contre un CustomerIdentifierProductCode, etCustomerAWSAccountId. CustomerAWSAccountIdIl s'agit de l' Compte AWS identifiant associé à l'abonnement. Ce code s'exécute dans une application sur votre site Web d'enregistrement, lorsque vous y êtes redirigé depuis le Portail de gestion AWS Marketplace. La redirection est une demande POST qui inclut le jeton.

Pour plus d'informations à ce sujetResolveCustomer, consultez ResolveCustomerla référence de AWS Marketplace l'API du service de mesure.

# 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

Exemple de réponse

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

GetEntitlementexemple de code

L'exemple de code suivant est pertinent pour les produits SaaS avec le contrat et le contrat SaaS avec le modèle de tarification avec consommation. L'exemple Python vérifie qu'un client dispose de droits actifs.

Pour plus d'informations à ce sujetGetEntitlement, consultez GetEntitlementla référence de l'API AWS Marketplace Entitlement Service.

# 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

Exemple de réponse

La valeur renvoyée correspond aux dimensions créées lorsque vous avez créé le produit dans le Portail de gestion AWS Marketplace.

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

BatchMeterUsageexemple de code

L'exemple de code suivant est pertinent pour les modèles de tarification avec consommation Abonnement et Contrat SaaS, mais pas pour les produits Contrat SaaS sans consommation. L'exemple Python envoie un enregistrement de mesure à AWS Marketplace pour facturer des pay-as-you-go frais à vos clients.

# 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)

Pour plus d'informations à ce sujetBatchMeterUsage, consultez BatchMeterUsagela référence de AWS Marketplace l'API du service de mesure.

Exemple de réponse

{ '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 } ] }

BatchMeterUsageavec exemple de code de balisage d'allocation d'utilisation (facultatif)

L'exemple de code suivant est pertinent pour un abonnement et un contrat SaaS avec des modèles de tarification à la consommation, mais pas pour les produits sous contrat SaaS sans consommation. L'exemple Python envoie un enregistrement de mesure avec les balises d'allocation d'utilisation appropriées AWS Marketplace pour facturer des pay-as-you-go frais à vos clients.

# 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")

Pour plus d'informations à ce sujetBatchMeterUsage, consultez BatchMeterUsagela référence de AWS Marketplace Metering Service l'API.

Exemple de réponse

{ "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": [] } ] }