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