- Pip install Boto3 - Thu, Mar 24 2022
- Install Boto3 (AWS SDK for Python) in Visual Studio Code (VS Code) on Windows - Wed, Feb 23 2022
- Automatically mount an NVMe EBS volume in an EC2 Linux instance using fstab - Mon, Feb 21 2022
Amazon was the pioneer in cloud computing, and until today it is by far the biggest cloud provider in number of services and also in number of customers. In my post about the growth rate of Amazon’s cloud, I outlined why I believe that any IT pro should have at least a basic understanding of AWS.
Amazon Web Services
This series is especially dedicated to Windows admins. Whenever possible, I will try to relate the service to the Windows-based, on-premises world. You will only need to know the common IT concepts that every Windows admin should know. However, the more we advance in the series, the more I will stick to Amazon’s terminology.
I think many Windows admins underestimate the power of AWS because the name appears to indicate that Amazon is just another web hoster. It is true that most of the AWS customers are web startups, and many of the services are indeed web services in the sense that they rely on the HTTP protocol. However, after you have read this series, you will have to acknowledge that AWS offers everything you need to move your complete IT to the cloud. I believe if Bezos renamed AWS to ACS (Amazon Cloud Services), Amazon’s cloud could grow a magnitude faster. Names are not sound and smoke.
Two of the services discussed today, Elastic Compute Cloud (EC2) and WorkSpaces, have little to do with the World Wide Web, whereas the third service, Elastic Beanstalk, is probably mostly used for web applications.
Please notice that I can only give a very brief description of the services in this general overview. Many of Amazon’s cloud offerings are so complex that each of them can easily fill a book.
Elastic Compute Cloud (EC2) ^
Elastic Compute Cloud (EC2) is a server virtualization solution that can be considered as the core of Amazon’s cloud infrastructure. Many of Amazon’s cloud services depend on EC2, which is based on the Xen hypervisor.
Amazon Machine Images (AMI) are available for many important operating systems: Windows Server 2003 R2, 2008, 2008 R2, and 2012 (no R2 yet); all popular Linux distributions (Ubuntu, Red Hat, SUSE, CentOS, Debian); and FreeBSD. You can launch and manage EC2 instances (virtual machines) through the AWS Management Console (a powerful web interface for most of the AWS services), the AWS Command Line Tools, the AWS Tools for Windows PowerShell, the EC2 API, a few other AWS services (discussed in this series), and third-party tools.
You can create your own AMIs, which are essentially OS images, and then “clone” these images to deploy as many EC2 instances as you need with this particular configuration. EC2 ensures that these instances have different IP addresses, host names, etc. You can also share your AMIs with other AWS users.
To launch an EC2 instance, you simply choose the AMI, the instance type (the virtual hardware parameters), and a few other settings, such as the security group (firewall settings), the region, and the Availability Zone (one of the Amazon data centers around the globe). Depending on the instance type, you will be charged an hourly rate. Once you stop your instance, you only pay for the storage costs, which are negligible compared to compute costs. Rates lie between a few cents to a few dollars per hour. If you commit for a longer time by buying so-called Reserved Instances, you can reduce your costs significantly.
Choose an Amazon Machine Image (AMI)
Perhaps the biggest advantage of EC2 over other cloud-based server virtualization solutions is the huge ecosystem of third-party providers who offer EC2 instances with preinstalled software. Since you can also run virtual machines with preinstalled Microsoft server solutions such as Windows Server, SQL Server, and SharePoint, Microsoft can be considered a part of the ecosystem and an Amazon partner.
The hourly rate is often a bit higher than for Amazon’s images, which corresponds to the software licensing costs in on-premises computing. The good thing, from an admin’s point of view, is that software licensing management is tremendously simplified this way. Have a look at the AWS Marketplace to get an idea how big this cloud ecosystem has become.
WorkSpaces is Amazon’s latest new service. It is a Virtual Desktop Infrastructure (VDI) solution for the cloud. At the moment, the service is only available as a limited preview. Amazon provides a VDI client that runs on Windows, iPad, Kindle Fire, and Android tablets. The virtual desktops run Windows 7 provided by Windows Server 2008 R2 with Remote Desktop Services.
However, WorkSpaces doesn’t use RDP and RemoteFX; instead, Amazon licensed Teradici’s PCoIP protocol. VMware admins will be familiar with PCoIP. It is interesting to note that the WorkSpaces client provides features, such as an on-screen keyboard, that enable users with touch-based client devices to work with Windows 7.
Amazon’s VDI service comes in different hardware and software configurations, which Amazon calls bundles. The smallest machine has 1 vCPU, 3.75GB memory, and 50GB user storage; the biggest has 2 vCPUs, 7.5GB memory, and 100GB user storage. Some of the bundles have Office 2010 and Trend Micro antivirus software installed. However, you are free to install your own software and you can create your own baseline images.
WorkSpaces syncs the My Documents folder between the user’s virtual desktop and other computers. In addition, Amazon creates automatic backups to S3 (one of Amazon’s storage services); however, users and admins of your organization can’t use them for restores. Their only purpose is for disaster recovery in case of a hardware failure.
You can use WorkSpaces with Virtual Public Cloud (VPC)—Amazon’s VPN service (discussed in a later post)—which allows you to integrate the virtual desktops in your on-premises Active Directory and manage them as if they were in your data center. Prices range from $35 to $75 per month and per desktop/named user.
Elastic Beanstalk ^
Elastic Beanstalk is Amazon’s Platform as a Service (PaaS). I included Elastic Beanstalk in this part of my AWS series because, like EC2 and WorkSpaces, you use this service to run your own applications in the cloud.
Beanstalk supports Apache HTTP Server for Node.js, PHP and Python, Passenger for Ruby, IIS 7.5 for .NET, and Apache Tomcat for Java. You can upload your .NET application directly to S3 from Visual Studio and your Java application from Eclipse. For the other languages, you can use Git.
In the AWS Management Console, you determine what EC2 instance types your application will use. That is, you configure how powerful your virtual machines are. Beanstalk supports Auto Scaling (discussed in a later post) and allows you to configure the minimum and maximum number of instances it will use for your application. Depending on the load your application generates, Auto Scaling will automatically launch or terminate instances.
Elastic Beanstalk Monitoring
Amazon’s Elastic Load Balancing feature (discussed later) ensures that the load is distributed evenly among instances. With CloudWatch (later), you can monitor your Beanstalk application and collect, analyze, and view system and application metrics.
You will be charged for the EC2 and S3 resources (one of Amazon’s storage services, covered in my next post) you use. In addition, you pay for Elastic Load Balancing and bandwidth usage. Thus, your costs depend on the load your application generates.