AWS CLI#

Amazon Virtual Private Cloud (Amazon VPC) enables you to launch AWS resources into a virtual network that you’ve defined. This virtual network closely resembles a traditional network that you’d operate in your own data center, with the benefits of using the scalable infrastructure of AWS.

CLI installation (Version 1)#

Install Python 3#

  • Python 2.7 is no longer supported. Please install python3

      sudo yum install python3
      pip3 --version
    

Profile Setup#

A named profile is a collection of settings and credentials that you can apply to a AWS CLI command. When you specify a profile to run a command, the settings and credentials are used to run that command.

  • ~/.aws/credentials

      [default]
      aws_access_key_id=your_aws_access_key_id
      aws_secret_access_key=your_aws_secret_access_key
    
  • ~/.aws/config

      [default]
      region=us-west-2
      output=json
    
  • The AWS CLI supports using any of multiple named profiles that are stored in the config and credentials files.

  • ~/.aws/credentials (Linux / Mac)

      [default]
      aws_access_key_id=your_aws_access_key_id
      aws_secret_access_key=your_aws_secret_access_key
    
      [user1]
      aws_access_key_id=your_aws_access_key_id
      aws_secret_access_key=your_aws_secret_access_key
    
  • ~/.aws/config (Linux & Mac)

      [default]
      region=us-west-2
      output=json
    
      [profile user1]
      region=us-east-1
      output=text
    

Samples#

EC2#

  • Get EC2 instances

      aws ec2 describe-instances \
      --filters "Name=instance-type,Values=t2.micro" \
      --query "Reservations[].Instances[].InstanceId"  \
      --profile user1
    
  • Stop EC2 instance

      aws ec2 stop-instances --instance-ids i-1234567890abcdef0
    
  • Find out all stopped micro EC2 instancs

      instances=($(aws ec2 describe-instances \
      --filters Name=instance-type,Values=t2.micro \
        Name=instance-state-name,Values=stopped \
      --query "Reservations[].Instances[].InstanceId"  \
      --profile ad1 --output text ))
    
      for i in $instances; do echo "$i" ; done;
    
  • Find out all unused security group

      comm -23  \
      <(aws ec2 describe-security-groups \
      --profile user1 --query 'SecurityGroups[*].GroupId' \
      --output text \
      | tr '\t' '\n'| sort) \
      <(aws ec2 describe-instances \
      --profile user1   --output text \
      --query 'Reservations[*].Instances[*].SecurityGroups[*].GroupId' \
      | tr '\t' '\n'  | sort | uniq)
    
  • Find security group by group name

      aws ec2  describe-security-groups  \
        --filters Name=group-name,Values=AD1_Web_Pub_SG  \
        --query="SecurityGroups[*].{ID:GroupId,Tags:Tags[*]}" \
        --profile user1 
    
  • Search security group by tags

      aws ec2  describe-security-groups \
        --query="SecurityGroups[*].{GroupName:GroupName,ID:GroupId,Tags:Tags[*]}" \
        --profile user1 | grep "your_group_name"
    
  • Search EC2 by specific tag value

      aws ec2 describe-instances \
        --filters "Name=tag-value,Values=AD1_DEV_Web_Pub_Host_A" \
        --profile user1 
    

S3#

  • List Buckets

      aws s3 ls --profile user1 
    
  • List content within the bucket

      aws s3 ls --profile user1 s3://your_bucket_name --recursive
    
  • Sync everything to curerent directory

      aws s3 sync --profile  user1 s3://your_bucket_name .
    
  • Copy local file to S3 bucket

      aws s3  cp --profile user1 file_name s3://your_bucket_name/file_name