top of page
Search
  • Writer's pictureNaresh Padiyar

AWS CLI Cheatsheet

1. Command to export EC2 Details in CSV Format


Create the Excel file with Headers

echo -e "InstanceID\tInstanceType\tImageId\tCoreCount\tState\tLaunchTime\tAvailabilityZone\tPrivateIpAddress\tPrivateDnsName\tPublicDnsName\tVpcId\tSubnetId\tApplication" >ec2_details.tsv

Export AWS data in the Excel File

aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[InstanceId, InstanceType, ImageId, CpuOptions.CoreCount, State.Name, LaunchTime, Placement.AvailabilityZone, PrivateIpAddress, PrivateDnsName, PublicDnsName, VpcId, SubnetId, [Tags[?Key==`Name`].Value] [0][0] ]' >>ec2_details.tsv


2. List all EC2 instances in all ECS Cluster from AWS account

aws ecs list-clusters

aws ecs list-container-instances --cluster <cluster-name>

aws ecs describe-container-instances --cluster <cluster-name> --container-instances <cluster-arn> --query 'containerInstances[*].ec2InstanceId' --output text

3. Command to find Over-Provisioned and Under-Provisioned EC2 instances


aws compute-optimizer get-recommendation-summaries --region ap-south-1 --query 'recommendationSummaries[?(recommendationResourceType==`Ec2Instance`)].summaries[]'


aws compute-optimizer get-ec2-instance-recommendations --region ap-south-1 --filters name=Finding,values=Underprovisioned,Overprovisioned --query 'instanceRecommendations[*].instanceArn'

aws compute-optimizer get-ec2-instance-recommendations --region ap-south-1 --filters name=Finding,values=Overprovisioned --query 'instanceRecommendations[*].instanceArn'


4. List all VPC’s in the region

aws ec2 --output text --query 'Vpcs[*].{VpcId:VpcId,Name:Tags[?Key==`Name`].Value|[0],CidrBlock:CidrBlock}' describe-vpcs


5. List Unused ELB’s


for i in `aws elb describe-load-balancers|sed -ne 's/"LoadBalancerName": "\(.*\)",/\1/gp'`; do echo -n "$i "; aws elb describe-load-balancers --load-balancer-name $i|grep -c InstanceId;done


6. List Details of all RDS instances


aws rds describe-db-instances | jq -rM '.DBInstances[]|[.DBInstanceIdentifier,.Endpoint.Address,.Engine,.EngineVersion,.MultiAZ,.AvailabilityZone,.SecondaryAvailabilityZone,.DBInstanceStatus,.DBInstanceClass,.StorageType,.BackupRetentionPeriod,.ReadReplicaDBInstanceIdentifiers[]]|@csv'


7. List RDS Cluster Details


aws rds describe-db-clusters | jq -rM '.DBClusters[]|[.DBClusterIdentifier,.Engine,.EngineVersion,.Endpoint,.ReaderEndpoint,.MultiAZ]|@csv'

8. List RDS Automated Backups


aws rds describe-db-instance-automated-backups | jq -rM '.DBInstanceAutomatedBackups[]|[.DBInstanceIdentifier,.Status,.Engine,.EngineVersion,.Encrypted,.StorageType,.AllocatedStorage,.RestoreWindow[]]|@csv'


9. AWS Script to List Redis Cluster Details:

#!/bin/bash

aws elasticache describe-replication-groups | jq -rM '.ReplicationGroups[].ReplicationGroupId' >REDIS_LIST

echo "REDIS_INSTANCE,Engine,EngineVersion,CacheClusterStatus,CacheNodeType,Numberofnodes,Numberofshards,EncryptionAtRest,EncryptionInTransit,ConfigurationEndpoint,ConfigurationPort,AutomaticFailover,Description" >Redis.csv

cat REDIS_LIST | while read REDIS_INSTANCE; do

Engine=`aws elasticache describe-cache-clusters | jq --arg clusterid ${REDIS_INSTANCE} '.CacheClusters[] | select(.CacheClusterId | startswith($clusterid))' | jq .Engine | uniq | tr -d '\n'`

