선 밖에 선 자유인

AWS CLI 기본 본문

IT/Cloud & DevOps

AWS CLI 기본

Hotman 2017. 4. 4. 14:29
출처: <탄력적 개발로 이끄는 AWS 실천 기술> 외 - AWS CLI 설정
 $ aws configure  
AWS Access Key ID : xxxxxxxxxxx 
AWS Secret Access Key : xxxxxxxxxxxxx 
Default region name : ap-northeast-2
Default output format : 
(Access Key, Secret Access Key 는 AWS 관리 콘솔에서 확인) - AWS CLI 명령어나 옵션 보완 기능
 $ complete -C aws_complerwe aws   (-> .bashrc 에 저장)
- 키 쌍 생성
 $ aws ec2 create-key-pair --key-name  my-keypair-from-cli --query 'KeyMaterail' --output text > my-keypari-from-cli.pem  
- Security Group 생성
 $ aws ec2 create-security-group --group-name my-security-group-from-cli --description my-security-goup-from-cli  
- EC2 구동
 $ aws ec2 run-instances --image-id ami-xxxxx0a --instance-type t2.micro --security-group-ids sg-xaaaaa \
--key-name my-keypari-from-cli --subnet-id subnet-xxxxxxe 
- EC2 태그 생성
 $ aws ec2 create-tags --resources i-xxxxxxa4 --tags Key=Name,Value=my-instance 
- EIP 할당 및 연결
 $ aws ec2 allocate-address  
{
"PublicIp": "52.xx.xxx.xxx",
"Domain": "vpc"
"AllocationId": "eipalloc-axxxxx1"
}
 $ aws ec2 associate-address --allocation-id eipalloc-axxxxx1 --instance-id i-xxxxxxx4
- EC2 정지/삭제/재시작
 $ aws ec2 stop-instance --instance-ids i-xxxxxx4           
 $ aws ec2 terminate-instance --instance-ids i-xxxxxx4  
 $ aws ec2 reboot-instance --instance-ids i-xxxxxx4       
[EC2 인스턴스 백업] - tag 생성
 $ aws ec2 create-tags --resources i-xxxxxxa4 --tags Key=Backup,Value=1 
- tag를 붙인 인스턴스 확인
 $ aws ec2 describe-instances --filters Name=tag-key,Values=backup  
- 필터를 통해 조건 지정
 $ aws ec2 describe-instances --filters Name=tag-key,Values=backup \  
 --query 'Reservation[*].Instances[*].[InstanceId,to_string(Tags[?Key=='backup'].Value),to_string(Tags[?  Key=='Name'].Value)]'
- 필터를 통해 조건 지정 (텍스트 출력)
 $ aws ec2 describe-instances --filters Name=tag-key,Values=backup \  
 --query 'Reservation[*].Instances[*].[InstanceId,to_string(Tags[?Key=='backup'].Value),to_string(Tags[?      Key=='Name'].Value)]' --output text
- 괄호 제거 및 åwk를 이용한 내용 출력
 
  $ aws ec2 describe-instances --filters Name=tag-key,Values=backup \  
  --query 'Reservation[*].Instances[*].[InstanceId,to_string(Tags[?Key=='backup'].Value),to_string(Tags[?    Key=='Name'].Value)]' | tr -d "[" | tr -d "]" | awk '{print $1","$2","$3}'
* AMI 생성 스크립트 예제
#!/bin/sh
instances=$(aws ec2 describe-instances --filters Name=tag-key,Values=backup \
--query 'Reservation[*].Instances[*].[InstanceId,to_string(Tags[?Key=='backup'].Value),to_string(Tags[?Key=='Name'].Value)]' | tr -d "[" | tr -d "]" | awk '{print $1","$2","$3}')

for instance in $instances
do
parts=$(echo $instance | sed -e "s/,/ /g")
columns=($parts)
instance_id=${columns[0]}
name=${columns[2]}
aws ec2 create-image --instance-id $instance_id --no-reboot \
--name ${name}_`date +"%Y%m%d%H%M%S"`
done
- 할당된 Elastic IP 리스트 확인
 $ aws ec2 describe-instances --query 'Reservations[*].Instances[?PublicIpAddress!=null].[PublicIpAddress]' --  output text 
아래와 같은 방식으로도 가능
aws ec2 describe-instances --query 'Reservations[*].Instances[*].PublicIpAddress' --output text
- AWS Instance 리스트 확인
$ aws ec2 describe-instances 
- query 필터를 이용하여 확인 가능
$ aws ec2 describe-instances --query 'Reservations[0]'  -> 할당된 1대 확인
$ aws ec2 describe-instances --query 'Reservations[0].[OwnerId, ReservationId, Instances[0].PublicIpAddress]'
[
    "622295120373", 
    "r-0f0da6c1f98109a10", 
    "XX.XXX.XXX.XX"
]
- AWS Instance Tags 정보 확인
$ aws ec2 describe-instances --query 'Reservations[*].Instances[*].Tags[0].Value' --output text | awk '{print $1}' | sort
aws-cli.pdf
Comments