AWS Technical Fundamentals
The AWS Technical Fundamentals course (AWS 110) is the introduction to Cloud Academy's comprehensive Amazon Web Services learning tracks series. While subsequent courses in this series will explore individual AWS service categories (like networking or data management) and broader skills (like design principles or application deployments), this course offers a brief summary of everything that AWS has to offer. Technical Fundamentals is also the introduction to the 100 level courses (the AWS Technical Foundation Track) which, in turn, lays the groundwork for our 200 series (intermediate level skills) and 300 series (advanced skills).
If you have thoughts or suggestions for this course, please contact Cloud Academy at email@example.com.
About the Author
Antonio is an IT Manager and a software and infrastructure Engineer with 15 years of experience in designing, implementing and deploying complex webapps.
He has a deep knowledge of the IEEE Software and Systems Engineering Standards and of several programming languages (Python, PHP, Java, Scala, JS).
Antonio has also been using and designing cloud infrastructures for five years, using both public and private cloud services (Amazon Web Services, Google Cloud Platform, Azure, Openstack and Vmware vSphere).
During his past working experiences, he designed and managed large web clusters, also developing a service orchestrator for providing automatic scaling, self-healing and a Disaster Recovery Strategy.
Antonio is currently the Labs Product Manager and a Senior DevOps Engineer at Cloud Academy; his main goal is providing the best learn-by-doing experience possible taking care of the Cloud Academy Labs platform.
Accessing AWS services. Now that you have a basic understanding of the AWS service categories, let's talk about the different ways you can access them. This list is not exhaustive, but covers most of the access methods, and we will come back to them in future courses with much greater detail.
But in short, there are six main ways of accessing AWS services. Namely through one, a graphical web interface. The AWS management console. Two, the AWS command line interface, CLI. Three, calling application programming interfaces, or API directly. Four, using AWS software development kits, SDK. Five, third party tools. And six, the AWS mobile application. Let's go through each of these in a little bit more detail. The most common way most users initially become familiar with AWS services is through the AWS management console.
The console is easy to use and can be accessed in a web browser from anywhere with an internet connection.
It also allows for graphical representations of your infrastructure, such as monitoring graphs or colorful status indicators. Most tasks can be completed using the console, but it does require a person to actually go through the steps manually. In other words, it's not the ideal tool for task automation or for applications to utilize AWS services directly. The AWS command line interface, CLI, is not quite as intuitive and easy to get started with as the management console. It can, however, be a quick and easy way to access services once you become familiar with its operation. It is also possible to automate many actions through scripts using the CLI. CLIs can be run on different operating systems, including Linux, Mac, and Windows, using PowerShell. All AWS services were created to be accessed through web services API calls over the HTTP protocol. This makes it possible for a user to send HTTP API requests directly to AWS to generate actions. This offers tremendous flexibility in terms of control and automation. However it is quite tiresome to manually create the HTTP calls, especially since you would have to sign them to ensure successful authentication.
For example, in Java, you can use the following to list all of your instances in the Singapore region as long as your AWS credentials, myAwsCredentials in this example, authorize you to do so. This snippet is adapted from the AWS SDK example code. Of course, for a real world application, you would add error handling and the like. But this example shows how few lines of code it takes to manage your AWS resources programmatically. Other SDKs require even less work to accomplish the same thing. Do not worry if this code looks alien or scary. It's something that will mainly appeal to software developers. In addition to the SDKs, AWS also freely provides two very helpful IDE, integrated development environment tool kits, for Eclipse and Visual Studio. These add-ons provide direct access to your AWS resources from within your IDE. As you can see from the screenshot, this tool kit allows the developer to directly access and interact with his or her AWS resources from within the integrated development environment itself. This helps to save time when developing new software, testing new features, and quickly prototyping test harnesses amongst other benefits. There are many third party tools that also allow you to interface with AWS services. Some are commercial applications from large, independent software vendors, ISVs. Others are custom-made for individual companies, or offered as open source applications. It is outside the scope of this technical introduction to cover this category completely. But a few examples may help illustrate the rich, third party application ecosystem that exists to help manage AWS services. Asgard is a tool originally built in-house by Netflix engineers to help manage their AWS infrastructure. Subsequently they made the tool available for anyone to use and contribute to, by releasing it to the open source community. Asgard allows for the automation and management of large AWS resource pools to reduce the time and effort taken to manage the infrastructure.
It allows you to manage not only your virtual machines, but database and other application level services as well. As it is designed to manage large infrastructure deployments, it also allows users to design applications and stacks to manage all the resources related to a specific application to be managed in a single place. For something a little bit more basic, there are web browser add-ins that make it possible to manage AWS resources inside a browser, but running locally on your machine as opposed to through a web interface. One example of this is the S3Fox organizer by Suchi software, a Firefox browser add-on, to help manage your S3 storage service from within your browser window. It has a user interface that will look familiar if you've used FTP style clients before. Your local files are in the left-hand pane, and the S3 service is on the right. The tool then allows you to copy files between the two, set permissions and so forth. These are just two examples of a wide range of tools for different purposes, and we will come back to highlight many more third party tools in future courses. Finally, AWS also provides two mobile phone apps for iOS and Android operating systems called AWS Console mobile app.
These apps provide a convenient way of managing your AWS resources when you do not have access to your computer, or just need to quickly check or configure something within your AWS account. They do not provide the full spectrum of functionality that you will have access to in the full AWS management console nor are all AWS services accessible. But it is quite comprehensive on the read-only operations, for most commonly used AWS resources.