Skip to Content

お仕事用AWS CLIv2 Dockerイメージ

概要

Windows端末の職場で快適にAWS CLIv2を使うための準備

ストレス削減ポイント

  • zshによりllのエイリアスが効く
  • bash, zshともにAWS CLI コマンド補完 が効いている
  • 個人的に仕事だと何かと使うcurl, jq入り
    • nc, iputils(ping)を追加 /2020.3.2

イケてないポイント

  • AmazonLinuxをベースにしたから容量が600MB弱
    • 別の用途にもちょろっと使えるかと思いまして…

Dockerfile

https://hub.docker.com/r/bigmuramura/awscliv2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
FROM amazonlinux:2

RUN yum install -y python3 curl jq git zsh nc iputils

RUN python3 -m pip install git+https://github.com/boto/botocore.git@v2
RUN python3 -m pip install git+https://github.com/aws/aws-cli.git@v2

RUN echo $'complete -C /usr/local/bin/aws_completer aws' >> $HOME/.bashrc
RUN echo -e $'\
autoload -Uz compinit\n\
compinit\
'>> $HOME/.zshenv
RUN echo $'source /usr/local/bin/aws_zsh_completer.sh' >> $HOME/.zshrc

WORKDIR /root

ビルド

1
docker build -t awscliv2:latest .

テスト実行

zsh指定でも実行可

1
docker run -it --rm awscliv2 zsh

コンテナ内のコマンド例

llや、aws s Tab補完 で候補が表示される

1
2
3
4
5
6
7
8
[root@d05a1849b7a7]~# ll
total 0
[root@d05a1849b7a7]~# aws s
s3                 savingsplans       service-quotas     signer             sqs                storagegateway
s3api              sdb                servicecatalog     sms                ssm                sts
s3control          secretsmanager     servicediscovery   sms-voice          sso                support
sagemaker          securityhub        ses                snowball           sso-oidc           swf
sagemaker-runtime  serverlessrepo     shield             sns                stepfunctions     

bashに切り替えても Tab補完 が効く

1
2
3
4
5
6
7
[root@d05a1849b7a7]~# bash 
bash-4.2# aws s
s3                 savingsplans       service-quotas     signer             sqs                storagegateway
s3api              sdb                servicecatalog     sms                ssm                sts
s3control          secretsmanager     servicediscovery   sms-voice          sso                support
sagemaker          securityhub        ses                snowball           sso-oidc           swf
sagemaker-runtime  serverlessrepo     shield             sns                stepfunctions  

実践向け実行

資格情報をコンテナに渡さないと何も仕事にならない
会社はWindowsなので引数でアクセスキーを直接渡して実行している

docker pull

自分でビルドしてもいいけど面倒くさいので、dockerhubにあげてるからpullしてくる

1
docker pull bigmuramura/awscliv2

アクセスキー渡して実行

AWS_ACCESS_KEY_ID=と、AWS_SECRET_ACCESS_KEY==の後ろにキーを直接入力

1
docker run -it --rm -e AWS_ACCESS_KEY_ID=xxx -e AWS_SECRET_ACCESS_KEY=xxx -e AWS_DEFAULT_REGION=ap-northeast-1 bigmuramura/awscliv2 zsh

AWSへ接続できるかテスト

コマンドが短いからいつもS3の一覧見れるかでチェックしている
S3のRead権限がない場合はその時々に応じて適当にコマンド入れてる

1
aws s3 ls

過去の記事もご参考にしてください
DockerコンテナにAWS資格情報を手軽に渡したい
docker run時にAWS資格情報を渡してCLIやSDKを使う

感想

クセでllしてしまうからzshで概ね満足
bashのalias設定してもいいけど、自分だけの環境ならfishか、zsh使いたい年頃なので
今更ながらalpineをベースで作った方がよかったかな…

参考

https://qiita.com/ikeisuke/items/3a010e7922795eb79d76
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-completion.html