公式 AWS CLI バージョン 2 Docker イメージの使用 - AWS Command Line Interface

Python 2.7、3.4、および 3.5 は、AWS CLI バージョン 1 に対して非推奨です。詳細については、「AWS CLI バージョンについて」の AWS CLI バージョン 1 セクションを参照してください。

公式 AWS CLI バージョン 2 Docker イメージの使用

このトピックでは、Docker で AWS CLI バージョン 2 の実行、バージョン管理、および設定を実行する方法について説明します。Docker の使用方法の詳細については、Docker のドキュメントを参照してください。

公式 Docker イメージは、AWS が直接サポートおよび維持する分離、移植性、およびセキュリティを提供します。これにより、インストールを自分で管理しなくても、コンテナベースの環境で AWS CLI バージョン 2 を使用できるようになります。

注記

AWS CLI バージョン 2 は、公式 AWS Docker イメージでサポートされている唯一のツールです。

Prerequisites

Docker がインストールされている必要があります。インストール手順については、Docker のウェブサイトを参照してください。

Docker のインストールを確認するには、次のコマンドを実行し、出力があることを確認します。

$ docker --version Docker version 19.03.1

公式 AWS CLI バージョン 2 Docker イメージを実行する

公式 AWS CLI バージョン 2 Docker イメージは、amazon/aws-cli リポジトリ内の DockerHub でホストされています。docker run このコマンドを初めて使用すると、最新の Docker イメージがコンピュータにダウンロードされます。それ以降の docker run コマンドの使用は、ローカルコピーから実行されます。

AWS CLI バージョン 2 Docker イメージを実行するには、docker run コマンドを使用します。

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

コマンドの機能は次のとおりです。

  • docker run --rm -it amazon/aws-cliaws 実行可能ファイルと同等です。このコマンドを実行するたびに、Docker はダウンロードした amazon/aws-cli イメージのコンテナをスピンアップし、aws コマンドを実行します。デフォルトで、Docker イメージは AWS CLI バージョン 2 の最新バージョンを使用します。

    たとえば、Docker で aws --version コマンドを呼び出すには、以下を実行します。

    $ docker run --rm -it amazon/aws-cli --version aws-cli/2.1.29 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.0.0dev10
  • --rm - コマンドが終了後にコンテナをクリーンアップすることを指定します。

  • -it - で疑似 TTY をで開くように指定します。stdinこれにより、コンテナで実行中でも、例えば aws help コマンドや aws configure コマンドを使用して、AWS CLI バージョン 2 に入力を提供できるようになります。スクリプトを実行している場合は、-it は不要です。スクリプトでエラーが発生する場合は、Docker 呼び出しから -it を削除してください。

docker run コマンドの詳細については、Docker reference guide を参照してください。

特定のバージョンとタグの使用

公式 AWS CLI バージョン 2 Docker イメージには、使用できる複数のバージョン (2.0.6 以降) があります。AWS CLI バージョン 2 の特定バージョンを実行するには、適切なタグを docker run コマンドに付加します。初めてタグを指定して docker run コマンドを使用すると、そのタグの最新の Docker イメージがコンピュータにダウンロードされます。それ以降、そのタグで docker run コマンドを使用する場合は、ローカルコピーから実行されます。

次の 2 種類のタグを使用できます。

  • latest – Docker イメージ用の AWS CLI バージョン 2 の最新バージョンを定義します。AWS CLI バージョン 2 の最新バージョンを使用する場合は、latest タグを使用することをお勧めします。ただし、このタグに依存する場合の下位互換性は保証されません。latest タグは、docker run コマンドでデフォルトで使用されます。latest タグを明示的に使用するには、タグをコンテナイメージ名に追加します。

    $ docker run --rm -it amazon/aws-cli:latest command
  • <major.minor.patch> – Docker イメージ用の AWS CLI バージョン 2 の特定バージョンを定義します。Docker イメージを本番環境で使用する予定の場合は、下位互換性を確保するために、AWS CLI バージョン 2 の特定バージョンを使用することをお勧めします。たとえば、バージョン 2.0.6 を実行するには、コンテナイメージ名にバージョンを追加します。

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

