Integrating SaaS with AWS Marketplace, Part 1
Author: Lawrence Chang, Director of Engineering
Introduction
AWS Marketplace is a curated collection of third-party applications that are either hosted on AWS or provisioned directly in a customer’s AWS account. Marketplace helps customers find products and services that seamlessly integrate with businesses’ day-to-day activities without the need for lengthy provisioning or installation cycles. Applications listed on Marketplace cover a wide range including products for infrastructure, security, analytics, business, and much more. As applications on Marketplace are tested and approved by AWS, customers have additional assurance that products purchased on AWS Marketplace can be trusted and are reliable.
Given Clumio’s extensive partnership with AWS, when we were looking to increase our visibility and reach, AWS Marketplace was a great place to make our services available. This past April marked our one year anniversary of the launch of our Marketplace application and as such, we thought we would reflect on the engineering effort required to integrate AWS Marketplace with Clumio.
The following is the first in a three-part tutorial on how to integrate a SaaS application with AWS Marketplace. This first tutorial covers creation of the SaaS application. Subsequent tutorials will discuss how to integrate the onboarding process as well as the metering aspects of AWS Marketplace.
SaaS with AWS Marketplace
Applications on AWS Marketplace can be deployed in various ways. Applications directly provisioned into a customer’s AWS account typically take the form of AMIs, Docker containers, ML models, etc … Clumio’s application however is delivered as a SaaS product. This means that the heavy-lifting to perform data protection is hosted and managed by Clumio outside of the customer’s AWS account.
It is important to note that SaaS products are broken down further into the following sub-types:
- Subscription
- Contract
- Contract + Pay-as-you-Go
Clumio’s application is of type “Subscription”. While the team considered “Contract” as well as “Contract + Pay-as-you-Go”, these require customers to make an upfront purchase commitment for a given length of time. “Subscription” gives customers the flexibility to subscribe and unsubscribe at any time and pay for only what is consumed. Furthermore, while not the main reason, testing for “Contract” type applications is more difficult as the team needs to contact AWS each time a test contract needs to be canceled in order to validate the offboarding flow.
Given the above, the rest of this article focuses on creating and integrating a SaaS application of type “Subscription” with AWS Marketplace.
Create the Application
AWS Marketplace applications can be created by any AWS account that has been registered as a seller account. Information about how to complete seller registration can be found here. The seller account is the one ultimately associated with the AWS Marketplace application and will have access to various reports and disbursement information for the application. It is also the account that will have programmatic access to API calls for your Marketplace application. Usage of these APIs will be covered in the next tutorial. The subsequent steps assume that seller registration has been completed.
In order to create a SaaS application, navigate to the Management Portal from the seller account and select “New SaaS Subscription” as shown below:
Subsequent screens will guide you through the product creation wizard in order to populate various metadata, attributes, and pricing information for your product. While reviewing all fields is out-of-scope for this document (please contact the AWS Marketplace Operations team for assistance), there are a couple of attributes to highlight. First is the SaaS URL:
The SaaS URL is the URL that AWS Marketplace sends a “POST” request to when a customer subscribes to a SaaS application. The next tutorial will delve deeper into the information sent by AWS Marketplace and how to integrate the onboarding process with this request. In the meantime, more information can be found here.
Another set of attributes to highlight are the pricing dimensions:
Category describes the unit in which the application charges and appears to customers when viewing your application on AWS Marketplace. Clumio uses “Units — Units” as depending on the use case, the metric used to charge differs. For example, one data source may be charged by size whereas another data source may be charged by item count. The mapping of metric usage to “units” is denoted and handled inside the Clumio service so that the pricing in AWS Marketplace stays simple.
Dimensions represent a feature or a service that customers may be charged for. Each dimension consists of three fields:
- API Name — The programmatic name used by code in order to associate a charge with a given dimension
- Description — The customer-visible context that denotes what a given dimension is for
- Rate — The per-unit price at which the customer will be charged for a given dimension
A subsequent tutorial will delve deeper into how these dimensions integrate with AWS metering.
Lastly, applications start off as “limited” (meaning they are not visible publicly) to allow for development. As such, the “Accounts to allow-list” must be populated with AWS Account IDs you plan to “test subscribe” to the application. Only these accounts will be able to access the application while the application is in “limited” state:
Once all fields are filled, review and submit the application. While all values can be revised and re-submitted later, each submission can take up to a couple of days to be reviewed and approved by AWS (though the team has typically experienced good turn around times). Thus, it is best to get the fields highlighted above correct to start with in order to enable testing of the application sooner.
Within a couple days, an email like this should arrive:
The two important components of the email are:
- Product Code — A value that uniquely identifies your Marketplace application. The next tutorial will cover how the Product Code is used during the onboarding process to help your code confirm the Marketplace application that a customer has subscribed to. This product code is also needed for metering-purposes.
- SNS Topics — Topics that asynchronously communicate information about customer subscriptions and entitlements. Applications of type “Subscription” have only one topic but those of type “Contract” have two. The SNS topic shared by both (and shown in the screenshot above) is the topic that notifies you when a customer subscribes or unsubscribes from an application. These messages can be used to trigger preparations for onboarding or initiate offboarding. Applications of type “Contract” have an additional topic that notifies whenever a customer’s entitlements for an application are updated (purchased amount, renewal, etc …). This and subsequent tutorials will focus on the topic related to subscriptions. More information on these topics can be found here.
Next Steps
Congratulations! At this point, you should have a “Subscription”-based AWS Marketplace application that is limited as below:
You can click on the application to see additional details and even view what the listing would look like on AWS Marketplace if it was public. The next tutorial will cover what happens when a customer subscribes to your application and how to process the information received from AWS Marketplace. Until then, feel free to head on over to AWS Marketplace and check out Clumio’s own listing. Any feedback or questions are welcome!