4
4

More than 5 years have passed since last update.

【提案】AWS CLI は、Dockerコンテナ上で実行させよう

Last updated at Posted at 2019-04-30

やったこと

AWS CLIをDockerコンテナ上で実行し、結果のみホストOSの端末へ返すようにしました。
Dockerコマンドを含む一連処理をエイリアス化することで、AWS CLIをホストOSの端末上で実行しているかのように利用できます。

利点

  • ホストOSへ Python, pip, AWS CLI, クレデンシャルをインストール不要(ホストOSを汚さない)
  • コンテナ化することで、開発メンバーへ統一したAWS CLI環境を配布可能

Dockerfile

Alpine、AWS CLIのバージョンはハードコードしているため、手動で適宜変更をお願いします。

Dockerfile
FROM alpine:3.9
ENV AWS_CLI_VERSION 1.16.148
RUN apk -v --update add \
        python \
        py-pip \
        groff \
        less \
        mailcap \
        && \
    pip install --upgrade awscli==$AWS_CLI_VERSION python-magic && \
    apk -v --purge del py-pip && \
    rm /var/cache/apk/*

WORKDIR /project
ENTRYPOINT ["aws"]

ビルド

docker build -t aws-cli .

設定

アクセスキーID、シークレットアクセスキー、既定のリージョンを変数に登録します。

  • Windows(powershell) の場合
$AWS_ACCESS_KEY_ID="<id>"
$AWS_SECRET_ACCESS_KEY="<key>"
$AWS_DEFAULT_REGION="<region>"
  • Linux の場合
export AWS_ACCESS_KEY_ID="<id>"
export AWS_SECRET_ACCESS_KEY="<key>"
export AWS_DEFAULT_REGION="<region>"

インストール

AWS CLIをホストOSで実行しているかのように見せるため、エイリアスを作成します。
Windows であれば「$profile」へ、Linuxであれば「.bash_profile」へ登録しておくと便利です。
※カレントディレクトリをコンテナ上のワークディレクトリ「/project」へマウントします。

  • Windows(powershell) の場合
function aws(){
    docker run --rm -it `
    -e AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} `
    -e AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} `
    -e AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION} `
    -v ${pwd}:/project `
    speaktech/aws-cli `
    $args
}
  • Linux の場合
alias aws='docker run --rm -t $(tty &>/dev/null && echo "-i") \
-e "AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}" \
-e "AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}" \
-e "AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION}" \
-v "$(pwd):/project" \
aws-cli'

使い方

使い方は、ホストOSへAWS CLIを導入する場合と同じです。ただし、コマンド補完はできませんのでご留意ください。

S3上のオブジェクトのリスト表示
aws s3 ls
S3上へローカルのファイルをコピー
aws s3 cp test.txt s3://test-bucket/test-prefix/ 

※カレントディレクトリをコンテナ上のワークディレクトリ「/project」へマウントしているため、カレントディレクトリ上のファイルをコピーできます。

参考にさせて頂いた記事

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4