最新の Docker イメージへの更新

最新の Docker イメージは、docker run コマンドの初回使用時にのみコンピュータにダウンロードされるため、更新されたイメージを手動でプルする必要があります。手動で最新バージョンに更新するには、latest タグ付きイメージをプルすることをお勧めします。Docker イメージをプルすると、コンピュータに最新バージョンがダウンロードされます。

$ docker pull amazon/aws-cli:latest

ホストファイル、認証情報、環境変数、構成を共有する

AWS CLI バージョン 2 はコンテナで実行されるため、CLI はデフォルトでホストファイルシステムにアクセスできません。これには、設定と認証情報が含まれます。ホストファイルシステム、認証情報、および設定をコンテナと共有するには、ホストシステムの ~/.aws ディレクトリを /root/.aws のコンテナにマウントして、-v コマンドに docker run フラグを付けます。これにより、コンテナで実行されている AWS CLI バージョン 2 がホストファイル情報を検索できるようになります。

Linux and macOS
$ docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli command
Windows Command Prompt
$ 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 reference guide を参照してください。

例 1: 認証情報と設定の提供

この例では、Amazon Simple Storage Service (Amazon S3) でバケットを一覧表示する s3 ls コマンドの実行時に、ホストの認証情報および設定を提供しています。以下の例では、AWS CLI 認証情報および設定ファイルのデフォルトの場所を使用しています。別の場所を使用するには、ファイルパスを変更します。

Linux and 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 Command Prompt
$ 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フラグを使用して呼び出すことができます。環境変数を使用するには、変数を名前で呼び出します。

Linux and 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 Command Prompt
$ 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 ファイルのダウンロード

一部の AWS CLI バージョン 2 コマンドでは、コンテナ内のホストシステムからファイルを読み取ったり、コンテナからホストシステムにファイルを書き込むことができます。

この例では、現在の作業ディレクトリをコンテナの S3 ディレクトリにマウントして、s3://aws-cli-docker-demo/hello オブジェクト /aws をローカルファイルシステムにダウンロードします。hello オブジェクトをコンテナの /aws ディレクトリにダウンロードすると、ファイルはホストシステムの現在の作業ディレクトリにも保存されます。

Linux and 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 Command Prompt
$ 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 /aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello .

ダウンロードしたファイルがローカルファイルシステムに存在することを確認するには、以下を実行します。

Linux and macOS
$ cat hello Hello from Docker!
Windows
$ type hello Hello from Docker!

例 3: AWS_PROFILE 環境変数の使用

特定システムの環境変数は、-eフラグを使用して呼び出すことができます。使用したいそれぞれの環境変数を呼び出してください。この例では、Amazon Simple Storage Service (Amazon S3) でバケットをリストする s3 ls コマンドの実行時に、ホスト認証情報、設定、および AWS_PROFILE 環境変数を提供しています。

Linux and 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 コマンドの短縮

Docker aws コマンドを短縮するには、オペレーティングシステムの機能を使用して Linux および macOS で symbolic link (シンボリックリンク) または alias を作成するか、あるいは Windows で doskey を作成することをお勧めします。aws エイリアスを設定するには、次のいずれかのコマンドを実行します。

  • aws コマンドへの基本的なアクセスについては、以下を実行します。

    Linux and macOS
    $ alias aws='docker run --rm -it amazon/aws-cli'
    Windows Command Prompt
    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 コマンド使用時にホストファイルシステムおよび構成設定にアクセスする場合は、以下を実行します。

    Linux and macOS
    $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli'
    Windows Command Prompt
    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 /aws amazon/aws-cli $args} Set-Alias -Name aws -Value AWSCLI
  • aws エイリアスで使用する特定のバージョンを割り当てるには、バージョンタグを追加します。

    Linux and macOS
    $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli:2.0.6'
    Windows Command Prompt
    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 /aws amazon/aws-cli:2.0.6 $args} Set-Alias -Name aws -Value AWSCLI

エイリアスの設定後、ホストシステムにインストールされている場合と同様に、Docker コンテナから AWS CLI バージョン 2 を実行できます。

$ aws --version aws-cli/2.1.29 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.0.0dev10