DockerFileとdocker-compose.ymlと、appディレクトリ(中身は空でOK)を同階層に配置。
DockerFile
FROM nikolaik/python-nodejs:python3.12-nodejs20-slim
RUN apt update && apt clean
RUN pip3 install awscli --upgrade \
&& pip3 install --upgrade pip \
&& pip3 install aws-cdk-lib \
&& npm install -g aws-cdk
docker-compose.yml
version: '3'
services:
aws-cdk:
build: .
image: aws_cdk_image
volumes:
- ./app:/app
container_name: aws_cdk
tty: true
コマンド
docker compose up -d
docker exec -it aws_cdk /bin/bash
mkdir -p /app/sample
cd /app/sample
cdk init --language python
cdk ls
cdk synth -o cloudformation --no-version-reporting --path-metadata false
# cdk synth [app_name] -o cloudformation --no-version-reporting --path-metadata false
app.py
#!/usr/bin/env python3
import os
import aws_cdk as cdk
from aws_cdk import (
DefaultStackSynthesizer
)
from sample.sample_stack import SampleStack
app = cdk.App()
SampleStack(app, "SampleStack", synthesizer=DefaultStackSynthesizer(
generate_bootstrap_version_rule=False
)
)
app.synth()
sample/sample_stack.py
from aws_cdk import (
Stack,
aws_s3_deployment as s3deploy,
aws_s3 as s3,
RemovalPolicy
)
from constructs import Construct
class SampleStack(Stack):
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
s3bucket = s3.Bucket(
self,
"MyS3Bucket",
bucket_name = "cdk-test-bucket-yyyymmdd",
versioned=False,
removal_policy=RemovalPolicy.DESTROY
)