вторник, 12 декабря 2017 г.

AWS. Наборчик запросов для разных случаев

INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
AVZONE=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone);

REGION=${AVZONE::-1}

REGION=$(curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | grep region | awk -F\" '{print $4}')

PRIV_IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)

Получить VpcID в которой эта EC2 работает:
aws ec2 describe-instances --instance-ids EC2_ID --region REGION --query "Reservations[0].Instances[0].VpcId"

Получить список InstanceId по тэгам Name=httpfront-01 и Environment=dev:
aws ec2 describe-instances --region eu-west-2 --filters "Name=tag-key,Values=Name" "Name=tag-value,Values=httpfront-0?" "Name=tag-key,Values=Environment" "Name=tag-value,Values=dev"  --query "Reservations[].Instances[].InstanceId" --output text

Тоже но получить только имена из тэгов:
aws ec2 describe-instances --region eu-west-2 --filters "Name=tag-key,Values=Name" "Name=tag-value,Values=httpfront-0?" "Name=tag-key,Values=Environment" "Name=tag-value,Values=dev"  --query "Reservations[].Instances[].Tags[?Key=='Name'].Value[]"

Получить CIDR приватный подсеток в VPC, где находится EC2:
SUBNETS=$(aws ec2 describe-subnets --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*-Private-*" --region $REGION --query "Subnets[].CidrBlock" --output text)

Список лимитов по регионам: (взято здесь https://alestic.com/2013/12/ec2-account-attributes/)
regions=$(aws ec2 describe-regions --output text --query 'Regions[*].RegionName')
attributes="max-instances max-elastic-ips vpc-max-elastic-ips"
for region in $regions; do
  echo; echo "region=$region"
  aws ec2 describe-account-attributes --region $region --attribute-names $attributes --output text --query 'AccountAttributes[*].[AttributeName,AttributeValues[0].AttributeValue]' |
    tr '\t' '=' | sort
done

Список инстанцев в состоянии Runing:
aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId" --filters "Name=instance-state-name,Values=running"

или в столбик без кавычек и прочего JSON:

aws ec2 describe-instances --query "Reservations[].Instances[].[InstanceId]" --filters "Name=instance-state-name,Values=running" --output text

FILTER/QUERY (http://jmespath.org/specification.html)
aws ec2 describe-snapshots --region us-east-1 --query "Snapshots[?contains(Description,'__prod-mongo-')]"
aws ec2 describe-snapshots --region us-east-1 --query "Snapshots[?ends_with(Description,'i-0749934234499394f__prod-mongo-1')]"

Комментариев нет: