

# AWS CLI에서 별칭 생성 및 사용
<a name="cli-usage-alias"></a>

별칭은 자주 사용하는 명령이나 스크립트를 단축하기 위해 AWS Command Line Interface(AWS CLI)에서 생성할 수 있는 바로 가기입니다. 구성 폴더에 있는 `alias` 파일에서 별칭을 생성합니다.

**Topics**
+ [사전 조건](#cli-usage-alias-prepreqs)
+ [1단계: 별칭 파일 생성](#cli-usage-alias-create-file)
+ [2단계: 별칭 생성](#cli-usage-alias-create-alias)
+ [3단계: 별칭 호출](#cli-usage-alias-call-alias)
+ [별칭 리포지토리 예제](#cli-usage-alias-examples)
+ [리소스](#cli-usage-alias-references)

## 사전 조건
<a name="cli-usage-alias-prepreqs"></a>

별칭 명령을 사용하려면 다음을 완료해야 합니다.
+ AWS CLI를 설치하고 구성합니다. 자세한 내용은 [최신 버전의 AWS CLI 설치 또는 업데이트](getting-started-install.md) 및 [AWS CLI에 대한 인증 및 액세스 보안 인증](cli-chap-authentication.md) 섹션을 참조하세요.
+ 최소 AWS CLI 버전 1.11.24 또는 2.0.0을 사용합니다.
+ (선택 사항) AWS CLI 별칭 bash 스크립트를 사용하려면 bash 호환 터미널을 사용해야 합니다.

## 1단계: 별칭 파일 생성
<a name="cli-usage-alias-create-file"></a>

`alias` 파일을 생성하려면 파일 탐색 및 텍스트 편집기를 사용하거나 단계별 절차를 사용하여 원하는 터미널을 사용할 수 있습니다. 별칭 파일을 빠르게 생성하려면 다음 명령 블록을 사용합니다.

------
#### [ Linux and macOS ]

```
$ mkdir -p ~/.aws/cli
$ echo '[toplevel]' > ~/.aws/cli/alias
```

------
#### [ Windows ]

```
C:\> md %USERPROFILE%\.aws\cli
C:\> echo [toplevel] > %USERPROFILE%/.aws/cli/alias
```

------

**별칭 파일을 생성하는 방법**

1. AWS CLI 구성 폴더에 이름이 `cli`인 폴더를 생성합니다. 기본적으로 구성 폴더는 `~/.aws/`(Linux 또는 macOS) 및 `%USERPROFILE%\.aws\`(Windows)에 있습니다. 파일 탐색을 통해 또는 다음 명령을 사용하여 생성할 수 있습니다.

------
#### [ Linux and macOS ]

   ```
   $ mkdir -p ~/.aws/cli
   ```

------
#### [ Windows ]

   ```
   C:\> md %USERPROFILE%\.aws\cli
   ```

------

   결과로 생성되는 `cli` 폴더의 기본 경로는 `~/.aws/cli/`(Linux 또는 macOS) 및 `%USERPROFILE%\.aws\cli`(Windows)입니다.

1. `cli` 폴더에서 확장자 없이 이름이 `alias`인 텍스트 파일을 생성하고 첫 번째 줄에 `[toplevel]`을 추가합니다. 원하는 텍스트 편집기를 통해 또는 다음 명령을 사용하여 이 파일을 생성할 수 있습니다.

------
#### [ Linux and macOS ]

   ```
   $ echo '[toplevel]' > ~/.aws/cli/alias
   ```

------
#### [ Windows ]

   ```
   C:\> echo [toplevel] > %USERPROFILE%/.aws/cli/alias
   ```

------

## 2단계: 별칭 생성
<a name="cli-usage-alias-create-alias"></a>

기본 명령이나 bash 스크립팅을 사용하여 별칭을 생성할 수 있습니다.

### 기본 명령 별명 생성
<a name="cli-usage-alias-create-alias-basic"></a>

이전 단계에서 생성한 `alias` 파일에서 다음 구문을 사용해 명령을 추가하여 별칭을 생성할 수 있습니다.

**구문**:

```
aliasname = command [--options]
```

*aliasname*은 별칭을 말합니다. *command*는 호출할 명령이며, 다른 별칭을 포함할 수 있습니다. 별칭에 옵션 또는 파라미터를 포함하거나 별칭을 호출할 때 추가할 수 있습니다.

다음 예제에서는 [https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html) 명령을 사용하여 이름이 `aws whoami`인 별칭을 생성합니다. 이 별칭은 기존 AWS CLI 명령을 호출하므로 `aws` 접두사 없이 명령을 작성할 수 있습니다.

```
whoami = sts get-caller-identity
```

다음 예제에서는 이전 `whoami` 예제를 사용하여 `Account` 필터 및 텍스트 `output` 옵션을 추가합니다.

```
whoami2 = sts get-caller-identity --query Account --output text
```

### 하위 명령 별칭 만들기
<a name="cli-usage-alias-create-alias-sub-command"></a>

**참고**  
하위 명령 별칭 기능을 사용하려면 최소 AWS CLI 버전 1.11.24 또는 2.0.0이 필요합니다.

이전 단계에서 생성한 `alias` 파일에서 다음 구문을 사용해 명령을 추가하여 하위 명령 별칭을 생성할 수 있습니다.

**구문**:

```
[command commandGroup]
aliasname = command [--options]
```

*CommandGroup*은 명령 네임스페이스입니다. 예를 들어 `aws ec2 describe-regions` 명령은 `ec2` 명령 그룹 아래에 있습니다. *aliasname*은 별칭을 말합니다. *command*는 호출할 명령이며, 다른 별칭을 포함할 수 있습니다. 별칭에 옵션 또는 파라미터를 포함하거나 별칭을 호출할 때 추가할 수 있습니다.

다음 예제에서는 [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-regions.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-regions.html) 명령을 사용하여 이름이 `aws ec2 regions`인 별칭을 생성합니다. 이 별칭은 `ec2` 명령 네임스페이스 아래의 기존 AWS CLI 명령을 호출하므로 `aws ec2` 접두사 없이 명령을 작성할 수 있습니다.

```
[command ec2]
regions = describe-regions --query Regions[].RegionName
```

명령 네임스페이스 외부의 명령에서 별칭을 만들려면 전체 명령 앞에 느낌표를 붙입니다. 다음 예제에서는 [https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-instance-profiles.html) 명령을 사용하여 이름이 `aws ec2 instance-profiles`인 별칭을 생성합니다.

```
[command ec2]
instance-profiles = !aws iam list-instance-profiles
```

**참고**  
별칭은 기존 명령 네임스페이스만 사용하며 새 명령 네임스페이스를 만들 수 없습니다. 예를 들어 `johnsmith` 명령 네임스페이스가 이미 존재하지 않으므로 `[command johnsmith]` 섹션을 사용하여 별칭을 만들 수 없습니다.

### bash 스크립팅 별칭 생성
<a name="cli-usage-alias-create-alias-scripting"></a>

**주의**  
AWS CLI 별칭 bash 스크립트를 사용하려면 bash 호환 터미널을 사용해야 합니다.

다음 구문을 사용하여 고급 프로세스에 대한 bash 스크립트를 사용하여 별칭을 생성할 수 있습니다.

**구문**:

```
aliasname = 
    !f() {
        script content
}; f
```

*aliasname*은 별칭을 말하며, *script content*는 별칭을 호출할 때 실행하려는 스크립트입니다.

다음 예제에서는 `opendns`를 사용하여 현재 IP 주소를 출력합니다. 다른 별칭에서 별칭을 사용할 수 있으므로 다음 `myip` 별칭은 다른 별칭 내 IP 주소에 대한 액세스를 허용하거나 취소하는 데 유용합니다.

```
myip =
  !f() {
    dig +short myip.opendns.com @resolver1.opendns.com
  }; f
```

다음 스크립트 예제에서는 이전 `aws myip` 별칭을 호출하여 Amazon EC2 보안 그룹 수신에 대한 IP 주소를 인증합니다.

```
authorize-my-ip =
  !f() {
    ip=$(aws myip)
    aws ec2 authorize-security-group-ingress --group-id ${1} --cidr $ip/32 --protocol tcp --port 22
  }; f
```

bash 스크립팅을 사용하는 별칭을 호출하면 변수는 항상 입력한 순서대로 전달됩니다. bash 스크립팅에서 변수 이름은 고려하지 않고 나타나는 순서만 고려합니다. 다음 `textalert` 별칭 예제에서 `--message` 옵션에 대한 변수는 첫 번째이고 `--phone-number` 옵션은 두 번째입니다.

```
textalert =
  !f() {
    aws sns publish --message "${1}" --phone-number ${2}
  }; f
```

## 3단계: 별칭 호출
<a name="cli-usage-alias-call-alias"></a>

`alias` 파일에서 생성한 별칭을 실행하려면 다음 구문을 사용합니다. 별칭을 호출할 때 추가 옵션을 추가할 수 있습니다.

**구문**:

```
$ aws aliasname
```

다음 예제에서는 `aws whoami` 명령 별칭을 사용합니다.

```
$ aws whoami
{
    "UserId": "A12BCD34E5FGHI6JKLM",
    "Account": "1234567890987",
    "Arn": "arn:aws:iam::1234567890987:user/userName"
}
```

다음 예제에서는 `aws whoami` 별칭을 추가 옵션과 함께 사용하여 `Account` 출력에서 `text` 번호만 반환합니다.

```
$ aws whoami --query Account --output text
1234567890987
```

다음 예제에서는 `aws ec2 regions`[ 하위 명령 별칭](#cli-usage-alias-create-alias-sub-command)을 사용합니다.

```
$ aws ec2 regions
[
    "ap-south-1",
    "eu-north-1",
    "eu-west-3",
    "eu-west-2",
...
```

### bash 스크립팅 변수를 사용하여 별칭 호출
<a name="cli-usage-alias-call-alias-variables"></a>

bash 스크립팅을 사용하는 별칭을 호출하면 변수는 입력한 순서대로 전달됩니다. bash 스크립팅에서 변수 이름은 고려하지 않고 나타나는 순서만 고려합니다. 예를 들어, 다음 `textalert` 별칭에서 `--message` 옵션에 대한 변수는 첫 번째이고 `--phone-number`는 두 번째입니다.

```
textalert =
  !f() {
    aws sns publish --message "${1}" --phone-number ${2}
  }; f
```

`textalert` 별칭을 호출할 때 별칭에서 실행되는 동일한 순서로 변수를 전달해야 합니다. 다음 예제에서는 `$message` 및 `$phone` 변수를 사용합니다. `$message` 변수는 `${1}` 옵션에서 `--message`(으)로 전달되고, `$phone` 변수는 `${2}` 옵션에서 `--phone-number`(으)로 전달됩니다. 이렇게 하면 `textalert` 별칭을 호출하여 메시지를 보낼 수 있습니다.

```
$ aws textalert $message $phone
{
    "MessageId": "1ab2cd3e4-fg56-7h89-i01j-2klmn34567"
}
```

다음 예제에서는 `$phone` 및 `$message`에 대한 별칭을 호출할 때 순서가 전환됩니다. `$phone` 변수는 `${1}` 옵션에서 `--message`(으)로 전달되고, `$message` 변수는 `${2}` 옵션에서 `--phone-number`(으)로 전달됩니다. 변수 순서가 잘못되었으므로 별칭이 변수를 잘못 전달합니다. 이 경우 `$message` 콘텐츠가 `--phone-number` 옵션의 전화번호 형식 요구 사항과 일치하지 않으므로 오류가 발생합니다.

```
$ aws textalert $phone $message
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help

Unknown options: text
```

## 별칭 리포지토리 예제
<a name="cli-usage-alias-examples"></a>

*GitHub*의 [AWS CLI 별칭 리포지토리](https://github.com/awslabs/awscli-aliases)에는 AWS CLI 개발자 팀 및 커뮤니티에서 생성한 AWS CLI 별칭 예제가 포함되어 있습니다. 전체 `alias` 파일 예제를 사용하거나 직접 사용할 개별 별칭을 사용할 수 있습니다.

**주의**  
이 섹션의 명령을 실행하면 기존 `alias` 파일이 삭제됩니다. 기존 별칭 파일을 덮어쓰지 않으려면 다운로드 위치를 변경합니다.

**리포지토리에서 별칭을 사용하는 방법**

1. Git를 설치합니다. 설치 지침은 *Git 설명서*에서 [Getting Started - Installing Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)를 참조하세요.

1. `jp` 명령을 설치합니다. `jp` 명령은 `tostring` 별칭에 사용됩니다. 설치 지침은 *GitHub*에서 [JMESPath (jp) README.md](https://github.com/jmespath/jp)를 참조하세요.

1. `jq` 명령을 설치합니다. `jq` 명령은 `tostring-with-jq` 별칭에 사용됩니다. 설치 지침은 *GitHub*에서 [JSON processor (jq)](https://stedolan.github.io/jq/download/)를 참조하세요.

1. 다음 중 하나를 수행하여 `alias` 파일을 다운로드합니다.
   + 리포지토리에서 다운로드한 다음 명령을 실행하여 `alias` 파일을 구성 폴더에 복사합니다.

------
#### [ Linux and macOS ]

     ```
     $ git clone https://github.com/awslabs/awscli-aliases.git
     $ mkdir -p ~/.aws/cli
     $ cp awscli-aliases/alias ~/.aws/cli/alias
     ```

------
#### [ Windows ]

     ```
     C:\> git clone https://github.com/awslabs/awscli-aliases.git
     C:\> md %USERPROFILE%\.aws\cli
     C:\> copy awscli-aliases\alias %USERPROFILE%\.aws\cli
     ```

------
   + 리포지토리에서 직접 다운로드하여 AWS CLI 구성 폴더의 `cli` 폴더에 저장합니다. 기본적으로 구성 폴더는 `~/.aws/`(Linux 또는 macOS) 및 `%USERPROFILE%\.aws\`(Windows)에 있습니다.

1. 별칭이 작동하는지 확인하려면 다음 별칭을 실행합니다.

   ```
   $ aws whoami
   ```

   그러면 `aws sts get-caller-identity` 명령과 동일한 응답이 표시됩니다.

   ```
   {
       "Account": "012345678901",
       "UserId": "AIUAINBADX2VEG2TC6HD6",
       "Arn": "arn:aws:iam::012345678901:user/myuser"
   }
   ```

## 리소스
<a name="cli-usage-alias-references"></a>
+ *GitHub*의 [AWS CLI 별칭 리포지토리](https://github.com/awslabs/awscli-aliases)에는 AWS CLI 개발자 팀 및 AWS CLI 커뮤니티의 기여로 생성된 AWS CLI 별칭 예제가 포함되어 있습니다.
+ *YouTube*의 [AWS re:Invent 2016: The Effective AWS CLI User](https://www.youtube.com/watch?t=1590&v=Xc1dHtWa9-Q)에서 별칭 기능 발표 
+ [https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html](https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html)