執行 的官方 Amazon ECR Public 或 Docker 映像 AWS CLI - AWS Command Line Interface

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

執行 的官方 Amazon ECR Public 或 Docker 映像 AWS CLI

本主題說明如何使用官方 Amazon Elastic Container Registry Public (Amazon ECR Public) 或 Docker Hub 映像在 Docker 上執行、版本控制和設定 AWS CLI 版本 2。如需如何使用 Docker 的詳細資訊,請參閱 Docker 文件

官方映像提供 AWS 直接支援和維護的隔離、可攜性和安全性。這可讓您在容器型環境中使用 第 2 AWS CLI 版,而不必自行管理安裝。

必要條件

您必須已安裝 Docker。如需安裝說明,請參閱 Docker 網站

若要驗證 Docker 的安裝,請執行下列命令並確認有輸出。

$ docker --version Docker version 19.03.1

在 Amazon ECR Public 和 Docker Hub 之間決定

我們建議在 AWS CLI 映像中使用 Amazon ECR Public over Docker Hub。Docker Hub 對於大眾消費者的速率限制更嚴格,可能會導致限流問題。此外,Amazon ECR Public 會在多個區域中複寫映像,以提供強大的可用性並處理區域中斷問題。

如需 Docker Hub 速率限制的詳細資訊,請參閱 Docker 網站上的了解 Docker Hub 速率限制

執行官方第 2 AWS CLI 版映像

第一次使用 docker run 命令時,會將最新的映像下載到您的電腦。後續每次使用 docker run 命令時,都會從您的本機複本執行。

若要執行第 2 AWS CLI 版 Docker 映像,請使用 docker run命令。

Amazon ECR Public

官方第 2 AWS CLI 版 Amazon ECR Public 映像託管在儲存庫 中的 Amazon ECR Public。 aws-cli/aws-cli

$ docker run --rm -it public.ecr.aws/aws-cli/aws-cli command
Docker Hub

官方第 2 AWS CLI 版 Docker 映像託管在amazon/aws-cli儲存庫中的 Docker Hub 上。

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

這是命令的運作方式:

  • docker run --rm -it repository/name – 相當於 aws 可執行檔。每次執行此命令時,Docker 都會加速運轉已下載映像檔的容器,並執行您的 aws 命令。根據預設,映像會使用最新版本的 第 2 AWS CLI 版。

    例如,若要呼叫 Docker 中的 aws --version 命令,您會執行下列命令。

    Amazon ECR Public
    $ docker run --rm -it public.ecr.aws/aws-cli/aws-cli --version aws-cli/2.17.20 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.17.20 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
  • --rm – 會指定在命令結束後清理容器。

  • -it – 指定使用 開啟虛擬 TTYstdin。這可讓您在第 2 AWS CLI 版在容器中執行時提供輸入,例如,使用 aws configureaws help命令。當選擇是否省略 -it 時,請考慮下列事項:

    • 如果您正在執行指令碼,則不需要 -it

    • 如果您的指令碼發生錯誤,省略 Docker 呼叫中的 -it 也許可以解決問題。

    • 如果您嘗試管道輸出,-it 可能會導致錯誤,省略 Docker 呼叫中的 -it 也許可以解決此問題。如果您希望保留 -it 標誌,但仍然想管道輸出,在預設情況下停用用户端分頁程式該 AWS CLI 使用應該可以解決問題。

如需有關 docker run 命令的詳細資訊,請參閱《Docker 參考指南》。

關於官方映像的介面和向後相容性的說明

  • 映像上唯一支援的工具是 AWS CLI。只有 aws 可執行檔案應該直接運行。例如,即使 lessgroff 明確安裝在映像上,也不應在 AWS CLI 命令外部直接執行。

  • /aws 工作目錄由使用者控制。除非使用者指示執行 AWS CLI 命令,否則映像不會寫入此目錄。

  • 依賴最新標籤時沒有向後相容性保證。為了保證向後相容性,您必須固定到特定 <major.minor.patch> 標籤,因為這些標籤是不可變的;它們只會被推送一次。

使用特定版本和標籤

官方 AWS CLI 第 2 版映像具有多個版本,您可以從版本 開始2.0.6。若要執行第 2 AWS CLI 版的特定版本,請將適當的標籤附加至您的docker run命令。第一次使用 docker run 命令搭配標籤時,會將該標籤的最新映像下載到您的電腦。後續每次使用 docker run 搭配該標籤命令時,都會從您的本機複本執行。

