AWS Marketplace
AWS Marketplace China SaaS feature update with tips on how to architect your SaaS subscriptions
AWS Marketplace has announced that software-as-a-service (SaaS) subscriptions are available in AWS Marketplace China. All SaaS products in AWS Marketplace China will be sold by Ningxia Western Cloud Data Technology Co., Ltd. (NWCD), which is the service operator and provider for AWS China (Ningxia) Region, and also operates AWS Marketplace China. NWCD will appear as the seller of record (SOR) on the customer’s bill for any AWS Marketplace SaaS product purchases and will issue the fapiaos to customers directly.
How to discover SaaS products in AWS Marketplace China
With this release, you can easily find SaaS products in AWS Marketplace China. To do so, navigate to AWS Marketplace China. In the top navigation, under Delivery Methods, choose SaaS. You can further refine results by applying additional search filters from the left sidebar, such as vendors, categories, and pricing plans. You can also search your interested SaaS products by search bar through Chinese or English keywords.
When you choose a SaaS product, its product detail page shows the relevant per-unit pricing information. After you subscribe to the SaaS product, you are able to access the SaaS product and will pay only for the service that you consume, with no monthly fees or subscription costs. You will receive your AWS Marketplace China bill from NWCD for all applicable fees and charges accrued for your SaaS usage for the previous month at the beginning of each month. Currently, the AWS Marketplace China bills will be sent separately from your cloud service bills via email. You can see more details in FAQs for AWS Marketplace China purchase.
Available SaaS products
The list of products is growing every day. Here is what we are offering so far:
No | ISV | Product name | Primary category |
1 | Rescale | Rescale HPC Platform | High Performance Computing |
2 | XINGZHE.AI | DiTing Intelligent Content Review System | Business Intelligence |
3 | Radware | Radware Cloud Native Protector(CNP) | Security |
4 | DAS-Security | Anheng Cloud-Tianchi Cloud Security Management Platform | Security |
5 | Baidu | Baidu Anti-DDoS Service | Security |
6 | HENGSHI | HENGSHI SENSE | Business Intelligence |
7 | Kingdee | Kingdee Cloud Galaxy | IT Business Management |
8 | WallTech | eTower – ecommerce collaborative platform | Collaboration |
9 | Mobvista | SpotMax SaaS | Agile Lifecycle Management |
10 | huya | HUYA SkyEye Content Security | ML Solutions |
11 | 阶形科技 | Pushinsight | Analytic Platforms |
12 | KIWISEC | Kiwisec Application Privacy compliance Detection System | Security |
13 | INTSIG | Textin – invoice – Contract | Databases & Caching |
14 | Bespin | OpsNow SaaS | Monitoring |
15 | Tingyun | Tingyun Network Synthetic Test | Monitoring |
To Independent Software Vendors
To successfully create a SaaS subscription in AWS Marketplace China, you must integrate your SaaS subscription product with AWS Marketplace China for supporting customer onboarding and using your product, including validating customers’ subscriptions before giving them access and metering for their usage. To facilitate the integration with AWS Marketplace China, we show how to onboard your customer, report usage to AWS Marketplace, and handle SNS message notification systems for subscriptions.
How to onboard your customer
How to identify the definition of customer registration, SaaS tenant, and SaaS user
After customers subscribe to your product, they will be redirected to your product registration page, on which they can sign up for an account or log in directly with their credentials. An HTTP POST will be sent to your registration page when customers are redirected from AWS Marketplace. This POST request will be a form field named x-amzn-marketplace-token, which can be redeemed via an AWS API call to ResolveCustomer to determine the customer ID of the subscriber and the product code of the service they subscribed to.
You must guide the customer until you obtain the customer’s tenant identity in your SaaS application. You can permit customers to log in to your SaaS application with their existing account or sign up a new account as a new tenant. Finally, when a customer successfully logs in to your SaaS application as a tenant, you can bind the customer’s AWS identity and SaaS application tenant identity. Normally, there will be SaaS users under SaaS tenants. If your SaaS users’ charges are collected uniformly through SaaS tenants, you do not need to deal with the connection of SaaS users in the process of integrating with AWS Marketplace. If your charging method is based on users’ separate charges, you need to conduct a more granular connection to distinguish AWS customer identity from SaaS user identity.
How to design the architecture when SaaS applications correspond to multiple products in AWS Marketplace
There can be challenges with using the same seller account to publish multiple SaaS products in AWS Marketplace. If these SaaS applications use the same tenant registration and verification system and customers log in to the same SaaS application, you will face more complex problems.
As an example, assume there are two SaaS products you published, namely:
- SaaS1 with product ID product1111
- SaaS2 with product ID product2222
After customers purchase your products through AWS Marketplace, you must bind the tenant of SaaS application with the CustomerIdentifier. In generating consumption behavior by users in your SaaS application, you record and integrate this behavior into your users’ tenants and conduct pricing interaction with AWS Marketplace through the AWS Marketplace API.
In this scenario, tenant design is as follows:
Tenant ID | User ID | Marketplace_Id |
AAA | 111 | 5ha1maxi |
222 | 5ha1maxi | |
333 | 5ha1maxi | |
BBB | 111 | |
222 |
In this tenant design, Marketplace_ Id is the CustomerIdentifier, which comes from the ResolveCustomer API. The value in this column means the tenant enters the SaaS application through the AWS Marketplace platform. In the future, all billing related to the tenant uses the value of this column. Billing dimension and usage of the SaaS application interact with AWS Marketplace, as shown with the following API call:
{
"ProductCode": " product1111",
"UsageRecords": [
{
"CustomerIdentifier": "5ha1maxi",
"Dimension": "Data",
"Quantity": 2,
"Timestamp": xxxxx
}
]
}
If you have used the same seller account and launched several SaaS products, these SaaS applications use the same tenant registration and verification system.
How to architect for AWS Marketplace users using some SaaS products not procured in AWS Marketplace
After users select one of your SaaS products through AWS Marketplace, purchase, and register or log in, they may use the function of another SaaS application on the shelf in your SaaS application. Your SaaS application calls the AWS Marketplace billing API to interact with AWS Marketplace according to this function. However, because the user does not subscribe to another product through AWS Marketplace, you get an error return.
Therefore, in this special case, your SaaS architecture design is marked at the tenant level according to the number of products on the shelf and bound with your tenant system, as shown in the following table:
Tenant ID | User ID | Marketplace_Id1 | Marketplace_Id2 |
AAA | 111 | product1111-5ha1maxi | |
222 | product1111-5ha1maxi | ||
333 | product1111-5ha1maxi | ||
BBB | 111 | product1111-5ha1maxi | Product2222-d92nwk21 |
222 | product1111-5ha1maxi | Product2222-d92nwk21 |
OR
{
"Tenant_T": [
{
"TenantID": "AAA",
"User": [
{
"UserID": "111"
},
{
"UserID": "222"
},
{
"UserID": "333"
}
],
"Marketplace": [
{
"ProductID": "product111",
"MarketplaceID": "5ha1maxi"
}
]
},
{
"TenantID": "BBB",
"User": [
{
"UserID": "111"
},
{
"UserID": "222"
}
],
"Marketplace": [
{
"ProductID": "product111",
"MarketplaceID": "5ha1maxi"
},
{
"ProductID": "product222",
"MarketplaceID": " d92nwk21"
}
]
}
]
}
Under this tenant architecture, you can clearly distinguish the relationship among the tenants in AWS Marketplace, your products on the shelf, and the tenants of your SaaS application. When a user selects the functions of your SaaS application, you must find the tenant corresponding to the user and the products subscribed through AWS Marketplace.
If the user subscribes to the product to which this function belongs, you can directly use this information to interactively transfer the usage through AWS Marketplace API. If the user does not subscribe to this product, your application should handle it accordingly. For example, forbid the user to use this function and guide the customer to subscribe to your product on the corresponding AWS Marketplace before using it.
How to report usage to AWS Marketplace
When you create a SaaS product listing in AWS Marketplace, you must design the price model, select the category that best describes your product’s pricing, and then define your pricing dimensions. Each pricing dimension represents a feature or service that you can set a per-unit price for.
You must also perform usage collection as users use your SaaS application. You must report product usage information to AWS Marketplace on an hourly basis via an API call to BatchMeterUsage, which handles up to 25 metering records at a time. Send one record per customer per dimension. Each call should include Customer ID, Dimension Name, Usage Quantity, and UTC timestamp.
How to handle SNS message notification systems for subscriptions
When customers subscribe to or unsubscribe from your service, messages are sent to an Amazon Simple Notification Service (Amazon SNS) topic created by AWS for your service. It’s a good practice to subscribe to an Amazon Simple Queue Service (Amazon SQS) queue to the topic and then read messages from the queue. By doing this, you won’t lose messages if your service is unavailable.
You’ll receive SNS messages with the following actions:
- subscribe-success: This means that the customer has successfully subscribed to your product in the AWS Marketplace. You receive this message asynchronously when customers access your SaaS application.
- subscribe-fail: This means that customers failed to subscribe to your product in AWS Marketplace. This situation is mostly related to the payment verification of the customer on AWS. After you receive this notification, you must perform the appropriate logic and suggest the customer go back to AWS Marketplace and resubscribe to your product before using it again.
- unsubscribe-pending: This means that customers have unsubscribed from your product in AWS Marketplace and are no longer using your product in AWS Marketplace. You will not be able to call the AWS Marketplace API to send the customer’s consumption information when the subscription has been canceled. The most important event to handle is the unsubscribe-pending. If you receive this for a customer, you have one hour to report any final usage. After an hour, you receive an unsubscribe-success message and can’t send any metering records for that customer.
- unsubscribe-success: This means that the customer has successfully unsubscribed from your product in AWS Marketplace. You receive this message one hour after unsubscribe-pending, which means that the API call has been closed and you can’t send the user’s usage information to AWS Marketplace. You can log off the user or modify the user’s payment method in SaaS application.
Additional resources
To get started with AWS Marketplace China, operated by NWCD, visit: https://awsmarketplace.amazonaws.cn or learn more from the AWS Marketplace China FAQ page.
If you are already selling your products in AWS Marketplace and would like to take advantage of this new option, contact your AWS Business Development Manager. You can also call us via (+86) 10100966-8. If you are new to AWS Marketplace China and interested in listing a product in AWS Marketplace China, contact us via the online application form. You can also call the service hotline at (+86) 10100966-8.
About the authors
Mingyue Zhang is a partner solution architect for Amazon Web Services. Zhang Mingyue focuses on the AWS Marketplace platform, technical consulting and architectural design of buyers and sellers, and is also responsible for building joint solutions on AWS with partners.