I am trying to sell my product on AWS Marketplace and got stuck on the registration form on the question 'How is your product fulfilled?' and it gives me the option of 'AMI' and 'SaaS'.
What is the difference between AMI and SaaS?
AMI means that you just have an OS image (stored under your account) that your users can "clone" by starting their own instances:
AMI is the acronym for Amazon Machine Image. An Amazon Machine Image (AMI) is an image of a server -- including an Operating System and often additional software -- which runs on AWS.
SaaS means that you start and control instances yourself and users use software running on those servers without having access to the internal server environment.
How do AMI and SaaS compare? Amazon answers that question explicitly:
Both AMI and SaaS (Software as a Service) product listings are from trusted vendors. AMI products run within a customer's AWS account. You retain more control over software configuration and over the servers that run the software, but you also have additional responsibilities regarding server configuration and maintenance.
Related
I have a large piece of server software (3 GB of files pre-install) that is running on an EC2. The software installs a full app server or interface server that communicates with the front-end desktop GUIs and database. The software was originally designed years ago to be installed through a visual step-by-step installer off a USB drive on premises. This installer ensures that the software is set up with proper configuration, networking, connection to the database, etc. Every client gets 1 or more EC2 instances dedicated to handle their workload.
Moving into a cloud-minded paradigm, what is a better way to handle creating many servers, for many clients, all with different configurations of this software? When a server goes down, or another is needed for load, what's a "cloud" practice to spin up a new server and install the same configuration of software on this server?
I have multiple ideas including:
Store software files in S3 bucket and pull them to the EC2 instances as necessary. A config file for each customer will also be updated and stored on S3. The EC2 will then start the software from a PowerShell script to create proper configurations.
Store the software in the AMI of EC2 exactly as configured. This means any time a server is created with a new client configuration, we create a new AMI after installation.
Create a Lambda function that can handle all the different configuration parameters. When invoked, it will take care of spinning up a server, moving the software to the server, and installing the software with proper configuration.
Any guidance or references to white papers would be appreciated.
Thank you!
I would:
prepare one single AMI which has the software installed along with the required configuration
store the custom config files for the customers in a bucket
create a launch template for each customer. this template would reference the AMI and would fetch the customer specific config file from the bucket
create an EC2 autoscaling group for each customer. Each autoscaling group would use the specific launch template
A single AMI with the config file fetched automatically allows you to scale easily if your customer base grows. The alternative, one AMI per customer, would quickly become unmanageable.
The autoscaling group allows you to scale seemlessly if the customer required more servers, and it would take care of replacing unhealthy instances automatically.
I am building a Windows AMI from a base Windows AMI with my custom software on it.
If I distribute this image to customers, am I infringing some ToCs? How does it work given that Windows is proprietary?
You can share your AMI's, and you are not infringing on any ToC's:
Amazon EC2 enables you to share your AMIs with other AWS accounts. You
can allow all AWS accounts to launch the AMI (make the AMI public), or
only allow a few specific accounts to launch the AMI (see Sharing an
AMI with specific AWS accounts). You are not billed when your AMI is
launched by other AWS accounts; only the accounts launching the AMI
are billed.
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-intro.html
When you share it with your customers, and they launch the AMI, they are billed by AWS and part of that bill is to pay the licensing cost as needed.
You will not violate any TOCs. AWS itself promote custom AMIs which are highly useful for business continuity plan.
For open-source software, they will work at run time, and for licensed software, only a copy of the software will be installed and the end-user will have to apply their license to make it work! Thus it shouldn't be an issue.
Since you're building a Windows AMI, do use Sysprep tool. It is highly useful in removing unique information from the Amazon Elastic Compute Cloud (Amazon EC2) Windows instance, including the instance security identifiers (SID), computer name, and drivers. Duplicate SIDs can cause issues with Windows Server Update Services (WSUS), log-in issues, Windows volume key activation, Microsoft Office, and third-party products.
I am looking at creating an Amazon Machine Image (AMI) to sell on Amazon AWS Market Place.
I have a general understanding of how to create and sell an AMI instance but I am unsure of the best way to provide maintain/support for a client EC2 instance.
I plan to create a AMI using Amazon Linux which runs our Java software application.
Question:
What is the best way to provide updates and support to a customer who has bought our AMI instance?
I am a beginner in cloud computing and have read some documents about cloud computing in Amazon. I have a question about Xen and the art of virtualization implemented in Amazon web service. As we know cloud computing offers elasticity and scalablity for deploying applications. When we deploy a cloud app to Amazon, by the time the number of users of our app has been increased and I think Amazon will automatically generate a new virtual server to handle user request. At the first time, the cloud app runs on one virtual server and now it runs on two virtual servers.
Does anyone know how an application can run on two virtual servers on Amazon? How it synchronizes data, use of CPU resources,...?
Is there any document from Amazon point out this problem and virtualization implemention?
Thank you
When you create an instance on the Amazon EC2, they create a new virtual server(called as instance) for you to use it. They do not scale the number of instances based on the user requests. It is upto the user to create the instances for use.
The following link has an exhaustive explanation about how the distributed and scalable applications work
As Amazon Web Services mentions,
An Amazon Machine Image (AMI) is a special type of pre-configured
operating system and virtual application software which is used to
create a virtual machine within the Amazon Elastic Compute Cloud
(EC2). It serves as the basic unit of deployment for services
delivered using EC2.
So AMI is a kind of virtual machine which we can use as a server to host our applications. So my questions are,
What are the limitations in AMI with compared to a normal server?
Can we install any software in the AMI?
AMI is not any server running; it is like a "backup of your server" on hard disk. Using this back-up you can bring up running servers instantly.
Concept of Imaging server is used in all IT companies. Suppose an IT companies give Windows 7 to new joinees with few pre-installed software. So, instead of configuring the laptop for every joinee; they will create an image and will just dump that image on new laptop and give it to new joinee.
Same Image when created on Amazon Web services is called as AMI. AMI is just an image of any server... It is something like you firstly make your machine ready ( with any operating system and all the softwares you need on them ) and then create an image out of it which is called as AMI.
To answer your questions;
1. Not sure what limitations you are talking about; but as such there is no limitation.
2. Yes you can install any software. To make things clear; you can even install a virus on the server ; and then create an AMI.