本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
執行 的官方 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 之間進行選擇
    我們建議您透過 Docker Hub 使用 Amazon ECR Public 進行 AWS CLI 映像。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 映像託管在 aws-cli/aws-cli儲存庫的 Amazon ECR Public 上。
 $ 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.27.41 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.27.41 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
 
 
- 
        --rm– 會指定在命令結束後清理容器。
 
- 
        -it– 會指定使用stdin開啟 pseudo-TTY。這可讓您在容器執行時提供第 2 AWS CLI 版的輸入,例如使用aws configure和aws help命令。當選擇是否省略-it時,請考慮下列事項:
 
 
    如需有關 docker run 命令的詳細資訊,請參閱《Docker 參考指南》。
   
    關於官方映像的介面和向後相容性的說明
    
       
       
       
    - 
        映像上唯一支援的工具是 AWS CLI。只有 aws可執行檔案應該直接運行。例如,即使less和groff明確安裝在映像上,也不應在 AWS CLI 命令外部直接執行。
 
- 
        此 /aws工作目錄由使用者控制。除非使用者在執行 AWS CLI 命令時指示,否則映像不會寫入此目錄。
 
- 
        依賴最新標籤時沒有向後相容性保證。為了保證向後相容性,您必須固定到特定 <major.minor.patch>標籤,因為這些標籤是不可變的;它們只會被推送一次。
 
 
   
    使用特定版本和標籤
    官方 AWS CLI 第 2 版映像有多個版本可供您使用,從版本 開始2.0.6。若要執行第 2 AWS CLI 版的特定版本,請將適當的標籤附加到您的docker run命令。第一次使用 docker run 命令搭配標籤時,會將該標籤的最新映像下載到您的電腦。後續每次使用 docker run 搭配該標籤命令時,都會從您的本機複本執行。
    您可以使用兩種類型的標籤:
    
       
       
    - 
        latest– 定義映像的最新版本 第 2 AWS CLI 版。建議您在需要 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 參考指南》。
    
     
      範例 1:提供憑證和組態
      在此範例中,我們在執行 s3 ls 命令時提供主機憑證和組態,以列出您在 Amazon Simple Storage Service (Amazon S3) 的儲存貯體。下列範例使用 AWS CLI 登入資料和組態檔案的預設位置,若要使用不同的位置,請變更檔案路徑。
      
        - Amazon ECR Public
- 
            Linux 和 macOS $ docker run --rm -it -v ~/.aws:/root/.awspublic.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/.awspublic.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/.awspublic.ecr.aws/aws-cli/aws-cli s3 ls
 
- Docker Hub
- 
            Linux 和 macOS $ docker run --rm -it -v ~/.aws:/root/.awsamazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
 Windows 命令提示 $ docker run --rm -it -v %userprofile%\.aws:/root/.awsamazon/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/.awsamazon/aws-cli s3 ls
 
您可以使用 -e 旗標呼叫特定系統的環境變數。若要使用環境變數,請依名稱進行呼叫。
      
        - Amazon ECR Public
- 
            Linux 和 macOS $ docker run --rm -it -v ~/.aws:/root/.aws -e ENVVAR_NAMEpublic.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_NAMEpublic.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_NAMEpublic.ecr.aws/aws-cli/aws-cli s3 ls
 
- Docker Hub
- 
            Linux 和 macOS $ docker run --rm -it -v ~/.aws:/root/.aws -e ENVVAR_NAMEamazon/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_NAMEamazon/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_NAMEamazon/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 旗標呼叫特定系統的環境變數。呼叫您要使用的每個環境變數。在此範例中,我們在執行 s3 ls 命令時提供主機憑證、組態和 AWS_PROFILE 環境變數,以列出您在 Amazon Simple Storage Service (Amazon S3) 的儲存貯體。
      
        - Amazon ECR Public
- 
            Linux 和 macOS $ docker run --rm -it -v ~/.aws:/root/.aws -e AWS_PROFILEpublic.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_PROFILEpublic.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_PROFILEpublic.ecr.aws/aws-cli/aws-cli s3 ls
 
- Docker Hub
- 
            Linux 和 macOS $ docker run --rm -it -v ~/.aws:/root/.aws -e AWS_PROFILEamazon/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_PROFILEamazon/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_PROFILEamazon/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.27.41 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10