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
Vous pouvez utiliser les exemples de code suivants pour intégrer votre produit SaaS (logiciel en tant AWS Marketplace APIs que service) aux éléments nécessaires à la publication et à la maintenance de votre produit. Pour plus d'informations, consultez les sections suivantes.
Rubriques
ResolveCustomer
exemple 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 CustomerIdentifier
ProductCode
, etCustomerAWSAccountId
. CustomerAWSAccountId
Il 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 POST demande qui inclut le jeton.
Pour plus d'informations à ce sujetResolveCustomer
, consultez ResolveCustomerle Guide de AWS Marketplace APIréférence des services 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' }
GetEntitlement
exemple 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 APIréférence du service AWS Marketplace d'admissibilité.
# 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" }
BatchMeterUsage
exemple 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 BatchMeterUsagele Guide de AWS Marketplace APIréférence des services 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 } ] }
BatchMeterUsage
avec 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 surBatchMeterUsage
, voir BatchMeterUsagela AWS Marketplace Metering Service APIréférence.
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": [] } ] }