本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
執行 的官方 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 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
– 定義映像的最新版本 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 參考指南》。
範例 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