Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
通过官方 Amazon ECR Public 映像或 Docker 映像运行 Amazon CLI
本主题介绍如何使用官方 Amazon Elastic Container Registry Public (Amazon ECR Public) 或 Docker Hub 映像,在 Docker 上运行、配置 Amazon CLI 版本 2 以及对其进行版本控制。有关如何使用 Docker 的更多信息,请参阅 Docker 的文档。
官方映像提供 Amazon 直接支持和维护的隔离、可移植性和安全性。这使您能够在基于容器的环境中使用 Amazon CLI 版本 2,而无需自行管理安装。
先决条件
您必须已经安装 Docker。有关安装说明,请参阅 Docker 网站。
要验证 Docker 的安装,请运行以下命令并确认是否有输出。
$
docker --version
Docker version 19.03.1
在 Amazon ECR Public 和 Docker Hub 之间作出选择
我们建议为 Amazon CLI 映像使用 Amazon ECR Public,而不使用 Docker Hub。Docker Hub 对公有使用者有更严格的速率限制,这会导致出现节流问题。此外,Amazon ECR Public 会在多个区域复制映像,以提供强大的可用性和处理区域中断问题。
有关 Docker Hub 速率限制的更多信息,请参阅 Docker 网站上的了解 Docker Hub 速率限制。
运行官方 Amazon CLI 版本 2 映像
首次使用 docker run
命令时,系统会将最新映像下载到计算机。docker run
命令的每次后续使用都会从本地副本运行。
要运行 Amazon CLI 版本 2 Docker 映像,请使用 docker run
命令。
- Amazon ECR Public
-
官方 Amazon CLI 版本 2 Amazon ECR Public 映像托管在 aws-cli/aws-cli
存储库中的 Amazon ECR Public 上。
$
docker run --rm -it public.ecr.aws/aws-cli/aws-cli command
- Docker Hub
-
官方 Amazon CLI 版本 2 Docker 映像托管在 amazon/aws-cli
存储库中的 Docker Hub 上。
$
docker run --rm -it amazon/aws-cli command
下面是此命令运行方式:
-
docker run --rm -it repository/name
– 等效于 aws
可执行文件。每次运行此命令时,Docker 都会启动已下载映像的容器,并执行您的 aws
命令。默认情况下,映像使用 Amazon CLI 版本 2 的最新版本。
例如,要在 Docker 中调用 aws --version
命令,请运行以下命令。
- Amazon ECR Public
-
$
docker run --rm -it public.ecr.aws/aws-cli/aws-cli --version
aws-cli/2.10.0 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
- Docker Hub
-
$
docker run --rm -it amazon/aws-cli --version
aws-cli/2.10.0 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
-
--rm
– 指定在命令退出后清理容器。
-
-it
– 指定要使用 打开伪 TTY。stdin
这允许您在容器中运行 Amazon CLI 版本 2 时向其提供输入,例如,通过使用 aws configure
和 aws help
命令。当选择是否省略 -it
时,请考虑以下事项:
有关 docker run
命令的更多信息,请参阅 Docker 参考指南。
有关官方映像的接口和向后兼容性的说明
-
映像上支持的唯一工具是 Amazon CLI。仅应直接运行 aws
可执行文件。例如,尽管已在映像上显式安装 less
和 groff
,但它们不应直接在 Amazon CLI 命令外部执行。
-
/aws
工作目录由用户控制。除非在运行 Amazon CLI 命令时接到用户指示,否则映像不会写入此目录。
-
依赖最新标签并不能保证向后兼容。为了确保向后兼容,您必须固定使用特定的 <major.minor.patch>
标签,因为这些标签是不可改变的;它们只会被推送一次。
使用特定版本和标签
从版本 2.0.6
开始,官方 Amazon CLI 版本 2 映像有多个版本可供使用。要运行 Amazon CLI 版本 2 的特定版本,请将相应的标签附加到 docker run
命令。首次使用带有标签的 docker run
命令时,该标签的最新映像会下载到您的计算机。带有该标签的 docker run
命令的每次后续使用都从您的本地副本运行。
您可以使用两种类型的标签:
-
latest
– 为映像定义 Amazon CLI 版本 2 的最新版本。我们建议您在需要 Amazon CLI 版本 2 的最新版本时使用 latest
标签。但是,依赖此标签时不保证向后兼容性。默认情况下,在 latest
命令中使用 docker run
标签。要显式使用 latest
标记,请将标签附加到容器映像名称。
- Amazon ECR Public
-
$
docker run --rm -it public.ecr.aws/aws-cli/aws-cli:latest command
- Docker Hub
-
$
docker run --rm -it amazon/aws-cli:latest command
-
<major.minor.patch>
– 为映像定义 Amazon CLI 版本 2 的特定版本。如果您计划在生产中使用官方映像,我们建议您使用 Amazon CLI 版本 2 的特定版本,以确保向后兼容。例如,要运行版本 2.0.6
,请将版本附加到容器映像名称中。
- Amazon ECR Public
-
$
docker run --rm -it public.ecr.aws/aws-cli/aws-cli:2.0.6 command
- Docker Hub
-
$
docker run --rm -it amazon/aws-cli:2.0.6 command
更新到最新的官方映像
由于最新的映像仅在您第一次使用 docker run
命令时下载到您的计算机,因此您需要手动提取更新的映像。要手动更新到最新版本,我们建议您拉取标记为 latest
的映像。拉取映像会将最新版本下载到您的计算机。
- Amazon ECR Public
-
$
docker pull public.ecr.aws/aws-cli/aws-cli:latest
- Docker Hub
-
$
docker pull amazon/aws-cli:latest
共享主机文件、凭据、环境变量和配置
由于 Amazon CLI 版本 2 在容器中运行,因此,默认情况下 CLI 无法访问包括配置和凭证的主机文件系统。要将主机文件系统、凭证和配置共享到容器,请将主机系统的 ~/.aws
目录挂载到位于 /root/.aws
的容器,并将 -v
标志附加到 docker run
命令。这允许在容器中运行的 Amazon CLI 版本 2 查找主机文件信息。
- Amazon ECR Public
-
Linux 和 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli command
Windows 命令提示符
$
docker run --rm -it -v %userprofile%\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli command
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli command
- Docker Hub
-
Linux 和 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
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws amazon/aws-cli command
有关 -v
标志和挂载的更多信息,请参阅 Docker 参考指南。
示例 1:提供凭证和配置
在此示例中,我们在运行 s3 ls
命令时提供主机凭证和配置,以便列出 Amazon Simple Storage Service (Amazon S3) 中的存储桶。以下示例使用 Amazon CLI 凭证和配置文件的默认位置。要使用其他位置,请更改文件路径。
- Amazon ECR Public
-
Linux 和 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws
public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows 命令提示符
$
docker run --rm -it -v %userprofile%\.aws:/root/.aws
public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws
public.ecr.aws/aws-cli/aws-cli s3 ls
- Docker Hub
-
Linux 和 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
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws
amazon/aws-cli s3 ls
您可以使用 -e
标志调用特定系统的环境变量。要使用环境变量,请按名称调用它。
- Amazon ECR Public
-
Linux 和 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws -e ENVVAR_NAME
public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows 命令提示符
$
docker run --rm -it -v %userprofile%\.aws:/root/.aws -e ENVVAR_NAME
public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e ENVVAR_NAME
public.ecr.aws/aws-cli/aws-cli s3 ls
- Docker Hub
-
Linux 和 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws -e ENVVAR_NAME
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 -e ENVVAR_NAME
amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e ENVVAR_NAME
amazon/aws-cli s3 ls
示例 2:将 Amazon S3 文件下载到您的主机系统
对于某些 Amazon CLI 版本 2 命令,您可以从容器中的主机系统读取文件,或将文件从容器写入主机系统。
在此示例中,我们通过将当前工作目录挂载到容器的 S3
目录,将 s3://aws-cli-docker-demo/hello
对象 /aws
下载到本地文件系统。通过将 hello
对象下载到容器的 /aws
目录,文件也会保存到主机系统的当前工作目录中。
- Amazon ECR Public
-
Linux 和 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/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 public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
- Docker Hub
-
Linux 和 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
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
要确认本地文件系统中存在下载的文件,请运行以下命令。
Linux 和 macOS
$
cat hello
Hello from Docker!
Windows PowerShell
$
type hello
Hello from Docker!
示例 3:使用您的 AWS_PROFILE 环境变量
您可以使用 -e
标志调用特定系统的环境变量。调用您想使用的每个环境变量。在本示例中,我们在运行 s3 ls
命令以在 Amazon Simple Storage Service (Amazon S3) 中列出存储桶时提供了主机凭证、配置和 AWS_PROFILE
环境变量。
- Amazon ECR Public
-
Linux 和 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws -e AWS_PROFILE
public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows 命令提示符
$
docker run --rm -it -v %userprofile%\.aws:/root/.aws -e AWS_PROFILE
public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e AWS_PROFILE
public.ecr.aws/aws-cli/aws-cli s3 ls
- Docker Hub
-
Linux 和 macOS
$
docker run --rm -it -v ~/.aws:/root/.aws -e AWS_PROFILE
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 -e AWS_PROFILE
amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
Windows PowerShell
C:\>
docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e AWS_PROFILE
amazon/aws-cli s3 ls
缩短 docker run 命令
为了缩短 docker run
命令,我们建议您使用操作系统的功能在 Linux 和 macOS 中创建 symbolic
link
(符号链接)或 alias
,或者在 Windows 中创建 doskey
。要设置 aws
别名,可以运行以下命令之一。
设置别名后,您可以从容器内运行 Amazon CLI 版本 2,就好像它安装在主机系统上一样。
$
aws --version
aws-cli/2.10.0 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10