创建和使用 Amazon CLI 别名 - Amazon Command Line Interface
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

创建和使用 Amazon CLI 别名

别名是您可以在 Amazon Command Line Interface (Amazon CLI) 中创建的快捷方式,以缩短您经常使用的命令或脚本。您可以在配置文件夹中的 alias 文件中创建别名。

先决条件

要使用别名命令,您需要完成以下操作:

步骤 1:创建别名文件

要创建 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. 在 Amazon CLI 配置文件夹中创建名为 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。由于此别名调用了现有 Amazon CLI 命令,因此您可以编写不带 aws 前缀的命令。

whoami = sts get-caller-identity

以下示例利用了上一个 whoami 示例并添加了Account 筛选条件和文本 output 选项。

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

创建子命令别名

注意

子命令别名功能需要最低 Amazon 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 命令命名空间下的现有 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 文件中创建的别名,请使用以下语法。您可以在调用别名时添加其他选项。

语法

$ 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 变量将作为 ${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

别名存储库示例

GitHub 上的 Amazon CLI 别名存储库包含由 Amazon CLI 开发人员团队和社区创建的 Amazon CLI 别名示例。您可以使用整个 alias 文件示例,也可以自己使用单个别名。

警告

运行本节中的命令会删除现有 alias 文件。为避免覆盖现有别名文件,请更改下载位置。

使用存储库中的别名
  1. 安装 Git。有关安装说明,请参阅 Git 文档中的入门 - 安装 Git

  2. 安装 jp 命令。jp 命令是在 tostring 别名中使用的。有关安装说明,请参阅 GitHub 上的 JMESPath (jp) README.md

  3. 安装 jq 命令。jq 命令是在 tostring-with-jq 别名中使用的。有关安装说明,请参阅 GitHub 上的 JSON 处理器 (jq)

  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
    • 直接从存储库下载并保存到 Amazon 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" }

资源