Ejemplos de código para la integración de productos de SaaS - AWS Marketplace

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejemplos de código para la integración de productos de SaaS

Puede usar los siguientes ejemplos de código para integrar su producto de software como servicio (SaaS) con AWS Marketplace APIs los necesarios para publicar y mantener su producto. Para obtener más información, consulte las siguientes secciones.

ejemplo de código ResolveCustomer

El siguiente ejemplo de código es relevante para todos los modelos de precios. En el ejemplo de Python se cambia un token x-amzn-marketplace-token por un CustomerIdentifier, ProductCode y CustomerAWSAccountId. El CustomerAWSAccountId es el ID de Cuenta de AWS asociado a la suscripción. Este código se ejecuta en una aplicación en el sitio web de registro, cuando se redirija a ella desde el AWS Marketplace Management Portal. La redirección es una POST solicitud que incluye el token.

Para obtener más información al respectoResolveCustomer, consulte ResolveCustomerla APIreferencia del servicio de AWS Marketplace medición.

# 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

Ejemplo de respuesta

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

ejemplo de código GetEntitlement

El siguiente ejemplo de código es relevante para los productos SaaS con el modelo de precios de contratos y contratos SaaS con consumo. En el ejemplo de Python se comprueba que un cliente tenga un derecho activo.

Para obtener más información al respectoGetEntitlement, consulte GetEntitlementla Referencia del servicio de AWS Marketplace asignación de derechos. 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

Ejemplo de respuesta

El valor devuelto se corresponde con las dimensiones creadas al crear el producto en AWS Marketplace Management Portal.

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

ejemplo de código BatchMeterUsage

El siguiente ejemplo de código es relevante para los modelos de precios de suscripciones y contratos SaaS con consumo, pero no para los productos de contrato SaaS sin consumo. El ejemplo de Python envía un registro de medición AWS Marketplace para cobrar pay-as-you-go comisiones a tus clientes.

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

Para obtener más información al respectoBatchMeterUsage, consulte BatchMeterUsagela Referencia sobre el servicio API de AWS Marketplace medición.

Ejemplo de respuesta

{ '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 con un ejemplo de código de etiquetado de asignación de uso (opcional)

El siguiente ejemplo de código es relevante para los modelos de precios de suscripciones y contratos SaaS con consumo, pero no para los productos de contrato SaaS sin consumo. El ejemplo de Python envía un registro de medición con las etiquetas de asignación de uso adecuadas AWS Marketplace para cobrar pay-as-you-go las tarifas a sus clientes.

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

Para obtener más información al respectoBatchMeterUsage, consulte BatchMeterUsagela AWS Marketplace Metering Service APIReferencia.

Ejemplo de respuesta

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