Distributing custom Windows AMIs on AWS - amazon-web-services

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.

Related

AWS instances type for RPI

I have my docker image for microservice-x build on rpi
My dockerfile looks as below
FROM raspbian/stretch
....
This image runs on RPi .However if I wish to launch the docker image on AWS instance which Amazon Machine Image (AMI) type should I use ?
For AMI I will recommend using AWS ECS docker optimized AMI (AMR).
Amazon ECS-Optimized Amazon Linux 2 AMI (ARM)
Amazon EC2 Container Service makes it easy to manage containers at
scale by providing a centralized service that includes programmatic
access to the complete state of the containers and Amazon EC2
instances in the cluster, schedules containers in the proper location,
and uses familiar Amazon EC2 features like security groups, Amazon EBS
volumes, and IAM roles.
Amazon ECS-Optimized Amazon Linux 2 AMI (ARM)
For instance You can use Amazon EC2 A1 instances.
Amazon EC2 A1 instances deliver significant cost savings for scale-out
and Arm-based applications such as web servers, containerized
microservices, caching fleets, and distributed data stores that are
supported by the extensive Arm ecosystem. A1 instances are the first
EC2 instances powered by AWS Graviton Processors that feature 64-bit
Arm Neoverse cores and custom silicon designed by AWS.
You can find more in this article
Docker & ARM demonstrated the integration of ARM capabilities into
Docker Desktop Community for the first time. Docker & ARM unveiled
go-to-market strategy to accelerate Cloud, Edge & IoT Development.
These two companies have planned to streamline the app development
tools for cloud, edge, and internet of things environments built on
ARM platform. The tools include AWS EC2 A1 instances based on AWS’
Graviton Processors (which feature 64-bit Arm Neoverse cores). Docker
in collaboration with ARM will make new Docker-based solutions
available to the Arm ecosystem as an extension of Arm’s
server-tailored Neoverse platform, which they say will let developers
more easily leverage containers — both remote and on-premises which is
going to be pretty cool.
building-arm-based-docker-images-on-docker-desktop-made-possible-using-buildx
amazon-ec2-systems-manager-adds-raspbian-os-and-raspberry-pi-support
Forgot to notice that Ubuntu server 16.04 AMI type supports both X86 and ARM architectures

AWS service to deploy a machine with default security groups, alarms, etc.?

I am looking to provide my software setup to others for use on AWS with as few manual steps as possible. I can create an AMI with my software pre-installed and configured rather than just an installer which cuts out several issues (badly sized disks, people picking wrong/unsupported distro for my compiled binary, etc.) but this does not bundle the config for network interfaces, alarms, or other related Amazon services.
Does Amazon have a service/mechanism that will such features? I know of launch templates but these are per-region, per-account and need to be created after groups etc. have been added manually.
I know Amazon have API's for all this, but before turning to third parties or my own script I want to be sure that Amazon has no portable template type thing that can be provided and they simply launched in the console.
You can create your AMI with your software pre-installed and publish them to all the available regions(AWS marketplace/ public access).
Later use Cloud formation template which will include creation of aws resources needed for your application to run including launching instance using your AMI id's for each region and the instance launch uses the ami from the corresponding region. This way your customers can just use the cloudformation template and all prerequisites will be met.
In terms of having your AMI ID in the cloud formation template and using it based on the region in which it is launched can be achieved using the Mappings section in Cloud formation. Hope that helps

Why some of most popular AMI are not available on all regions?

I'm new to AWS, we are using this RHEL AMI for our test environment, initially we wanted to use Canada region, but later figured out that our AIM is not available there for some reason, I wonder why? RHEL AMIs from amazon web services are not available in Canada not 7.x, nor 6.x versions, I guess technically it's not really a problem, so AWS is doing this because of policies of some sort?
An AMI is a regional resource in AWS, because it's tied to the region where its files are located within Amazon S3. However, if in need, you can copy an AMI from one region to another:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/CopyingAMIs.html
And more info about resource locations in AWS :
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/resources.html

How to maintain a client EC2 instance

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?

What's the difference between Amazon AMI and SaaS?

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.