LoginSignup
13
14

More than 3 years have passed since last update.

AWS CDKをDocker環境で実行する方法

Last updated at Posted at 2019-11-04

手順

dockerとdocker-composeがインストールされている環境で、以下の通り準備および実行します。

0. ディレクトリ構成

aws-cdk
- Dockerfile
- docker-compose.yml
- docker-compose-run.sh

以下、aws-cdkディレクトリ内での作業となります。

1. Dockerfileを作成

Pythonの公式コンテナイメージを使って、AWS CDK入りのコンテナイメージを作成します。
必要なコマンドをDockerfileに書き連ねていきます。
インストールされるAWS CDKはPython3対応です。

Dockerfile
# the latest Python
FROM python:latest

# install the latest nodejs & npm
RUN apt update \
    && apt install -y nodejs \
       npm \
    && apt clean

# install the latest AWS CDK
RUN npm install -g aws-cdk \
    && pip3 install --upgrade aws-cdk.core

# install the latest AWSCLI
RUN pip3 install awscli --upgrade

2. docker-compose.ymlを作成

AWS CLIの認証情報を持つための、コンテナ側の環境変数を定義しておきます。
後にdocker-compose runを実行する時に、ホスト側の環境変数から渡すようにしています。
これは、不特定多数が使う可能性のあるコンテナイメージの構成情報と言えるdocker-compose.ymlそのものに、認証情報を埋め込まないための対策です。

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

3. docker-compose buildを実行

docker-compose buildを実行すれば、コンテナイメージの出来上がりです。

bash
$ docker-compose build
(結果は省略)
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
aws-cdk             latest              6bf38dcfd3e6        27 minutes ago      1.16GB
python              latest              d6a7b0694364        2 weeks ago         932MB

4. docker-compose-run.shを作成

各自で払い出したAWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEYで<>ごと置き換えてください。
--rmはテスト用で入っていますが、お好みで外してください。
ここで指定したアクセスキーはdocker-compose runする時に渡されます。

docker-compose-run.sh
#!/bin/bash

export AWS_ACCESS_KEY_ID=<各自のAWS_ACCESS_KEY_ID>
export AWS_SECRET_ACCESS_KEY=<各自のAWS_SECRET_ACCESS_KEY>
export AWS_DEFAULT_REGION=ap-northeast-1
export AWS_DEFAULT_OUTPUT=json

docker-compose run --rm aws-cdk /bin/bash

注: gitに上げないようにしましょう。

5. docker-compose-run.shを実行

4.で作っておいた.shを使ってコンテナを起動します。

bash
$ ./docker-compose-run.sh
root@23c8612bfd7b:/# aws --version
aws-cli/1.16.272 Python/3.8.0 Linux/4.14.146-93.123.amzn1.x86_64 botocore/1.13.8
root@23c8612bfd7b:/# cdk --version
1.15.0 (build bdbe3aa)

簡単かつ少ない手順で、AWS CDKをコンテナで動かすことができました。

13
14
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
13
14