🐈
AWS CLI v2 をdockerで使えるようにする
AWS CLI を手元の環境を汚さずに docker で作成したかったのでやり方をメモ
TL;DR
- AWS CLI v2 がインストールされた docker image を作成
- VS Code のターミナルから docker-compose コマンドでコンテナを作成
- S3 バケットへコードをデプロイする環境を作る
環境
Windows マシンですが、docker が入っていれば MacOS でも同様に出来るかと思います
> docker --version
Docker version 20.10.7, build f0df350
Dockerfile と docker-compose
公式の aws-cli イメージはコマンドをそのまま実行する環境としては便利ですが、作った shell などを動かしたいときに不便に感じたので、別のイメージから作成するようにしました。
less と vim はお好みで、curl,unzip,sudo は必須です。
aws-cli/Dockerfile
# AWS CLI2 を利用するDockerfile
FROM python:3.9
# 前提パッケージのインストール
RUN apt-get update && apt-get install -y less vim curl unzip sudo
# aws cli v2 のインストール
# https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-linux.html
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
RUN unzip awscliv2.zip
RUN sudo ./aws/install
WORKDIR /workdir
aws cli のインストールは公式ページを参照して実行しています。
次にdocker-compose.ymlです
コンテナ内の/workdir
を、プロジェクトのルートにマウントするように指定しています。
また、環境変数として、AWS_DEFAULT_REGION
とAWS_DEFAULT_OUTPUT
をそれぞれ指定しています。
docker-compose.yml
version: "3"
services:
aws-cli-container:
build: ./aws-cli
container_name: awscli-container
volumes:
- .:/workdir
env_file:
- .env
environment:
AWS_DEFAULT_REGION: ap-northeast-1
AWS_DEFAULT_OUTPUT: json
AWS_ACCESS_KEY_ID
とAWS_SECRET_ACCESS_KEY
は.env
というファイルに書いておき、ローカルで読み込みます。
GitHub のリポジトリを公開する場合は、このファイルは.gitignore
に追加して、git の管理から外しておくのを忘れないようにします。
以下はサンプルです
.env
AWS_ACCESS_KEY_ID='YOUR_AWS_ACCESS_KEY_ID'
AWS_SECRET_ACCESS_KEY='YOUR_AWS_SECRET_ACCESS_KEY'
利用方法
VS Code でターミナルを開き、docker-compose コマンドで起動する(Win/Mac 同じ)
docker-compose up
docker-compose run --rm aws-cli-container /bin/bash
起動したら dokcer の中の bash を実行しているので、ここでは試しに S3 のバケットを作って、適当なファイルをアップロードしてみる
[root@xxxxxxxxxxxx:/workdir]# aws s3 mb s3://test-20210711
make_bucket: test-20210711
[root@xxxxxxxxxxxx:/workdir]# aws s3 ls
2021-07-11 09:46:05 test-20210711
[root@xxxxxxxxxxxx:/workdir]# aws s3 cp .env_sample s3://test-20210711/
upload: ./.env_sample to s3://test-20210711/.env_sample
無事にアップロードできました
参考
Discussion