📚

AWS CLIを使うための Docker環境

2023/10/13に公開

最近、使用している環境を共有します。

環境

  • docker-compose使用
  • WSL2 with Ubuntu20.04

メモ

  • AWS CLIv2 です。
  • 念のため、SAMCLIも入れてます(sam local invoke … など使いたくなったとき用)
  • credential は、ホスト(Windows)側と共有します
    • dockerコンテナ側にreadonlyでマウント

参考

  • 下記を参考にさせていただきました。

https://zenn.dev/tokku5552/articles/aws-container

フォルダ構成

* docker-compose.yml
- .env/
  * .env.local
- aws-cli-workspace/
  * dockerfile
  * startup.sh

各ファイル

  • startup.sh でgitやbashまわりのセットアップしてます。
  • .env.local の各設定は、ご自身の環境に置き換えてください。
    • 多くの方は、AWSDIR_PATHC:/Users/(User名)/.aws になるのかと思います。
      • AWSプロファイルの設定が書いてある credentials のファイルがあればいいので、好きな場所でも構いません。
    • gitが不要でしたら、GIT_EMAILGIT_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