本文档仅适用于 Amazon CLI 版本 1。有关 Amazon CLI 版本 2 的相关文档,请参阅版本 2 用户指南。
在 Amazon CLI 中创建和使用别名
别名是您可以在 Amazon Command Line Interface(Amazon CLI)中创建的快捷方式,用于缩短您经常使用的命令或脚本。您可以在配置文件夹中的 alias 文件中创建别名。
先决条件
要使用别名命令,您需要完成以下操作:
- 安装和配置 Amazon CLI。有关更多信息,请参阅安装、更新和卸载 Amazon CLI和Amazon CLI 身份验证和访问凭证。 
- 
        使用最低 Amazon CLI 版本 1.11.24 或 2.0.0。 
- 
        (可选)要使用 Amazon CLI 别名 bash 脚本,必须使用兼容 bash 的终端。 
步骤 1:创建别名文件
要创建 alias 文件,您可以使用文件导航和文本编辑器,或通过分步过程来使用首选终端。要快速创建别名文件,请使用以下命令块。
创建别名文件
- 
        在 Amazon 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。由于此别名调用了现有 Amazon CLI 命令,因此您可以编写不带 aws 前缀的命令。
whoami = sts get-caller-identity
以下示例利用了上一个 whoami 示例并添加了Account 筛选条件和文本 output 选项。
whoami2 = sts get-caller-identity --queryAccount--output text
创建子命令别名
注意
子命令别名功能需要最低 Amazon CLI 版本 1.11.24 或 2.0.0
您可以在上一步中创建的 alias 文件中使用以下语法来添加命令,从而为子命令创建别名。
语法
[commandcommandGroup][aliasname=command--options]
commandGroup 是命令命名空间,例如,命令 aws ec2 describe-regions 位于 ec2 命令组下。aliasname 即您所称的别名。command 是您想要调用的命令,它可以包括其他别名。您可以在别名中包含选项或参数,也可以在调用别名时添加选项或参数。
以下示例使用 aws ec2
            describe-regions 命令创建别名 aws ec2 regions。由于此别名调用了 ec2 命令命名空间下的现有 Amazon 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
注意
别名仅使用现有命令命名空间,您不能创建新的命名空间。例如,您无法使用 [command johnsmith] 部分创建别名,因为 johnsmith 命令命名空间尚不存在。
创建 bash 脚本别名
警告
要使用 Amazon 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 文件中创建的别名,请使用以下语法。您可以在调用别名时添加其他选项。
语法
$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 变量将作为 ${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 $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 上的 Amazon CLI 别名存储库alias 文件示例,也可以自己使用单个别名。
警告
运行本节中的命令会删除现有 alias 文件。为避免覆盖现有别名文件,请更改下载位置。
使用存储库中的别名
- 
          安装 Git。有关安装说明,请参阅 Git 文档中的入门 - 安装 Git 。 
- 
          安装 jp命令。jp命令是在tostring别名中使用的。有关安装说明,请参阅 GitHub 上的 JMESPath (jp) README.md。 
- 
          安装 jq命令。jq命令是在tostring-with-jq别名中使用的。有关安装说明,请参阅 GitHub 上的 JSON 处理器 (jq)。 
- 
          通过执行以下操作之一下载 alias文件:- 
              运行以下命令,它是从存储库下载的并将 alias文件复制到配置文件夹。
- 
              直接从存储库下载并保存到 Amazon 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 上的 Amazon CLI 别名存储库 包含由 Amazon CLI 开发人员团队创建的 Amazon CLI 别名示例以及 Amazon CLI 社区的贡献。 
- 
          来自 Amazon re:Invent 2016:有效的 Amazon CLI 用户 的别名特征公告 (YouTube)。