いずみこんな悩みを解決できる記事を書きました!
僕は現役フリーランスエンジニア(歴10年)で、資格は13個保有しています。
「AWS CDKをPythonで書いてインフラをコード管理したい」とお考えではありませんか?
マネジメントコンソールでの手動構築を続けていて、環境の再現やレビューがしづらいと感じている方へ。
AWS CDKを使えば、使い慣れたPythonの構文のままAWSリソースを定義し、バージョン管理やコードレビューの対象にできます。



CloudFormationのYAMLを直接書くよりもだいぶ書きやすいです。
ということで、本記事ではAWS CDK(Python)でインフラをコード化する方法を解説します。



すぐ読み終わるので、ぜひ最後まで読んでくださいませ。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
AWS CDK(Python)でインフラをコード化する方法
早速ですが、AWS CDK(Python)でインフラをコード化する方法を解説します。
AWS CDKは、TypeScriptやPythonなどのプログラミング言語でAWSリソースを定義できるAWS公式のフレームワークです。
書いたコードは最終的にCloudFormationテンプレートに変換され、生成されたテンプレート経由でリソースが作成されます。
AWS CDKの環境構築
まずは、AWS CDKを使う環境を整えます。
AWS CDK ToolkitはNode.js製のCLIなので、事前にNode.jsをインストールしておきます。
Node.jsのインストール後、npmでAWS CDK Toolkitをグローバルインストールします。
npm install -g aws-cdk空のディレクトリを作成し、作成したディレクトリの中でcdk initを実行します。
mkdir my-cdk-app
cd my-cdk-app
cdk init app --language python実行すると、Pythonの仮想環境と一緒に、CDKアプリのひな形一式が生成されます。
仮想環境をアクティベートし、requirements.txtに記載された依存パッケージをインストールします。
source .venv/bin/activate
python -m pip install -r requirements.txt


フォルダ名にハイフンを使うと、Pythonのモジュール名部分はアンダースコアに自動変換されます。
S3バケットを作成するスタックを実装する
実際にS3バケットを1つ作成するスタックを実装してみます。
my_cdk_app/my_cdk_app_stack.pyを開き、S3バケットを定義するコードを記述します。
from aws_cdk import (
Stack,
RemovalPolicy,
)
from aws_cdk import aws_s3 as s3
from constructs import Construct
class MyCdkAppStack(Stack):
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
s3.Bucket(
self,
"MyFirstBucket",
versioned=True,
removal_policy=RemovalPolicy.DESTROY,
auto_delete_objects=True,
)removal_policyにRemovalPolicy.DESTROYを指定すると、スタック削除時にバケットも一緒に削除されます。



検証用の使い捨てバケットならDESTROY、本番用ならデフォルトのRETAINのままにしておくと安全です。
初めてCDKをデプロイするAWSアカウント・リージョンでは、事前にcdk bootstrapを1回実行しておく必要があります。
cdk bootstrapcdk bootstrapは、CDKがデプロイ時に使うS3バケットやIAMロールなどの実行環境を、対象のアカウント・リージョンに作成するコマンドです。
デプロイ前に、生成されるCloudFormationテンプレートをcdk synthで確認できます。
cdk synth
cdk deploycdk deployを実行すると、IAMに関する変更点の確認プロンプトを経て、実際にAWS上へリソースが作成されます。
不要になったら、cdk destroyでスタックごと削除できます。
cdk destroy


マネジメントコンソールをポチポチ操作するより、環境の再現がずっと楽になりますね。
実装時に気をつけたいポイント
Pythonの予約語であるlambdaは、Lambda関数を扱うモジュール名として使えません。
AWS CDKのPython用モジュールでは、import aws_cdk.aws_lambda as lambda_のように末尾にアンダースコアを付けた名前でインポートするのが慣例になっています。
また、requirements.txtに記載するバージョンは、pip freezeでの一括出力ではなく、直接利用するパッケージだけを手動で管理する方法が推奨されています。



依存関係が入り組んでくると差分レビューが大変になるので、地味に効いてくるポイントです。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
【厳選】フリーランスエンジニアにおすすめなエージェント3選


フリーランスエンジニアになるにはエージェントから案件をもらう必要があります。
僕が実際に利用しているおすすめエージェントを紹介しますね。



エージェントは必ず複数登録してください。
担当者によっては「全然案件紹介してくれない…」みたいなこともあるので…
僕は実際に5つのエージェントを使い回していますよ。
フリーランスを始めるなら「レバテックフリーランス


」
- 業界最大級の案件数。
- 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
- 案件参画中のフォローの充実。
※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。
レバテックフリーランス
![]()
![]()
とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!



僕もはじめてフリーランスの案件を貰ったのはレバテックフリーランス
![]()
![]()
保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。
手厚い保障を重視したいなら「Midworks


」
- 手厚い保障で正社員並みの安心感。
- 還元率60%超え&単価公開でクリアな契約。
- 給与保障制度(審査あり)。
Midworks
![]()
![]()
フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。



僕も何度か案件を紹介してもらいました。
自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。
週2〜3日の案件探しなら「ITプロパートナーズ


」
- IT案件に特化したフリーランスエージェント。
- 週2〜3日の案件が豊富。
- リモート案件が多く、直エンドなので単価も高い。
※詳細は「【週2・3案件】ITプロパートナーズとは?メリットや利用手順を解説!」を参照。
ITプロパートナーズ
![]()
![]()
週2〜3日から参画できる案件が豊富なので、起業したい人にもおすすめです。



週2〜3日の案件はある程度スキルがないと紹介してもらえない印象です。
とはいえ、週5の案件ももちろんありますし、僕が利用した時は迅速・丁寧に対応していただきました!
よくある質問
cdk bootstrapは何のために実行するのですか?
CDKがデプロイ処理で使うS3バケットやIAMロールなど、実行環境一式を対象のアカウント・リージョンに用意するためのコマンドです。
同じアカウント・リージョンの組み合わせであれば、複数のCDKプロジェクトで共通の実行環境を使い回せます。
cdk destroyでスタックを削除すると、リソースはどうなりますか?
各リソースに設定したremoval_policyの内容に従います。
RemovalPolicy.DESTROYを指定していれば、スタックの削除と同時に該当リソースも削除されます。
指定を省略した場合はRemovalPolicy.RETAINが既定値になり、スタックを削除してもリソース自体は残ります。
AWS CDKはTypeScriptとPythonのどちらで書くべきですか?
AWS CDKはPythonとTypeScriptの両方を公式にサポートしており、機能面での大きな差はありません。
すでにPythonで開発しているプロジェクトであれば、Pythonのままインフラ定義も書けるので学習コストを抑えやすいです。
まとめ
今回は、AWS CDK(Python)でインフラをコード化する方法について解説しました。
以下が本記事のまとめになります。



最後までお読みいただき、ありがとうございました!
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
- クソおすすめ本



海外のエンジニアがどういった思考で働いているかが理解できます。
海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。








