이전글에서 query에 대해 이해를 했다면 매우 쉬우나
막상 작성하려면 귀찮으니 가져다 바로 쓸 예시를 업로드합니다.
(사실 제가 쓰려고 대충 메모해놓는 용도입니다)
** 20201210 GP2 -> GP3 변환 쉘 추가 **
** 20201218 S3 각 버킷 사이즈 구하는 쉘 추가 **
1. 모든 인스턴스에 키 값이 TEST이고, Value가 Y인 태그 넣기 / 지우기
instances=$(aws ec2 describe-instances --query "Reservations[].Instances[].InstanceId")
aws ec2 create-tags --resources $instances --tags Key=TEST,Value=Y
aws ec2 delete-tags --resources $instances --tags Key=TEST,Value=Y
2. AutoBackup: Y인 태그를 가지고 있는 인스턴스에 키 값이 TEST이고, Value가 Y인 태그 넣기 / 지우기
instances=$(aws ec2 describe-instances --query "Reservations[?(Instances[?(Tags[?Key == 'AutoBackup' && Value == 'Y'])])].Instances[].InstanceId")
aws ec2 create-tags --resources $instances --tags Key=TEST,Value=Y
aws ec2 delete-tags --resources $instances --tags Key=TEST,Value=Y
3. (이전글) EC2 Name, Env, Private IP만 가져와서 파일로 저장하기
aws ec2 describe-instances --query "Reservations[].Instances[].{"Ip" : PrivateIpAddress, "Type" : InstanceType, "Name" : Tags[?Key == 'Name'].Value, "Env" : Tags[?Key == 'Env'].Value}" --region ap-northeast-2 --profile profile1 --output json > records.json
4. Env Tag가 PRD인 인스턴스의 Private IP만 가져오기
aws ec2 describe-instances --query "Reservations[?(Instances[?(Tags[?Key == 'Env' && Value == 'PRD'])])].Instances[].PrivateIpAddress" --region ap-northeast-2 --profile profile1
5. gp2 Type Volume을 gp3로 전환하는 쉘 스크립트
#!/bin/bash
id_list=($(aws ec2 describe-volumes --query "Volumes[?(VolumeType == 'gp2')].VolumeId" | jq -r '.[]'))
for id in ${id_list[@]}
do
aws ec2 modify-volume --volume-id $id --volume-type gp3
done
6. S3 모든 Bucket 사이즈 구하는 쉘 스크립트
#!/bin/bash
s3_list=($(aws s3 ls | awk '{print $3}'))
for bucket in ${s3_list[@]}
do
echo $(aws s3 ls $bucket --recursive | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024/1024" GiB"}')
done
위와 같이 쉘 스크립트를 작성하면 나중에 자동화된 시스템 구성에도 편하게 사용할 수 있습니다.
EC2 관련하여 CLI를 더 작성하게 된다면 계속해서 추가하도록 하겠습니다.
'Linux 명령어 > AWS CLI' 카테고리의 다른 글
AWS CLI - Query 옵션 활용하기 (0) | 2020.10.19 |
---|