Help us understand the problem. What is going on with this article?

Dockerでaws-cli環境を作ればアカウント切替が簡単に

More than 1 year has passed since last update.

はじめに

aws-cli環境作成にあたりローカルを汚したくない。--profileオプションで切替めんどくさい。
そんな思いでDockerで環境作れないか試してみました。

実行環境

  • ubuntu 18.10
  • Dockerインストール済

1. Dockerfileの作成

  • 軽量なalpineを選択。
  • aws-cliのバージョンはお好きなものに変更してください。
  • 取得したjsonをjqで整形したいなどお好みでインストール内容は変更してください。
  • PS1はお好みの設定に変更してください。
    • 今回は起動時に指定するDockerホスト名を表示し、どんなaws-cli環境なのかわかるようにしています。
    • [root@awscli-dev:/]$と表示し開発環境のaws-cliのように見せてみました。
Dockerfile
FROM alpine

ARG pip_installer="https://bootstrap.pypa.io/get-pip.py"
ARG awscli_version="1.16.76"

# Install dependent packages
RUN apk --update add \
    bash \
    python \
    curl \
    groff \
    jq \
    less

# Install awscli
RUN curl ${pip_installer} | python && \
    pip install awscli==${awscli_version}

# 入力補完
RUN bash -c 'echo complete -C '/usr/bin/aws_completer' aws  >> $HOME/.bashrc'

ENV PS1="[\u@\h:\w]$"

2. docker build

docker build -t aws-cli .

3. 実行スクリプトの作成

  • アカウント単位ですぐ使えるようにスクリプト化。
  • tmuxなどで複数ターミナルを開けば同時に別のaws-cliを複数起動も。
  • 起動したコンテナは--rmオプションでexitしたら削除しコンテナのゴミは残さないように。
  • hオプションを付けてどんな環境なのかわかる名前を付けます。 ※複数実行した場合の作業ミス防止
  • s3などでローカルディレクトリを利用したい場合は、Dockerfile作成時に作業ディレクトリを作成しておき -v オプションでマウントしても良いかも知れません。
run.sh
AWS_ACCESS_KEY_ID="アクセスキー"
AWS_SECRET_ACCESS_KEY="シークレットキー"
AWS_DEFAULT_REGION="リージョン"

docker run -ith awscli-dev  --rm \
    -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 \
    aws-cli /bin/bash

4. スクリプト実行

# 実行権限はchmod +x run.sh
./run.sh
[root@awscli-dev:/]$ aws コマンド入力

さいごに

  • スクリプトを実行するだけで好きなアカウントのaws-cli環境に切替れるようになりました。
  • --profileオプションでアカウント切替える面倒から開放されましたが、どちらが良いか個人差ありそうです。
  • awscliでDocker環境つくりましたがaws-shellでも少しDockerfileを変更するだけでOKでした。
  • ここまで読んで頂きありがとうございました。
icck
丸いフォルムの動物全般が好き、海獣も好きのエンプラSIer。AWSが好きです。いいね!して頂けると喜びます。Qiita twitterフォロー頂ければ歓迎。相互フォロー致します。
https://icck.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした