With a paid AMI, your customers:
Must be signed up to use Amazon EC2 themselves
The process they go through to purchase your AMI product prompts them to sign up for Amazon EC2 if they aren't already signed up. However, to reduce any possible confusion, we encourage you to inform your customers on your site that they must be signed up for Amazon EC2 to purchase your product.
Buy your paid AMI and then launch instances from it
Use their own AWS credentials when launching instances, not your credentials
Pay the price you set for the paid AMI, and not the standard rates for Amazon EC2
You can associate your DevPay product code with more than one AMI. However, a single AMI can be associated with only one product code. If you plan to sell multiple AMIs, you could sell them all under a single product code, or different product codes (by registering multiple DevPay products). For information about why you might choose a single product code or multiple product codes, see Selling Multiple AMIs.
Each customer's usage for the paid AMI is displayed on their Application Billing page. For more information, see Where Customers Get Information About Their Bills.
At any time, you can confirm the customer is still currently subscribed to your product. For more information, see Confirming a Customer's Subscription Status.
With the current implementation of Amazon DevPay:
Your paid or supported AMIs must be backed by Amazon S3. Paid or supported AMIs backed by Amazon Elastic Block Store are currently not supported. Therefore, your paid AMIs cannot run Windows 2008 Server or SQL Server 2008 at this time.
You can't use Elastic Load Balancing (either by itself or in conjunction with Auto Scaling) with instances of paid or supported AMIs.
The discounts from Amazon EC2 Reserved Instances don't apply to paid or supported AMIs. That is, if you purchase Reserved Instances, you don't get the lower usage price associated with them when your customers launch your paid or supported AMIs. Also, if your customers purchase Reserved Instances, and they use your paid or supported AMIs, they continue to pay the price you specified for the use of your paid or supported AMIs.
Your customers can't make Spot Instance requests for your paid or supported AMIs; if they do, Amazon EC2 returns an error.
For more information about any of the preceding Amazon EC2 features, go to the Amazon EC2 product page.
Process for Creating and Using Paid AMIs
The following table summarize the basic flow for creating and using paid AMIs.
You create an instance store-backed AMI.
You register your AMI with DevPay. For more information, see Registering Your Product.
As part of this process, you provide a product description, product pricing, and so on. This registration process creates an 8-character product code for the product, a product token for the product, and a purchase URL where customers can sign up to use the product.
You associate the product code with your AMI. For more information, see Associating a Product Code with an AMI.
You share the AMI with select customers or the public. For more information, see Sharing Your Paid AMI with Select Users or the Public.
Note that even though you've shared the AMI, it is a paid AMI (there is a product code associated with it). Therefore, no one can use the AMI until they sign up for it.
You make your paid AMI available for sale (make the purchase URL available).
You can advertise your paid AMI in the AWS Customer App Catalog. You can also create your own web site. Be sure to follow the recommendations for product development. For more information, see Recommendations for Product Development.
Customers click the purchase URL and sign up for your AMI. At this point, they have the AMI ID of your AMI.
For an example of what the customer sees during the purchase process, see Appendix: The Customer Purchase Experience. If they're not already signed up for Amazon EC2, they'll be prompted to sign up. They purchase your product with their Amazon.com account. They must also have the credentials needed to launch Amazon EC2 instances.
Customers launch instances using your AMI.
Because you associated the AMI with the product code, you are charged for the cost of using Amazon EC2 (instance-hours and bandwidth) the customers incur when using instances of that AMI. However, the customers are also charged at the rate you specified during product registration.
Managing Your Paid AMI
To manage your paid AMIs, you can complete the following tasks using the Amazon EC2 command line interface (CLI) tools.
Associating a Product Code with an AMI
Each AMI can have a single product code associated with it. You must be the owner of an AMI to associate a product code with it. You can associate a single product code with more than one AMI. For more information, see Selling Multiple AMIs.
You can associate a product code only with Amazon S3-backed AMIs (those using an instance store root device), and not Amazon EBS-backed AMIs (those using an Amazon EBS root device).
To associate a product code with an AMI
ec2-modify-image-attribute command as follows:
ec2-modify-image-attribute ami-5bae4b32 --product-code 774F4FF8productCodes ami-5bae4b32 productCode 774F4FF8
To verify the product code is associated with the AMI
ec2-describe-image-attribute command as follows:
ec2-describe-image-attribute ami-5bae4b32 --product-codeproductCodes ami-5bae4b32 productCode 774F4FF8
You can't change or remove the
productCodes attribute after you've set it. If you
want to use the same image without the product code or associate a different product code with the
image, you must reregister the image to obtain a new AMI ID. You can then use that AMI without a
product code or associate the new product code with the AMI ID. For more information, see Inheriting the Product Code of your Paid AMI.
Sharing Your Paid AMI with Select Users or the Public
If you're creating a paid AMI, after you associate the product code with the AMI, you need to share the AMI with select customers or the public.
To share an AMI with the public
ec2-modify-image-attribute command as follows:
ec2-modify-image-attribute ami-5bae4b32 --launch-permission -a alllaunchPermission ami-5bae4b32 ADD group all
Even though you've shared the AMI, no one can use it until they sign up for your product by going to the purchase URL. After customers sign up, any instances of the paid AMI they launch will be billed at the rate you specified during product registration.
Confirming that an Instance is Launched from an AMI with a Product Code
If you have created a product for others to use with their AMIs (the supported AMI scenario), you might want to confirm that a particular AMI is associated with your product code and a particular instance is currently running that AMI.
You must be the owner of the product code to successfully call
ec2-confirm-product-instance with that product code.
Because your customers don't own the product code, they should describe their instances to confirm their instances are running with your product code.
To confirm an instance is running an AMI associated with your product code
ec2-confirm-product-instance command as follows:
ec2-confirm-product-instance 774F4FF8 -i i-10a64379774F4FF8 i-10a64379 true 111122223333
If the AMI is associated with the product code,
true is returned along with the AMI
owner's account ID. Otherwise,
false is returned.
Getting the Product Code from Within an Instance
A running Amazon EC2 instance can determine if a DevPay product code is attached to itself. The instance retrieves the product code like it retrieves its other metadata. For information about the retrieval of metadata, go to the "Instance Metadata" section of the Amazon Elastic Compute Cloud Developer Guide.
The instance retrieves the product code by querying a web server with this REST-like API call:
The following is an example response.
Inheriting the Product Code of your Paid AMI
Associating a product code with an AMI turns it into a paid AMI that your customers must sign up for to use. What happens if your customer launches an instance from the paid AMI and then creates a new AMI from that instance?
If you give a customer root access to your paid Linux/UNIX AMI, the customer can rebundle it. If your customer uses AWS tools to rebundle the AMI, the rebundled AMI inherits the product code. When launching instances of the rebundled AMI, the customer is still billed for usage based on your price. However, if the customer doesn't use the AWS tools when rebundling, the rebundled AMI won't inherit the product code, and the customer will pay the standard Amazon EC2 rates and not your price.
When a customer contacts you for support for a paid AMI, you can confirm your product code is associated with the AMI and the customer's instance is currently running the AMI. For more information, see Confirming that an Instance is Launched from an AMI with a Product Code.
If you have software installed on the AMI, the software can retrieve the instance metadata to determine if the product code is associated with the instance. For more information, see Getting the Product Code from Within an Instance.
Keep in mind that the preceding methods for confirming the association of the product code with the instance are not foolproof because a customer with root access to the instance could return false information indicating the product code is associated with the instance.
When you associate a product code with a Windows AMI, the association is permanent. Therefore, we recommend you keep a separate, base copy of the AMI that has no product code associated with it.
Anyone who purchases a Windows AMI can rebundle it. The product code is automatically transferred to the rebundled AMI. When your customers launch instances of the rebundled AMI, they pay the rates you set when you registered your DevPay product. In turn, you're charged for their usage of Amazon EC2.