本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 中建立和使用別名 AWS CLI
別名是您可以在 AWS Command Line Interface (AWS CLI) 中建立的捷徑,以縮短您經常使用的命令或指令碼。您可以在位於組態資料夾的 alias 檔案中建立別名。
先決條件
若要使用別名命令,您需要完成以下事項:
安裝及設定 AWS CLI。如需詳細資訊,請參閱安裝或更新至最新版本的 AWS CLI及的身分驗證和存取憑證 AWS CLI。
-
使用最低 AWS CLI 版本 1.11.24 或 2.0.0。
-
(選用) 若要使用別名 bash AWS CLI 指令碼,您必須使用與 bash 相容的終端機。
步驟 1:建立別名檔案
若要建立 alias 檔案,您可以使用檔案導覽和文字編輯器,或使用您偏好的終端機並按照逐步程序來建立。若要快速建立別名檔案,請使用以下命令區塊。
建立別名檔案
-
在 AWS CLI 組態資料夾中建立名為
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 --queryAccount--output text
建立子命令別名
注意
子命令別名功能需要 1.11.24 或 2.0.0 的最低 AWS CLI 版本
您可以在上一步建立的 alias 檔案中,使用下列語法新增命令以建立子命令的別名。
語法
[commandcommandGroup][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 指令碼別名
警告
若要使用別名 bash AWS CLI 指令碼,您必須使用與 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 別名,以授予您的 IP 地址進入 Amazon EC2 安全群組的權限。
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 檔案中建立的別名,請使用以下語法。您可以在呼叫別名時新增其他選項。
語法
$awsaliasname
下列範例使用 aws whoami 命令別名。
$aws whoami{ "UserId": "A12BCD34E5FGHI6JKLM", "Account": "1234567890987", "Arn": "arn:aws:iam::1234567890987:user/userName" }
以下範例使用 aws whoami 別名以及其他選項,以便只將 Account 號碼回傳到 text 輸出中。
$aws whoami --query Account --output text1234567890987
下列範例使用 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 $messageusage: 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
別名儲存庫範例
GitHub 上的AWS CLI 別名儲存庫alias 檔案範例,或者自行採用個別別名。
警告
執行本節中的命令會刪除您現有的 alias 檔案。為了避免覆寫現有別名檔案,請變更下載位置。
使用儲存庫中的別名
-
安裝 Git。如需安裝說明,請參閱 Git 文件中的新手入門 – 安裝 Git
。 -
安裝
jp命令。jp命令是用於tostring別名。如需安裝說明,請參閱 GitHub 上的 JMESPath (jp) README.md。 -
安裝
jq命令。jq命令是用於tostring-with-jq別名。如需安裝說明,請參閱 GitHub 上的 JSON processor (jq)。 -
執行下列其中一項操作來下載
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" }
資源
-
GitHub 上的AWS CLI 別名儲存庫
包含 AWS CLI 開發人員團隊建立的 AWS CLI 別名範例,以及社群的 AWS CLI 貢獻。 -
來自 AWS re:Invent 2016 的別名功能公告:YouTube 上的有效 AWS CLI 使用者
。 YouTube