How to install AWS CLI on Linux
How to Install AWS CLI on Linux
The Amazon Web Services Command Line Interface (AWS CLI) is an essential tool for developers, system administrators, and DevOps professionals working with AWS services. This comprehensive guide will walk you through the complete process of installing AWS CLI on Linux systems, from basic installation to advanced configuration and troubleshooting.
What You'll Learn
In this detailed tutorial, you'll discover:
- Multiple methods to install AWS CLI on various Linux distributions
- How to verify your installation and configure credentials
- Best practices for managing AWS CLI versions
- Common troubleshooting solutions and error fixes
- Advanced configuration techniques for professional workflows
Prerequisites and Requirements
Before beginning the AWS CLI installation process, ensure your system meets the following requirements:
System Requirements
- Operating System: Any modern Linux distribution (Ubuntu, CentOS, RHEL, Debian, Amazon Linux, etc.)
- Python: Python 3.6 or higher (for pip installation method)
- Memory: Minimum 512 MB RAM
- Disk Space: At least 100 MB free space
- Internet Connection: Required for downloading packages
User Permissions
- Root or sudo access for system-wide installation
- Regular user permissions for user-specific installation
Required Tools
Check if you have the following tools installed:
```bash
Check Python version
python3 --version
Check pip availability
pip3 --version
Check curl (for direct download method)
curl --version
Check unzip utility
unzip -v
```
Installation Methods Overview
AWS CLI can be installed on Linux using several methods:
1. AWS CLI Installer (Recommended) - Official installer bundle
2. Package Managers - Using distribution-specific package managers
3. pip Installation - Using Python package installer
4. Docker - Running AWS CLI in containers
5. Snap Package - Universal Linux package format
Let's explore each method in detail.
Method 1: Official AWS CLI Installer (Recommended)
The official AWS CLI installer is the most reliable and recommended method for installing AWS CLI v2 on Linux systems.
Step 1: Download the AWS CLI Installer
```bash
For x86_64 architecture
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
For ARM64 architecture (e.g., ARM-based EC2 instances)
curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip"
```
Step 2: Extract the Installer
```bash
unzip awscliv2.zip
```
Step 3: Run the Installation
```bash
System-wide installation (requires sudo)
sudo ./aws/install
Custom installation path
sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli
User-specific installation (no sudo required)
./aws/install -i ~/.local/aws-cli -b ~/.local/bin
```
Step 4: Verify Installation
```bash
aws --version
```
Expected output:
```
aws-cli/2.x.x Python/3.x.x Linux/x.x.x exe/x86_64.distro
```
Step 5: Clean Up Installation Files
```bash
rm -rf aws awscliv2.zip
```
Method 2: Package Manager Installation
Ubuntu/Debian Systems
Using apt Package Manager
```bash
Update package index
sudo apt update
Install AWS CLI
sudo apt install awscli
Verify installation
aws --version
```
Using snap (Ubuntu)
```bash
Install AWS CLI via snap
sudo snap install aws-cli --classic
Verify installation
aws --version
```
CentOS/RHEL/Fedora Systems
Using yum (CentOS 7/RHEL 7)
```bash
Install EPEL repository
sudo yum install epel-release
Install AWS CLI
sudo yum install awscli
Verify installation
aws --version
```
Using dnf (Fedora/CentOS 8+/RHEL 8+)
```bash
Install AWS CLI
sudo dnf install awscli
Verify installation
aws --version
```
Amazon Linux
```bash
Amazon Linux 2
sudo yum install awscli
Amazon Linux 2023
sudo dnf install awscli
```
Method 3: pip Installation
Installing with pip3
```bash
Install for current user
pip3 install awscli --user
System-wide installation
sudo pip3 install awscli
Install specific version
pip3 install awscli==2.x.x --user
```
Adding to PATH (User Installation)
If you installed AWS CLI with `--user` flag, add the following to your shell profile:
```bash
Add to ~/.bashrc or ~/.zshrc
export PATH=$PATH:~/.local/bin
Reload your shell configuration
source ~/.bashrc
```
Method 4: Docker Installation
Running AWS CLI in Docker
```bash
Pull the official AWS CLI Docker image
docker pull amazon/aws-cli
Run AWS CLI commands
docker run --rm -it amazon/aws-cli --version
Create an alias for easier usage
echo 'alias aws="docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli"' >> ~/.bashrc
source ~/.bashrc
```
Initial Configuration
After successful installation, configure AWS CLI with your credentials and preferences.
Basic Configuration
```bash
aws configure
```
You'll be prompted to enter:
- AWS Access Key ID: Your access key
- AWS Secret Access Key: Your secret key
- Default region name: e.g., us-east-1
- Default output format: json, yaml, text, or table
Configuration Files
AWS CLI stores configuration in two files:
- `~/.aws/credentials` - Contains access keys
- `~/.aws/config` - Contains configuration settings
Multiple Profiles
Set up multiple profiles for different AWS accounts or roles:
```bash
Configure a named profile
aws configure --profile production
Use a specific profile
aws s3 ls --profile production
Set default profile
export AWS_PROFILE=production
```
Environment Variables
Configure AWS CLI using environment variables:
```bash
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_DEFAULT_REGION=us-east-1
export AWS_DEFAULT_OUTPUT=json
```
Verification and Testing
Test Basic Functionality
```bash
List S3 buckets
aws s3 ls
Get caller identity
aws sts get-caller-identity
List EC2 instances
aws ec2 describe-instances
Check AWS CLI help
aws help
```
Version Management
```bash
Check current version
aws --version
List installed versions (if multiple)
ls -la /usr/local/bin/aws*
```
Updating AWS CLI
Updating Official Installer Version
```bash
Download latest version
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
Update installation
sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
Clean up
rm -rf aws awscliv2.zip
```
Updating Package Manager Versions
```bash
Ubuntu/Debian
sudo apt update && sudo apt upgrade awscli
CentOS/RHEL
sudo yum update awscli
Fedora
sudo dnf update awscli
```
Updating pip Versions
```bash
Update to latest version
pip3 install --upgrade awscli --user
Update system-wide
sudo pip3 install --upgrade awscli
```
Common Issues and Troubleshooting
Issue 1: Command Not Found
Problem: `aws: command not found` after installation
Solutions:
```bash
Check if AWS CLI is in PATH
echo $PATH
Find AWS CLI location
which aws
whereis aws
Add to PATH manually
export PATH=$PATH:/usr/local/bin
echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc
```
Issue 2: Permission Denied
Problem: Permission errors during installation
Solutions:
```bash
Use sudo for system-wide installation
sudo ./aws/install
Or install for current user only
./aws/install -i ~/.local/aws-cli -b ~/.local/bin
```
Issue 3: SSL Certificate Errors
Problem: SSL certificate verification failures
Solutions:
```bash
Update CA certificates
sudo apt update && sudo apt install ca-certificates
For CentOS/RHEL
sudo yum update ca-certificates
Temporary workaround (not recommended for production)
aws configure set default.ca_bundle /etc/ssl/certs/ca-certificates.crt
```
Issue 4: Python Version Conflicts
Problem: Incompatible Python versions
Solutions:
```bash
Check Python version
python3 --version
Install specific Python version (Ubuntu)
sudo apt install python3.8 python3.8-pip
Use specific pip version
python3.8 -m pip install awscli --user
```
Issue 5: AWS CLI v1 vs v2 Conflicts
Problem: Multiple versions causing conflicts
Solutions:
```bash
Remove AWS CLI v1
pip3 uninstall awscli
Check for multiple installations
which -a aws
Remove old installations
sudo rm /usr/local/bin/aws
sudo rm -rf /usr/local/aws-cli
```
Issue 6: Configuration Errors
Problem: Invalid credentials or configuration
Solutions:
```bash
Reconfigure AWS CLI
aws configure
Check configuration
aws configure list
Test credentials
aws sts get-caller-identity
Debug with verbose output
aws s3 ls --debug
```
Best Practices and Professional Tips
Security Best Practices
1. Use IAM Roles: When possible, use IAM roles instead of access keys
2. Rotate Credentials: Regularly rotate access keys
3. Principle of Least Privilege: Grant minimal required permissions
4. Secure Storage: Protect credential files with appropriate permissions
```bash
Set secure permissions for credential files
chmod 600 ~/.aws/credentials
chmod 600 ~/.aws/config
```
Performance Optimization
1. Configure Output Format: Use appropriate output format for your use case
2. Use Pagination: Handle large result sets efficiently
3. Enable CLI Pager: For better output readability
```bash
Configure CLI pager
aws configure set cli_pager less
Disable pager
aws configure set cli_pager ""
```
Automation and Scripting
1. Use Profiles: Organize multiple AWS accounts
2. Environment Variables: Use for CI/CD pipelines
3. Error Handling: Implement proper error handling in scripts
```bash
#!/bin/bash
Example script with error handling
if ! aws sts get-caller-identity > /dev/null 2>&1; then
echo "AWS credentials not configured properly"
exit 1
fi
echo "AWS CLI is properly configured"
```
Version Management
1. Pin Versions: Use specific versions in production
2. Test Updates: Test CLI updates in non-production environments
3. Documentation: Document CLI version requirements
Advanced Configuration
Custom Configuration Settings
```bash
Set custom configuration options
aws configure set default.region us-west-2
aws configure set default.output table
aws configure set default.cli_pager less
Configure retry settings
aws configure set max_attempts 10
aws configure set retry_mode adaptive
```
Using Configuration Files Directly
Edit `~/.aws/config`:
```ini
[default]
region = us-east-1
output = json
cli_pager = less
[profile production]
region = us-west-2
output = table
role_arn = arn:aws:iam::123456789012:role/ProductionRole
source_profile = default
```
Command Completion
Enable command completion for better productivity:
```bash
For bash
echo 'complete -C aws_completer aws' >> ~/.bashrc
For zsh
echo 'autoload bashcompinit && bashcompinit && complete -C aws_completer aws' >> ~/.zshrc
```
Integration with Development Workflows
IDE Integration
Most modern IDEs support AWS CLI integration:
- VS Code: AWS Toolkit extension
- IntelliJ: AWS Toolkit plugin
- Vim: AWS CLI integration plugins
CI/CD Integration
```yaml
Example GitHub Actions workflow
name: Deploy to AWS
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Deploy to S3
run: aws s3 sync . s3://my-bucket/
```
Monitoring and Logging
Enable CloudTrail Logging
```bash
Create CloudTrail for API call logging
aws cloudtrail create-trail --name my-trail --s3-bucket-name my-logs-bucket
```
CLI History and Logging
```bash
Enable CLI history
aws configure set cli_history enabled
View command history
aws history list
```
Uninstalling AWS CLI
Remove Official Installer Version
```bash
Remove AWS CLI v2
sudo rm /usr/local/bin/aws
sudo rm /usr/local/bin/aws_completer
sudo rm -rf /usr/local/aws-cli
```
Remove Package Manager Versions
```bash
Ubuntu/Debian
sudo apt remove awscli
CentOS/RHEL
sudo yum remove awscli
Fedora
sudo dnf remove awscli
```
Remove pip Versions
```bash
Remove user installation
pip3 uninstall awscli
Remove system-wide installation
sudo pip3 uninstall awscli
```
Conclusion and Next Steps
You have successfully learned how to install, configure, and troubleshoot AWS CLI on Linux systems. The AWS CLI is now ready for managing your AWS resources efficiently from the command line.
Key Takeaways
- The official AWS CLI installer is the recommended installation method
- Multiple installation methods provide flexibility for different environments
- Proper configuration and security practices are essential
- Regular updates and maintenance ensure optimal performance
Next Steps
1. Explore AWS Services: Start using AWS CLI with various AWS services
2. Automation: Create scripts to automate common tasks
3. Advanced Features: Learn about AWS CLI plugins and extensions
4. Integration: Integrate AWS CLI into your development workflow
5. Documentation: Explore the comprehensive AWS CLI documentation
Additional Resources
- [AWS CLI Official Documentation](https://docs.aws.amazon.com/cli/)
- [AWS CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/)
- [AWS CLI GitHub Repository](https://github.com/aws/aws-cli)
- [AWS CLI User Guide](https://docs.aws.amazon.com/cli/latest/userguide/)
With AWS CLI properly installed and configured, you're ready to efficiently manage your AWS infrastructure from the command line, automate deployments, and integrate AWS services into your development workflows.