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

Los siguientes ejemplos de código pueden ayudarle a integrar su producto de software como servicio (SaaS) con las AWS Marketplace API necesarias para publicar y mantener su producto.

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 solicitud POST que incluye el token.

Para obtener más información al respectoResolveCustomer, consulte la ResolveCustomerreferencia de la API 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 la referencia GetEntitlementde la API de 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

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 la BatchMeterUsagereferencia de la API del servicio 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, consulta BatchMeterUsagela referencia de la AWS Marketplace Metering Service API.

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