建立和使用稱為別名的 AWS CLI 指令快速鍵 - AWS Command Line Interface

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立和使用稱為別名的 AWS CLI 指令快速鍵

別名是您可以在 AWS Command Line Interface (AWS CLI) 中建立的快速鍵,以縮短您經常使用的指令或腳本。您可以在位於組態資料夾的 alias 檔案中建立別名。

必要條件

若要使用別名命令,您需要完成以下事項:

步驟 1:建立別名檔案

若要建立alias檔案,您可以使用檔案導覽和文字編輯器,或使用 step-by-step 程序使用您偏好的終端機。若要快速建立別名檔案,請使用以下命令區塊。

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. 在組態資料夾cli中建立一個名為的 AWS 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)。

  2. cli 資料夾中,建立沒有副檔名且名為 alias 的文字檔案,並將 [toplevel] 新增至第一行。您可以透過偏好的文字編輯器或使用下列命令來建立此檔案。

    Linux and macOS
    $ echo '[toplevel]' > ~/.aws/cli/alias
    Windows
    C:\> echo [toplevel] > %USERPROFILE%/.aws/cli/alias

步驟 2:建立別名

您可以使用基本命令或 Bash 指令碼來建立別名。

建立基本命令別名

您可以在上一步建立的 alias 檔案中,使用下列語法新增命令以建立別名。

語法

aliasname = command [--options]

所以此 aliasname 就是你所說的別名。所以此 command 是您要呼叫的指令,可包含其他別名。您可以在別名中加入選項或參數,或在呼叫別名時新增選項或參數。

以下範例使用 aws sts get-caller-identity 命令來建立名為 aws whoami 的別名。由於此別名會呼叫現有的 AWS CLI 命令,因此您編寫的命令無需添加 aws 前綴。

whoami = sts get-caller-identity

下列範例採用之前的 whoami 範例,並新增 Account 篩選條件和文字 output 選項。

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

建立子命令別名

注意

子指令別名功能需要最低 AWS CLI 版本為 1.11.24 或 2.0.0

您可以在上一步建立的 alias 檔案中,使用下列語法新增命令以建立子命令的別名。

語法

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

所以此 commandGroup 是命令名稱空間,例如該命令aws ec2 describe-regions位於命ec2令組下。所以此 aliasname 就是你所說的別名。所以此 command 是您要呼叫的指令,可包含其他別名。您可以在別名中加入選項或參數,或在呼叫別名時新增選項或參數。

以下範例使用 aws ec2 describe-regions 命令來建立名為 aws ec2 regions 的別名。由於此別名會呼叫 ec2 命令命名空間下現有的 AWS CLI 命令,因此您編寫的命令無需添加 aws ec2 字首。

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

若要從命令名稱空間之外的命令建立別名,請在完整命令前加上驚嘆號。以下範例使用 aws iam list-instance-profiles 命令來建立名為 aws ec2 instance-profiles 的別名。

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

別名只使用現有的命令命名空間,您不能建立新的命令空間。例如,由於 johnsmith 命令名空間尚未存在,因此您無法使用 [command johnsmith] 區段建立別名。

建立 Bash 指令碼別名

警告

要使用 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:呼叫別名

若要執行您在 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 子命令別名

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

使用 Bash 指令碼變數呼叫別名

在您呼叫使用 Bash 指令碼的別名時,變數會按照您輸入的順序傳遞。在 Bash 指令碼中,變數名稱不是考慮因素,僅會考量其顯示順序。例如,在下列 textalert 別名中,--message 選項的變數為第一個,而 --phone-number 為第二個。

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

在呼叫 textalert 別名時,您必須按照變數在別名中的執行順序來傳遞變數。在以下範例中,我們使用變數 $message$phone$message 變數會作為 --message 選項的 ${1} 傳遞,$phone 變數則作為 --phone-number 選項的 ${2} 傳遞。如此會成功呼叫 textalert 別名來傳送訊息。

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

在下列範例中,呼叫 $phone$message 別名時會對調順序。$message 變數會作為 --message 選項的 ${1} 傳遞,$phone 變數則作為 --phone-number 選項的 ${2} 傳遞。由於變數順序不正確,別名會錯誤傳遞變數。因為 $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

別名儲存庫範例

AWS CLI 別名存放庫GitHub包含 AWS CLI 開發人員團隊和社群所建立的 AWS CLI 別名範例。您可以使用整個 alias 檔案範例,或者自行採用個別別名。

警告

執行本節中的命令會刪除您現有的 alias 檔案。為了避免覆寫現有別名檔案,請變更下載位置。

使用儲存庫中的別名
  1. 安裝 Git。如需安裝說明,請參閱 Git 文件中的新手入門 – 安裝 Git

  2. 安裝 jp 命令。jp 命令是用於 tostring 別名。如需安裝指示,請參閱中的 JMESPath(jp) README .md。GitHub

  3. 安裝 jq 命令。jq 命令是用於 tostring-with-jq 別名。如需安裝說明,請參閱上的JSON處理器 (jq)GitHub

  4. 執行下列其中一項操作來下載 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)。

  5. 若要驗證別名是否正常運作,請執行以下別名。

    $ aws whoami

    如此會顯示與 aws sts get-caller-identity 命令相同的回應:

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

資源