Amazon AWS Command Line Interface (CLI)
This is a brief guide for installing AWS Command Line Interface (CLI) on Ubuntu Linux.
The AWS Command Line Interface (CLI)] is a unified tool to manage your AWS services. With just one tool to download and configure, you can control multiple AWS services from the command line and automate them through scripts. [2]
The point here is unified, one tool to run all Amazon AWS services.
Install
The installation procedure applies to Ubuntu Linux with Zsh and Bash.
Install pip, a Python package manager:
$ sudo apt-get install python-pip
Install awscli:
$ sudo pip install awscli
Install autocompletion:
$ which aws_zsh_completer.sh
/usr/local/bin/aws_zsh_completer.sh
$ source aws_zsh_completer.sh
Add this line to ~/.zshrc
as well.
Or for Bash ~/.bashrc
:
$ echo '\n# Enable AWS CLI autocompletion' >> ~/.bashrc
$ echo 'complete -C aws_completer aws' >> ~/.bashrc
$ source ~/.bashrc
Test installation:
$ which aws
/usr/local/bin/aws
$ aws help
Test autocompletion:
$ aws <tab><tab>
You should see a list of all available AWS commands.
Usage
Before using aws-cli, you need to tell it about your AWS credentials. There are three ways to specify AWS credentials:
- Environment variables
- Config file
- IAM Role
Using config file is preferred, which is a simple ini file format to be stored in ~/.aws/config
. A soft link can be used to link it or just tell awscli where to find it:
$ export AWS_CONFIG_FILE=/path/to/config_file
It is better to use IAM roles with any of the AWS services:
The final option for credentials is highly recommended if you are using aws-cli on an EC2 instance. IAM Roles are a great way to have credentials installed automatically on your instance. If you are using IAM Roles, aws-cli will find them and use them automatically. [4]
The default output is in JSON format. Other formats are tab-delimited text and ASCII-formatted table. For example, using --query
filter and table output:
$ aws ec2 describe-instances --query 'Reservations[*].Instances[*].{ \
ID:InstanceId, TYPE:InstanceType, ZONE:Placement.AvailabilityZone, \
SECURITY:SecurityGroups[0].GroupId, KEY:KeyName, VPC:VpcId, \
STATE:State.Name}' --output table
This will print a nice looking table of all EC2 instances.
The command line options also accept JSON format. But when passing in large blocks of data, referring a JSON file is much easier. Both local file and remote URL can be used.
Upgrade
Check the installed and the latest versions:
$ pip search awscli
Upgrade AWS CLI to the latest version:
$ sudo pip install --upgrade awscli