AWS Cloud9 is a cloud based development environment. And it solves a lot of problems that come up when developing with the cloud. There are similar environments for the Azure cloud or for the GCP cloud. And really they are all the same thing, which is you can develop inside the environment where your code will run. So in the case of Cloud9 what happens is inside of AWS, you can provision a virtual machine. And that virtual machine has several advantages to your laptop. One is the permissions. So you can actually assign it role based permissions. So you can talk to the APIs, you can communicate with other services without having to manage those keys. So from a security perspective, this solves a lot of problems. The second thing is that the traffic itself, so the network traffic is much faster because you're essentially opening up a shell inside of the actual location where you're communicating. If your laptop is on a spotty wireless connection somewhere it's going to have a lot of problems communicating. But if you open up an instance inside the actual environment that you're working in, you're literally communicating with the data in the place that it needs to be. The other thing is that there's deep integration to other services. And so that's really the other key aspect of something like Cloud9 is that you can deeply integrate with the cloud Lambda environment, which is a server-less capability. You can also deeply integrate with running command line tools. So in a nutshell, if you're developing for the cloud environment, most likely, you're going to have a much better experience using the native tools, in this case, AWS Cloud9. So let's go ahead and look at that next. To get started using AWS Cloud9, you'll need to log into your AWS account. Here we have the AWS Management Console, and I'll go ahead and find a service called Cloud9. I'll type in Cloud9 and this partial complete will give me the result. And from here, what I can do is create a new Cloud9 environment. So I'll go ahead and select Create environment. It's typically a good idea to give it some meaningful name. So in this case, we'll call this Cloud Computing For Data. And then I'll put a description, This is a demo environment. I'll go ahead to the next step here. A few things that are key to point out is that most likely the defaults are going to be good enough for you, especially if you're a student, and you can leave the defaults. That being said, I'll go ahead and point out a few of these key features. So the section here says Create a new EC2 instance. This allows you to actually launch a new virtual environment. There's some other advanced options here that you can also select. In terms of instance type, most of the time this free tier eligible t2 micro is a good choice if you're going through and developing things and making educational projects. Now that being said, one really awesome feature of Cloud9 is if I go ahead and I say other instance type here. I could decide that I want to use a really large machine. For example, let's say I wanted to test some parallel computing with a 72 core machine with maybe 144 Gigs of RAM. Most people don't have access to that type of a piece of hardware, but you can actually spin one up, be charged only by the time you use the instance and actually test some really expensive operation by doing this parallel computing. So that's one of the really key features of Cloud9 as well, is the ability to size up your instance to many different types. So again, I'm going to go through here and just pick the default. Also in terms of platform, it's probably a good idea to to leave the defaults in most situations. There's either Amazon Linux, Amazon Linux 2 or the feature, there could be Amazon Linux 3, or maybe something like Ubuntu server. A lot of times the defaults are going to give you the best experience when you're developing your project. In this particular case, I'm going to select Amazon Linux 2 because it contains a slightly newer version of Python. Another thing to point out is in terms of cost savings settings. The default settings are pretty good in that if you get out of your machine and you close the web browser, automatically, it'll hibernate, save all your settings and you won't be charged for those services. So this is a great feature as well. This is also a key thing to point out, is this IAM role, as mentioned earlier, one of the advantages to using AWS Cloud9 is that whatever account you're logged into, the roles will be linked for you. And so, what will happen is that you don't have to manage the keys for an API call, you'll be able to talk to services like S3 and copy data back and forth. So this is a really key issue that you get for free with Cloud9 environment. So once I go through here and I say next, it'll take, let's say 30 seconds to 45 seconds to spin this up. Now that AWS Cloud9 has spun up, let's kick the tires and go through the core features. The first thing to be aware of is this environment tab here on the left. And if you notice it says ~/environment. This means that if I do an ls there's only a readme file located, right? So this is the root of the drive. And if I type in pwd, or print working directory, you can see that this is where I want to do all my work, in home/ec2-user/environment. Next up, let me show you that it's got the AWS cloud tools already installed. So if I type in aws s3 ls, for example, I could list every single bucket that I have in my account. There we go, which is pretty useful. If I also wanted to copy data, I could just go through here and do it, aws s3 cp. So this is, really, an incredible feature that you get this command line tool with all the ways to talk to the rest of AWS for free. Another thing to be aware of here is that I can also upload and download files. So let's say I want to take this README file here and I want to download it, I can right click and select Download. And this will allow me to download it to my local machine. So this is a key feature and really a super useful thing that I can do if I want to work with data in this environment. Likewise, if I wanted to go through here and upload, I can also upload local files. Let's say it's a CSV file, or like a binary that I wanted to run inside this environment. Next, the other thing that I'll show you is that if you go to this tab on the right here, there's several really interesting features. First, it's collaborate. What this does is allows you to invite other people to your project and you can actually chat. So you can do pair programming in your project, this works really well for groups in a class, for example, or teammates in a particular company. And to do that, you can just go ahead and say Share here, and then invite someone to your particular account. So this is a really incredible feature that I've used before to debug things in production. If we go to the AWS Resources tab here next, this is another really incredible feature, is that I can actually create AWS Lambda functions natively inside of here. If I go ahead and I say, create a new Lambda function, it allows me to go through and say, newLambda or whatever I want to call this function. I can say next here, and then I can select from several runtimes that are preinstalled inside of this application environment, Nodejs, Python 3.6. And then from here I could actually select different blue prints and then configure application. So this deep integration, like I talked about before, is one of the key features of Cloud9, why? Typically it would be a good idea to start here versus your local laptop. Another thing to point out is that there's a rich debugger and you can put break points and debug your code. Another aspect as well, that we'll get into in a little bit is that, if let's say I want to create a basic Python file here called Hello, I can use the command touch which creates us an empty file. Okay, let's go ahead and edit this Hello file. And you can see that it's got syntax highlighting, and I could put in some statement, like main, return1, or whatever it is I want it to do. And it's going to automatically figure out what is the proper syntax of Python. So there's a lot of really powerful features that are included inside of here that give you the ability to directly build applications that are cloud native. And that's the key advantage of the Cloud9 environment.