您可以使用兩種類型的標籤:

  • latest – 定義映像的最新版本 AWS CLI 版本 2。建議您在需要 AWS CLI 第 2 版的最新版本時使用 latest 標籤。但是,依賴此標籤時,無法保證回溯相容性。預設會在 docker run 命令中使用 latest 標籤。若要明確使用 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> – 為映像定義 AWS CLI 版本 2 的特定版本。如果您計劃在生產中使用官方映像,我們建議您使用 2 AWS CLI 版的特定版本,以確保回溯相容性。例如,若要執行 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

分享主機檔案、憑證、環境變數和組態

由於第 2 AWS CLI 版是在容器中執行,因此依預設, CLI 無法存取主機檔案系統,其中包含組態和憑證。若要共享主機檔案系統、憑證和組態至容器,請將主機系統的 ~/.aws 目錄掛載至位於 /root/.aws 的容器,對 -v 命令加上 docker run 旗標。這可讓在容器中執行的 AWS 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 參考指南》。

注意

如需關於 configcredentials 檔案的資訊,請參閱 中的組態和憑證檔案設定 AWS CLI

範例 1:提供憑證和組態

在此範例中,我們在執行 s3 ls 命令時提供主機憑證和組態,以列出您在 Amazon Simple Storage Service (Amazon S3) 的儲存貯體。下列範例使用 AWS 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 檔案下載到主機系統

對於某些第 2 AWS CLI 版命令,您可以從容器中的主機系統讀取檔案,或將檔案從容器寫入主機系統。

在這個範例中,我們透過將目前的工作目錄掛載到容器的 /aws 目錄,將 S3 物件 s3://aws-cli-docker-demo/hello 下載到您的本機檔案系統。藉由將 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 旗標呼叫特定系統的環境變數。呼叫您要使用的每個環境變數。在此範例中,我們提供主機憑證、組態和 AWS_PROFILE 環境變數,s3 ls以列出 Amazon Simple Storage Service (Amazon S3) 中的儲存貯體。

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 別名,您可以執行下列其中一個命令:

  • 如需 aws 命令的基本存取權限,請執行下列命令。

    Amazon ECR Public

    Linux 和 macOS

    $ alias aws='docker run --rm -it public.ecr.aws/aws-cli/aws-cli'

    Windows 命令提示

    C:\> doskey aws=docker run --rm -it public.ecr.aws/aws-cli/aws-cli $*

    Windows PowerShell

    C:\> Function AWSCLI {docker run --rm -it public.ecr.aws/aws-cli/aws-cli $args} Set-Alias -Name aws -Value AWSCLI
    Docker Hub

    Linux 和 macOS

    $ alias aws='docker run --rm -it amazon/aws-cli'

    Windows 命令提示

    C:\> doskey aws=docker run --rm -it amazon/aws-cli $*

    Windows PowerShell

    C:\> Function AWSCLI {docker run --rm -it amazon/aws-cli $args} Set-Alias -Name aws -Value AWSCLI
  • 如需使用 aws 命令時主機檔案系統和組態設定的存取權,請執行以下項目。

    Amazon ECR Public

    Linux 和 macOS

    $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli'

    Windows 命令提示

    C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli $*

    Windows PowerShell

    C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli $args} Set-Alias -Name aws -Value AWSCLI
    Docker Hub

    Linux 和 macOS

    $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli'

    Windows 命令提示

    C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli $*

    Windows PowerShell

    C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli $args} Set-Alias -Name aws -Value AWSCLI
  • 若要指定要在 aws 別名中使用的特定版本,請附加您的版本標籤:

    Amazon ECR Public

    Linux 和 macOS

    $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli:2.0.6'

    Windows 命令提示

    C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli:2.0.6 $*

    Windows PowerShell

    C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli:2.0.6 $args} Set-Alias -Name aws -Value AWSCLI
    Docker Hub

    Linux 和 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 $*

    Windows PowerShell

    C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli:2.0.6 $args} Set-Alias -Name aws -Value AWSCLI

設定別名後,您可以從容器內執行第 2 AWS CLI 版,就像在主機系統上安裝一樣。

$ aws --version aws-cli/2.17.20 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10