EngineVersion=`aws elasticache describe-cache-clusters | jq --arg clusterid ${REDIS_INSTANCE} '.CacheClusters[] | select(.CacheClusterId | startswith($clusterid))' | jq .EngineVersion | uniq | tr -d '\n'`

CacheClusterStatus=`aws elasticache describe-cache-clusters | jq --arg clusterid ${REDIS_INSTANCE} '.CacheClusters[] | select(.CacheClusterId | startswith($clusterid))' | jq .CacheClusterStatus | uniq | tr -d '\n'`

CacheNodeType=`aws elasticache describe-replication-groups --replication-group-id ${REDIS_INSTANCE} | jq -rM '.ReplicationGroups[].CacheNodeType' | tr -d '\n'`

Numberofnodes=`aws elasticache describe-replication-groups --replication-group-id ${REDIS_INSTANCE} | jq -rM '.ReplicationGroups[]|[.MemberClusters[]] | length' | tr -d '\n'`

Numberofshards=`aws elasticache describe-replication-groups --replication-group-id ${REDIS_INSTANCE} | jq -rM '.ReplicationGroups[]|[.NodeGroups[].NodeGroupId] | length' | tr -d '\n'`

EncryptionAtRest=`aws elasticache describe-cache-clusters | jq --arg clusterid ${REDIS_INSTANCE} '.CacheClusters[] | select(.CacheClusterId | startswith($clusterid))' | jq .AtRestEncryptionEnabled | uniq | tr -d '\n'`

EncryptionInTransit=`aws elasticache describe-cache-clusters | jq --arg clusterid ${REDIS_INSTANCE} '.CacheClusters[] | select(.CacheClusterId | startswith($clusterid))' | jq .TransitEncryptionEnabled | uniq | tr -d '\n'`

ConfigurationEndpoint=`aws elasticache describe-replication-groups --replication-group-id ${REDIS_INSTANCE} | jq -rM '.ReplicationGroups[].ConfigurationEndpoint.Address' | tr -d '\n'`

ConfigurationPort=`aws elasticache describe-replication-groups --replication-group-id ${REDIS_INSTANCE} | jq -rM '.ReplicationGroups[].ConfigurationEndpoint.Port' | tr -d '\n'`

AutomaticFailover=`aws elasticache describe-replication-groups --replication-group-id ${REDIS_INSTANCE} | jq -rM '.ReplicationGroups[].ClusterEnabled' | tr -d '\n'`

Description=`aws elasticache describe-replication-groups --replication-group-id ${REDIS_INSTANCE} | jq -rM '.ReplicationGroups[].Description' | tr -d '\n'`

echo "${REDIS_INSTANCE},${Engine},${EngineVersion},${CacheClusterStatus},${CacheNodeType},${Numberofnodes},${Numberofshards},${EncryptionAtRest},${EncryptionInTransit},${ConfigurationEndpoint},${ConfigurationPort},${AutomaticFailover},${Description}" >>Redis.csv

done


10. List Load Balancers


List All Clasic Loadbalancers

echo "ELB_NAME,DNS,VPCID,Avalibilty_Zones,Subnet_ID,Security_Group" >elbv1.csv

aws elb describe-load-balancers | jq -rM '.LoadBalancerDescriptions[]|[.LoadBalancerName,.DNSName,.VPCId,.AvailabilityZones[],.Subnets[],.SecurityGroups[]]|@csv' >>elbv1.csv


11. List All Application and Network Loadbalancers's

echo "ELB_NAME,DNS,ARN,TYPE,VPCID,Avalibilty_Zones,Subnet_ID" >elbv2.csv

aws elbv2 describe-load-balancers | jq -rM '.LoadBalancers[]|[.LoadBalancerName,.DNSName,.LoadBalancerArn,.Type,.VpcId,.AvailabilityZones[].ZoneName,.AvailabilityZones[].SubnetId]|@csv' >>elbv2.csv


12. List target group details


#!/bin/bash

cat elbv2.csv | while read LINE; do

LB_ARN=`echo ${LINE} | awk -F "," '{ print $3 }' | tr -d '"'`

