使用官方 AWS CLI 版本 2 Docker 映像 - AWS Command Line Interface
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用官方 AWS CLI 版本 2 Docker 映像

本主题介绍如何在 Docker 上运行、配置 AWS CLI 版本 2 以及对其进行版本控制。有关如何使用 Docker 的更多信息,请参阅 Docker 的文档

官方 Docker 映像提供 AWS 直接支持和维护的隔离、可移植性和安全性。这使您能够在基于容器的环境中使用 AWS CLI 版本 2,而无需自行管理安装。

注意

AWS CLI 版本 2 是官方 AWS Docker 映像上支持的唯一工具。

先决条件

您必须已经安装 Docker。有关安装说明,请参阅 Docker 网站

要验证 Docker 的安装,请运行以下命令并确认是否有输出。

$ docker --version Docker version 19.03.1

运行官方 AWS CLI 版本 2 Docker 映像

官方 AWS CLI 版本 2 Docker 映像托管在 amazon/aws-cli 存储库中的 DockerHub 上。首次使用 docker run 命令时,最新的 Docker 映像将下载到您的计算机。docker run 命令的每次后续使用都会从本地副本运行。

要运行 AWS CLI 版本 2 Docker 映像,请使用 docker run 命令。

$ docker run --rm -it amazon/aws-cli command

下面是此命令运行方式:

  • docker run --rm --it amazon/aws-cli – 等效于 aws 可执行文件。每次运行此命令时,Docker 都会启动您下载的 amazon/aws-cli 映像的容器,并执行您的 aws 命令。默认情况下,Docker 映像使用 AWS CLI 版本 2 的最新版本。

    例如,要在 Docker 中调用 aws --version 命令,请运行以下命令。

    $ docker run --rm -it amazon/aws-cli --version aws-cli/2.0.47 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.0.0dev10
  • --rm – 指定在命令退出后清理容器。

  • -it – 指定要使用 stdin 打开伪 TTY。这允许您在容器中运行 AWS CLI 版本 2 时向其提供输入,例如,通过使用 aws configureaws help 命令。

有关 docker run 命令的更多信息,请参阅 Docker 参考指南

使用特定版本和标签

官方 AWS CLI 版本 2 Docker 映像有多个版本可供您使用,从版本 2.0.6 开始。要运行 AWS CLI 版本 2 的特定版本,请将相应的标签附加到 docker run 命令。首次使用带有标签的 docker run 命令时,该标签的最新 Docker 映像将下载到您的计算机。带有该标签的 docker run 命令的每次后续使用都从您的本地副本运行。

您可以使用两种类型的标签:

  • latest – 定义 Docker 映像的 AWS CLI 版本 2 的最新版本。我们建议您在需要 AWS CLI 版本 2 的最新版本时使用 latest 标签。但是,依赖此标签时不保证向后兼容性。默认情况下,在 docker run 命令中使用 latest 标签。要显式使用 latest 标记,请将标签附加到容器映像名称。

    $ docker run --rm -it amazon/aws-cli:latest command
  • <major.minor.patch> – 定义 Docker 映像的 AWS CLI 版本 2 的指定版本。如果您计划在生产中使用 Docker 映像,我们建议您使用 AWS CLI 版本 2 的特定版本,以确保向后兼容。例如,要运行版本 2.0.6,请将版本附加到容器映像名称中。

    $ docker run --rm -it amazon/aws-cli:2.0.6 command

更新到最新的 Docker 映像

由于最新的 Docker 映像仅在您第一次使用 docker run 命令时下载到您的计算机,因此您需要手动提取更新的映像。要手动更新到最新版本,我们建议您拉取标记为 latest 的图像。拉取 Docker 映像会将最新版本下载到您的计算机。

$ docker pull amazon/aws-cli:latest

共享主机文件、凭证和配置

由于 AWS CLI 版本 2 在容器中运行,因此,默认情况下 CLI 无法访问包括配置和凭证的主机文件系统。要将主机文件系统、凭证和配置共享到容器,请将主机系统的 ~/.aws 目录挂载到位于 /root/.aws 的容器,并将 -v 标志附加到 docker run 命令。这允许在容器中运行的 AWS CLI 版本 2 查找主机文件信息。

Linux and macOS
$ docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli command
Windows
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws amazon/aws-cli command

有关 -v 标志和挂载的详细信息,请参阅 Docker 参考指南

示例 1:提供凭证和配置

在此示例中,我们在运行 s3 ls 命令时提供主机凭证和配置,以便列出 Amazon Simple Storage Service (Amazon S3) 中的存储桶。

Linux and macOS
$ docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli s3 ls 2020-03-25 00:30:48 aws-cli-docker-demo
Windows
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws amazon/aws-cli s3 ls 2020-03-25 00:30:48 aws-cli-docker-demo

示例 2:将 Amazon S3 文件下载到您的主机系统

对于某些 AWS CLI 版本 2 命令,您可以从容器中的主机系统读取文件,或将文件从容器写入主机系统。

在此示例中,我们通过将当前工作目录挂载到容器的 /aws 目录,将 S3 对象 s3://aws-cli-docker-demo/hello 下载到本地文件系统。通过将 hello 对象下载到容器的 /aws 目录,文件也会保存到主机系统的当前工作目录中。

Linux and macOS
$ docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello . download: s3://aws-cli-docker-demo/hello to ./hello
Windows
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello . download: s3://aws-cli-docker-demo/hello to ./hello

要确认本地文件系统中存在下载的文件,请运行以下命令。

Linux and macOS
$ cat hello Hello from Docker!
Windows
$ type hello Hello from Docker!

缩短 Docker 命令

为了缩短 Docker aws 命令,我们建议您使用操作系统的功能在 Linux 和 macOS 中创建 symbolic link(符号链接)或 alias,或在 Windows 中创建 doskey。要设置 aws 别名,可以运行以下命令之一。

  • 要对 aws 命令进行基本访问,请运行以下命令。

    Linux and macOS
    $ alias aws='docker run --rm -it amazon/aws-cli'
    Windows
    C:\> doskey aws=docker run --rm -it amazon/aws-cli $*
  • 要在使用 aws 命令时访问主机文件系统和配置设置,请运行以下命令:

    Linux and macOS
    $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli'
    Windows
    C:\> doskey aws test=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli $*
  • 要分配要在 aws 别名中使用的特定版本,请附加版本标签。

    Linux and macOS
    $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli:2.0.6'
    Windows
    C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli:2.0.6 $*

设置别名后,您可以从 Docker 容器内运行 AWS CLI 版本 2,就好像它安装在主机系统上一样。

$ aws --version aws-cli/2.0.47 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.0.0dev10