AWS CloudShell — Finally!

While exploring my passion and interest for cloud computing, I have tried and learnt AWS, Microsoft Azure and Google Cloud Platform. I started off on AWS and learnt how to use the AWS Management Console and AWS CLI. However, when I went to learn Azure and GCP, I realised a very glaring feature that AWS lacked. Azure and GCP each had their respective Cloud Shells, which were very useful. GCP had a cloud shell since its birth if I am not mistaken. This was something I was quite surprised at since I felt that the cloud shell was an amazing feature that helps simplify a lot of things from the AWS CLI.
This week I was reading the AWS News Blog as to see what’s new and happening when I saw an article by Jeff Barr on the release of AWS CloudShell. To me, it was like a “finally!” moment and I immediately wanted to try it out for myself. I will write briefly about AWS CloudShell as well as my own experience using it in this blog.
AWS CloudShell
There are many ways to interact with AWS resources. You can use the management console, the CLI, IaC (Infrastructure as Code), Terraform and many other methods. However, the CLI requires setting up using IAM access keys, public keys and the sort.
This is where AWS CloudShell comes in to save you that trouble. CloudShell is essentially an AWS CLI terminal running on an environment in AWS itself. It is easy to use, simple and very secure, with all your credentials already configured natively without you needing to do it yourself. The environment comes built-in with Python and Node runtimes, with plans to include more in the future.

The shell environment uses Amazon Linux 2 and provides 1GB of file storage per region in the home directory which is persistent and will be available even after you close and reopen a new environment. There is even an IAM role for CloudShell, which is AWSCLoudShellFullAccess
. For those who have used Azure and GCP CloudShells, it is a somewhat similar concept.

CloudShell can be accessed from the icon at the top right corner, similar to Azure.
CloudShell Features
AWS CloudShell comes with quite a few interesting features, some for customization, some for ease of access and others for general AWS use.
CloudShell allows you to change and customize your theme and display preferences to suit your needs and likes. This allows you to choose the most comfortable layout and configuration to use AWS CloudShell with.

AWS CloudShell also allows you to create multiple sessions using tabs that can split horizontally or vertically. CloudShell offers very flexible layouts that you can use to maximize your productivity and see all the information you need at the same time. The below two examples are just 2 of the many different layouts you can create.


Furthermore, you can also transfer files from your shell environment to your desktop and vice versa very easily as well. This way, you can import all your existing scripts into AWS CloudShell to be used.
Each CloudShell session also lasts about 20 minutes of inactivity before it times out. Files stored in the home directory persist between sessions of CloudShell. You can store a max of 1GB per region. However, any data not stored in the home directory is ephemeral and will disappear after you close and reopen a new CloudShell environment.
Current Limitations
As CloudShell is still newly released, there are a few limitations present.
Firstly, you can only open up to 10 concurrent shells in each region. This is a huge number but is still a limitation to those who will use more than 10 for whatever reason.
CloudShell sessions can communicate with the Internet using outbound traffic, but do not permit any inbound connections. Resources in private subnets are also unaccessible using CloudShell.
CloudShell is only available in US East (Virginia), US East (Ohio), US West (Oregon), Europe (Ireland) and the Asia Pacific (Tokyo) regions as of now. Hence, I was unable to try it out in my default region of Singapore. However, there are plans to expand to all regions in due time.
Lastly, AWS CloudShell currently only comes prepackaged with Node, Python, Bash, Powershell, jq, git, ECS CLI, SAM CLI, npm and pip. Other packages and runtimes will have to be manually added by you as of now.
CloudShell in Action
I decided to mess around with CloudShell on my own and see how it works. As CloudShell is not available in my region of Singapore, I changed to us-east-1
to test this out. Hence, there are no resources launched in this region.

Here I ran a simple describe-instances
command after launching my CloudShell environment. You do not see any resources as I have not deployed any in us-east-1
but as you can see it works similarly to your own command line, without the need to run aws configure
. After opening a CloudShell session, the aws
command is already ready to use and all your credentials are already automatically configured.
This makes it quick and easy to access a CLI for managing your AWS resources. I am looking forward to CloudShell becoming more developed and available in all regions soon!