LoginSignup
15
17

More than 3 years have passed since last update.

aws-cliコマンドが使えるコンテナを作る

Last updated at Posted at 2019-06-09

概要

aws-cliコマンドが使えるコンテナを用意してみる。

前提条件

  • macOS
  • Docker Toolbox ( Docker for mac )

ファイル構成

下記のようなファイルを作成します。

ファイル構成
opt
 ├ docker
 │ └ aws-cli
 │    └ Dockerfile
 └ docker-compose.yml

Dockerfile作成

aws-cliコマンドが使えるコンテナを構築するファイルです。

docker/aws-cli/Dockerfile
# AWS ドキュメント - AWS CLI のインストール
# https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-install.html

FROM python:3.6

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

# create local bin directory
RUN mkdir -p /root/.local/bin
ENV PATH $PATH:/root/.local/bin

# install aws-cli
RUN pip install --user --upgrade awscli==${awscli_version}

# install sam
RUN pip install --user --upgrade aws-sam-cli

# install command.
RUN apt-get update && apt-get install -y less vim

WORKDIR /root

docker-compose.yml作成

下記の内容で作成します。

docker-compose.yml
version: '3'
services:
  aws-cli:
    container_name: 'aws-cli'
    image: aws-s3/aws-cli
    build:
      context: ./
      dockerfile: ./docker/aws-cli/Dockerfile
    tty: true
    environment:
      AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
      AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
      AWS_DEFAULT_REGION: ap-northeast-1
      AWS_DEFAULT_OUTPUT: json

サーバ構築

下記コマンドにてdockerコンテナのイメージを構築します。

ターミナル
$ docker-compose build

AWSの環境設定

下記のように環境変数を定義します。
※ ここで定義した環境変数は、自動的にdockerコンテナに取り込まれます

ターミナル
$ export AWS_ACCESS_KEY_ID='xxxxxxxxxxxxx'
$ export AWS_SECRET_ACCESS_KEY='xxxxxxxxxxxxxxxxxx'

awsコマンド実行

下記コマンドにて実行し、aws-cliコンテナに接続して利用します。
※ exitしたらコンテナは、破棄される作りとなっています。

ターミナル
# aws-cliコンテナ起動&接続
$ docker-compose run --rm aws-cli bash
$ aws --version

exitしてもaws-cliコンテナを破棄したくない場合は、下記のコマンドで実行します。

ターミナル
# コンテナをデーモン起動
$ docker-compose up -d

# aws-cliコンテナへ接続
$ docker-compose exec aws-cli bash
  ...
$ exit    <- aws-cliの接続を解除してもコンテナは起動したままです

以上

15
17
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
15
17