

# Creating and using aliases in the 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)」および「」を参照してください。[Authentication and access credentials for the AWS CLI](cli-chap-authentication.md)
+ 1.11.24 または 2.0.0 の最小 AWS CLI バージョンを使用してください。
+ (オプション) 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` という名前のフォルダを作成します。デフォルトでは、構成フォルダは Linux または macOS では「`~/.aws/`」、Windows 上は「`%USERPROFILE%\.aws\`」にあります。これは、ファイルナビゲーションまたは次のコマンドを使用して作成できます。

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

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

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

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

------

   作成されるフォルダ「`cli`」のデフォルトパスは、Linux または macOS では「`~/.aws/cli/`」、Windows では「`%USERPROFILE%\.aws\cli`」上にあります。

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>

**注記**  
サブコマンドのエイリアス機能には 1.11.24 または 2.0.0 以降の AWS CLI バージョンが必要です。

前の手順で作成した `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` オプションが 2 番目です。

```
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` が 2 番目です。

```
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 alias repository](https://github.com/awslabs/awscli-aliases) には、AWS CLI デベロッパーチームとコミュニティによって作成された AWS CLI エイリアスの例が含まれています。`alias` ファイルサンプル全体を使用することも、個々のエイリアスを使うこともできます。

**警告**  
このセクションのコマンドを実行すると、既存の `alias` ファイルが削除されます。既存のエイリアスファイルが上書きされないようにするには、ダウンロード先の場所を変更します。

**リポジトリのエイリアスを使用するには**

1. Git をインストールします。インストール手順については、*Git の Documentation* の [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` フォルダに保存します。デフォルトでは、構成フォルダは Linux または macOS では「`~/.aws/`」、Windows 上は「`%USERPROFILE%\.aws\`」にあります。

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 alias repository](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)