echo $LB_ARN

if [ -z `echo $LB_ARN | grep arn` ]

then

LB_ARN="null"

fi

echo $LB_ARN

aws elbv2 describe-target-groups --load-balancer-arn ${LB_ARN} | jq -rM '.TargetGroups[]|[.TargetGroupName,.TargetGroupArn,.VpcId,.HealthCheckPath,.LoadBalancerArns[]]|@csv' >>tg.csv

done


13. List Autoscaling group details

aws autoscaling describe-auto-scaling-groups | jq -rM '.AutoScalingGroups[]|[.AutoScalingGroupName,.AutoScalingGroupARN,.MixedInstancesPolicy.LaunchTemplate.LaunchTemplateSpecification.LaunchTemplateId,.MixedInstancesPolicy.LaunchTemplate.LaunchTemplateSpecification.LaunchTemplateName,.TargetGroupARNs[],.VPCZoneIdentifier,.AvailabilityZones[]]|@csv' >asg.csv


14. List Launch Congiguration details


aws autoscaling describe-launch-configurations | jq -rM '.LaunchConfigurations[]|[.LaunchConfigurationName,.LaunchConfigurationARN,.ImageId,.KeyName,.InstanceType,.SecurityGroups[]]|@csv' >>launchconf.csv

15. List ASG Name with Min, Max, Desired, HealthCheckType and HealthCheckGracePeriod


echo "AutoScalingGroupName,MinSize,MaxSize,DesiredCapacity,HealthCheckType,HealthCheckGracePeriod" >asg.csv

aws autoscaling describe-auto-scaling-groups | jq -rM '.AutoScalingGroups[]|[.AutoScalingGroupName,.MinSize,.MaxSize,.DesiredCapacity,.HealthCheckType,.HealthCheckGracePeriod]|@csv' >>asg.csv

16. List ECS Cluster Task DesiredCount and healthCheckGracePeriodSeconds


aws ecs list-services --cluster zee5-cpapi-prod

aws ecs describe-services --cluster zee5-cpapi-prod --services zee5-cpapi-prod-ecs-service | jq -rM '.services[]|[.desiredCount,.healthCheckGracePeriodSeconds]|@csv'


17. Find CPU and Memory Limit from task definition

aws ecs list-task-definitions | grep zee5-cpapi-prod | sort -r | head -1

aws ecs describe-task-definition --task-definition "arn:aws:ecs:ap-south-1:413362797619:task-definition/zee5-cpapi-prod:49" | jq -rM .taskDefinition.cpu,.taskDefinition.memory | tr '\n' ','

18. List ECS cluster min max tasks

aws ecs describe-capacity-providers --capacity-providers zee5-cpapi-prod | jq -rM '.capacityProviders[]|[.autoScalingGroupProvider.managedScaling[]]|@csv'

19. Create a Tab Separated Spread Sheet containing EC2 Instance Details.

Create the Excel file with Headers

echo -e "InstanceID\tInstanceType\tImageId\tCoreCount\tState\tLaunchTime\tAvailabilityZone\tPrivateIpAddress\tPrivateDnsName\tPublicDnsName\tVpcId\tSubnetId\tApplication" >ec2_details.tsv

20. Export AWS data in the Excel File

aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[InstanceId, InstanceType, ImageId, CpuOptions.CoreCount, State.Name, LaunchTime, Placement.AvailabilityZone, PrivateIpAddress, PrivateDnsName, PublicDnsName, VpcId, SubnetId, [Tags[?Key==`Name`].Value] [0][0] ]' >>ec2_details.tsv

40 views0 comments

Recent Posts

See All

Cronitor API Examples

List All CronJobs and their code curl -X GET https://cronitor.io/v2/monitors -u <API Token>: | jq curl -X GET https://cronitor.io/v2/monitors -u <API Token>: | jq . | jq '.monitors' | jq -c --raw-outp

Docker Command Cheatsheet

To build a docker image from Dockerfile docker build To pull a docker image docker pull To run a docker image docker run Find docker version docker version docker -v Find docker installation details

bottom of page