📚
AWS CLIを使うための Docker環境
最近、使用している環境を共有します。
環境
- docker-compose使用
- WSL2 with Ubuntu20.04
メモ
- AWS CLIv2 です。
- 念のため、SAMCLIも入れてます(
sam local invoke …
など使いたくなったとき用) - credential は、ホスト(Windows)側と共有します
- dockerコンテナ側にreadonlyでマウント
参考
- 下記を参考にさせていただきました。
フォルダ構成
* docker-compose.yml
- .env/
* .env.local
- aws-cli-workspace/
* dockerfile
* startup.sh
各ファイル
-
startup.sh
でgitやbashまわりのセットアップしてます。 -
.env.local
の各設定は、ご自身の環境に置き換えてください。- 多くの方は、
AWSDIR_PATH
はC:/Users/(User名)/.aws
になるのかと思います。- AWSプロファイルの設定が書いてある
credentials
のファイルがあればいいので、好きな場所でも構いません。
- AWSプロファイルの設定が書いてある
- gitが不要でしたら、
GIT_EMAIL
やGIT_NAME
は削除しても大丈夫です。
- 多くの方は、
docker-compose.yml
version: "3"
services:
# aws-cli-workspace
aws-cli-workspace:
image: my-aws-cli-workspace-image
build:
context: aws-cli-workspace
dockerfile: dockerfile
volumes:
- ${WORKDIR_PATH:?not found!}:/workdir
- ${AWSDIR_PATH:?not found!}:/root/.aws:ro
environment:
AWS_DEFAULT_REGION: ap-northeast-1
AWS_DEFAULT_OUTPUT: json
GIT_EMAIL: ${GIT_EMAIL:?not found!}
GIT_NAME: ${GIT_NAME:?not found!}
.env.local
# AWS Profiles
AWSDIR_PATH=C:/xxx/.aws # configure your environment!
# Work Directory
WORKDIR_PATH=\\wsl.localhost\Ubuntu-20.04\your-workdir # configure your environment!
# Git
GIT_EMAIL="your@email"
GIT_NAME="your name"
Dockerfile
# AWS CLI2 を利用するDockerfile
FROM python:3.11
# install packages
RUN apt-get update && apt-get install -y less vim curl unzip sudo jq gettext-base
# install awscli v2
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
sudo ./aws/install && \
rm awscliv2.zip
# install samcli
RUN wget "https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip" && \
unzip aws-sam-cli-linux-x86_64.zip -d sam-installation && \
sudo ./sam-installation/install && \
rm aws-sam-cli-linux-x86_64.zip
WORKDIR /workdir
COPY startup.sh /startup.sh
ENTRYPOINT ["/startup.sh"]
startup.sh
#!/bin/bash
# configure git
git config --global user.email "${GIT_EMAIL}"
git config --global user.name "${GIT_NAME}"
# make `ls -al` aliase
echo 'alias ll="ls -al"' >> ~/.bashrc
source ~/.bashrc
# execute bash
exec "$@"
起動方法
docker-compose --env-file .env/.env.local run --rm aws-cli-workspace bash
.vscodeご利用の方は、.vscode/tasks.json
作っておくと便利かもしれません。
.vscode/tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Run AWS-CLI Workspace",
"type": "shell",
"command": "docker-compose --env-file .env/.env.local run --rm aws-cli-workspace bash",
"options": {
"cwd": "/path/to/your/work-directory",
},
"presentation": {
"reveal": "always",
"panel": "new"
},
"isBackground": true,
"problemMatcher": []
}
]
}
Discussion