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

本文档仅适用于 Amazon CLI 版本 1。有关 Amazon CLI 版本 2 的相关文档,请参阅版本 2 用户指南

创建和使用 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" }

资源