AWS CLI EC2 어떤식으로 구성되어있는지 보기

<Cloud>/AWS|2021. 11. 28. 20:56
반응형

#!/bin/bash = #!/bin/sh

ㄴ 스크립트파일 bash쉘로 실행. 기본적으로 bash 쉘로 되어있어서 굳이 안써도 상관은없는데 오류방지를 위해 쓰는것이 좋다.

 

EC2 CLI

run-instances
[--block-device-mappings <value>]
[--image-id <value>]
[--instance-type <value>]
[--ipv6-address-count <value>]
[--ipv6-addresses <value>]
[--kernel-id <value>]
[--key-name <value>]
[--monitoring <value>]
[--placement <value>]
[--ramdisk-id <value>]
[--security-group-ids <value>]
[--security-groups <value>]
[--subnet-id <value>]
[--user-data <value>]
[--additional-info <value>]
[--client-token <value>]
[--disable-api-termination | --enable-api-termination]
[--dry-run | --no-dry-run]
[--ebs-optimized | --no-ebs-optimized]
[--iam-instance-profile <value>]
[--instance-initiated-shutdown-behavior <value>]
[--network-interfaces <value>]
[--private-ip-address <value>]
[--elastic-gpu-specification <value>]
[--elastic-inference-accelerators <value>]
[--tag-specifications <value>]
[--launch-template <value>]
[--instance-market-options <value>]
[--credit-specification <value>]
[--cpu-options <value>]
[--capacity-reservation-specification <value>]
[--hibernation-options <value>]
[--license-specifications <value>]
[--metadata-options <value>]
[--enclave-options <value>]
[--count <value>]
[--secondary-private-ip-addresses <value>]
[--secondary-private-ip-address-count <value>]
[--associate-public-ip-address | --no-associate-public-ip-address]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]

describe-instances
[--filters <value>]
[--instance-ids <value>]
[--dry-run | --no-dry-run]
[--cli-input-json <value>]
[--starting-token <value>]
[--page-size <value>]
[--max-items <value>]
[--generate-cli-skeleton <value>]
LAUNCH_INFO=$(aws ec2 run-instances --image-id $IMAGE_ID --count 1 --instance-type $INSTANCE_TYPE \
--key-name $AWS_KEY --subnet-id $SUBNET_ID --security-group-ids $SG_ID)

 

[--count <value>]

시작할 인스턴스 수.(기본값은 1). 범위가 min:max 형식으로 제공되면 첫 번째 숫자는 시작할 최소 인스턴스 수로 해석되고 두 번째 숫자는 시작할 최대 인스턴스 수로 해석함.

[--image-id <value>]

AMI의 ID. AMI ID는 인스턴스를 시작하는 데 필요하며 시작할떄 지정해줘야함.

[--instance-type <value>]

인스턴스 타입 (ex:g4dn.xlarge)

[--key-name <value>]

키 쌍의 이름. (CreateKeyPair 또는 ImportKeyPair 를 사용하여 키 페어를 생성할 수 있다.)

[--subnet-id <value>]

[EC2-VPC] 인스턴스를 시작할 서브넷의 ID. 네트워크 인터페이스를 지정하는 경우 서브넷을 네트워크 인터페이스의 일부로 지정해야 함.

[--security-group-ids <value>]

보안 그룹의 ID. (CreateSecurityGroup을 사용하여 보안 그룹을 만들 수 있다.) 네트워크 인터페이스를 지정하는 경우 보안 그룹을 네트워크 인터페이스의 일부로 지정해야 한다.

**** echo**

확인용 https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-usage-returncodes.html

[--instance-ids <value>]

The instance IDs. (Default: Describes all your instances.)

 

 

JQ

  • jq로 json 처리하기

ㄴ -query로 수행할 수 없는 고급 필터링의 경우 명령줄 JSON 프로세서인 jq를 고려할 수 있다.

더보기
더보기
더보기

INSTANCE_ID=$(echo $LAUNCH_INFO | jq -r '. | .Instances[0].InstanceId')

$ cat sample.json
{"data":{"name":"myname","values": [{"id": "id0","url": "url0"},{"id": "id1","url": "url1"},{"id": "id2","url": "url2"}]}}
$ cat sample.json | jq .
{
  "data": {
    "name": "myname",
    "values": [
      {
        "id": "id0",
        "url": "url0"
      },
      {
        "id": "id1",
        "url": "url1"
      },
      {
        "id": "id2",
        "url": "url2"
      }
    ]
  }
}

. (점하나)

입력그대로 출력함

.foo (점다음에 key값)

점다음에 키값의 value를 출력한다.

.foo = .["foo"] = ."foo"

 

.[] (점뒤에 괄호)

 

결과 9 8

|(파이프)

두개 필터를 결합함.

ex) .a | . | .b = .a.b

.a.b.c = .a | .b | .c.

-raw-output / -r (ex: jq -r)

필터의 결과가 문자열이면 따옴표가 있는 JSON 문자열로 형식이 지정되지 않고 표준 출력에 직접 기록됨. non-JSON-based systems과 통신할때 사용.

사용예제 : https://gist.github.com/hummus/8592113

여러줄일때는 맨뒤에 \ 붙이고 이어서 다음줄에 줄줄이 쓰면됨

입력그대로 출력함

 

 

 

EC2 describe~

  • EC2 특징출력하기

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-usage-filter.html

$ aws ec2 describe-volumes

  • EC2 인스턴스들 나열하고 정보확인하기

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-services-ec2-instances.html

 

 

aws ec2 describe-instances --instance-ids i-12abc34 --query 'Reservations[].Instances[].PublicDnsName'

ㄴ i-12abc34 라는 인스턴스아이디를 가진 인스턴스의 PublicDnsName

 

 

 

 

반응형

댓글()