本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立和使用稱為別名的 AWS CLI 指令快速鍵
別名是您可以在 AWS Command Line Interface (AWS CLI) 中建立的快速鍵,以縮短您經常使用的指令或腳本。您可以在位於組態資料夾的 alias
檔案中建立別名。
必要條件
若要使用別名命令,您需要完成以下事項:
安裝及設定 AWS CLI。如需詳細資訊,請參閱 安裝或更新到最新版本的 AWS CLI 及 驗證與存取憑證。
-
請使用最低 AWS CLI 版本的 1.11.24 或 2.0.0 版本。
-
(可選)要使用 AWS CLI 別名 bash 腳本,必須使用 bash 兼容終端。
步驟 1:建立別名檔案
若要建立alias
檔案,您可以使用檔案導覽和文字編輯器,或使用 step-by-step 程序使用您偏好的終端機。若要快速建立別名檔案,請使用以下命令區塊。
建立別名檔案
-
在組態資料夾
cli
中建立一個名為的 AWS CLI 資料夾。預設情況下,組態資料夾是~/.aws/
(Linux 或 macOS) 或%USERPROFILE%\.aws\
(Windows)。您可以透過檔案導覽或使用以下命令來建立此資料夾。產生的
cli
資料夾預設路徑為~/.aws/cli/
(Linux 或 macOS) 或%USERPROFILE%\.aws\cli
(Windows)。 -
在
cli
資料夾中,建立沒有副檔名且名為alias
的文字檔案,並將[toplevel]
新增至第一行。您可以透過偏好的文字編輯器或使用下列命令來建立此檔案。
步驟 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 別名存放庫GitHubalias
檔案範例,或者自行採用個別別名。
警告
執行本節中的命令會刪除您現有的 alias
檔案。為了避免覆寫現有別名檔案,請變更下載位置。
使用儲存庫中的別名
-
安裝 Git。如需安裝說明,請參閱 Git 文件中的新手入門 – 安裝 Git
。 -
安裝
jp
命令。jp
命令是用於tostring
別名。如需安裝指示,請參閱中的 JMESPath(jp) README .md。GitHub -
安裝
jq
命令。jq
命令是用於tostring-with-jq
別名。如需安裝說明,請參閱上的JSON處理器 (jq)。GitHub -
執行下列其中一項操作來下載
alias
檔案:-
執行以下命令,即可從儲存庫下載
alias
檔案並將它複製到組態資料夾。 -
直接從儲存庫下載並儲存至 AWS CLI 組態
cli
資料夾中的資料夾。預設情況下,組態資料夾是~/.aws/
(Linux 或 macOS) 或%USERPROFILE%\.aws\
(Windows)。
-
-
若要驗證別名是否正常運作,請執行以下別名。
$
aws whoami
如此會顯示與
aws sts get-caller-identity
命令相同的回應:{ "Account": "012345678901", "UserId": "AIUAINBADX2VEG2TC6HD6", "Arn": "arn:aws:iam::012345678901:user/myuser" }
資源
-
上的AWS CLI 別名存放庫GitHub
包含 AWS CLI 開發人員團隊建立的 AWS CLI 別名範例以及 AWS CLI 社群的貢獻。 -
來自 R AWS : Invent 2016 年:有效 AWS CLI 使
用者的別名功能公告。YouTube