Docker aws command line (download s3 file) / docker 使用 aws cli 下載 s3 檔案

intro

  • 需要用到 aws command line 下載檔案
  • 不想裝在本機,完全透過 docker 處理
  • 注意事項:需要暸解 docker volume 的設定與本機開放同步目錄關係

Step

docker pull 拉下 aws 官方 cli docker image 並建立登入設定檔(憑證)
替換 ~/my-docker-dev/Dockerfiles/aws-cret 部份;此為本機儲存 aws cli 的憑證位置
執行後依說明,輸入相關 id(key) secret….

$ docker run --rm -it -v ~/my-docker-dev/Dockerfiles/aws-cret:/root/.aws amazon/aws-cli configure

嘗試 cli 是否正常取得 s3 bucket 列表

$ docker run --rm -it -v ~/my-docker-dev/Dockerfiles/aws-cret:/root/.aws amazon/aws-cli s3 ls

嘗試 cli 下載 s3 bucket 中指定檔案 (e.g. s3://my-bucket-files/test.pdf)
會將檔案下載至本機 ~/Projects/files/test.pdf 位置

docker run --rm -it -v ~/my-docker-dev/Dockerfiles/aws-cret:/root/.aws -v ~/Projects/files:/aws amazon/aws-cli s3 cp s3://my-bucket-files/test.pdf .

批次與指令化

可以在 bash_profile 自定語法

s3dl() {
    docker run --rm -it -v ~/my-docker-dev/Dockerfiles/aws-cret:/root/.aws -v ~/Projects/files:/aws amazon/aws-cli s3 cp s3://$1 .
    echo "\t download to '~/Projects/files'"
}

usage …

s3dl my-bucket-files/test.pdf

批次下載多個檔案

s3dl my-bucket-files/test-01.pdf
s3dl my-bucket-files/test-02.pdf
s3dl my-bucket-files/test-03.pdf
s3dl my-bucket-files/test-04.pdf
.
.
.

ref.

https://docs.aws.amazon.com/zh_tw/cli/latest/userguide/install-cliv2-docker.html