We've been talking about a few different AWS resources as well as the AWS global infrastructure. You may be wondering, how do I actually interact with these services? The answer is APIs. In AWS, everything is an API call. An API is an application programming interface. What that means is, there are predetermined ways for you to interact with AWS services. You can invoke or call these APIs to provision, configure, and manage your AWS resources. For example, you can launch an EC2 instance, or you can create an AWS Lambda function. Each of those would be different requests and different API calls to AWS. You can use the AWS Management Console, the AWS Command Line Interface, the AWS Software Development Kits, or various other tools like AWS CloudFormation to create requests to send to AWS APIs to create and manage AWS resources. First, let's talk about the AWS Management Console. The AWS management console is browser-based. Through the console, you can manage your AWS resources visually and in a way that is easy to digest. This is great for getting started and building your knowledge of the services. It's also useful for building out test environments or viewing AWS bills, viewing, monitoring, and working with other non-technical resources. The AWS management console is most likely the first place you will go when you are learning about AWS. However, once you are up and running in a production type environment, you don't want to rely on the point and click style that the console gives you to create and manage your AWS resources. For example, in order to create an Amazon EC2 instance, you need to click through various screens, setting all the configurations you want, and then you launch your instance. If later you wanted to launch another EC2 instance, you would need to go back into the console and click through their screens again to get it up and running. By having humans do this manual provisioning, you're opening yourself up to potential errors. It's pretty easy to forget to check a check box or misspell something when you are doing everything manually. The answer to this problem is to use tools that allow you to script or program the API calls. One tool you can use is the AWS Command Line Interface, or CLI. The CLI allows you to make API calls using the terminal on your machine. This is different than the visual navigation style of the Management Console. Writing commands using the CLI makes actions scriptable and repeatable. So you can write and run your commands to launch an EC2 instance, and if you want to launch another, you can just run the prewritten command again. This makes it less susceptible to human error. You can have these scripts run automatically, like on a schedule or triggered by another process. Automation is very important to having a successful and predictable cloud deployment over time. Another way to interact with AWS is through the AWS Software Development Kits or SDKs. The SDKs allow you to interact with AWS resources through various programming languages. This makes it easy for developers to create programs that use AWS without using the low-level APIs, as well as avoiding that manual resource creation that we just talked about. More on that in a bit.