【AWS】AWS CDK(Python)でインフラをコード化する方法

当ページのリンクには広告が含まれています。
いずみ

こんな悩みを解決できる記事を書きました!

僕は現役フリーランスエンジニア(歴年)で、資格は個保有しています。

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向けの案件が豊富。公式
執筆者/監修者
  • フリーランスエンジニア(保有資格個、企業と直接契約
  • ブログ・アフィリエイト歴7年(2018年〜)
  • ブランドせどりで月利50万円⇨脱サラ
  • 投資(仮想通貨・FX)歴7年(2018年〜)
  • X(旧Twitter)フォロワー約1,900人
  • 運営者情報はこちら
いずみです
目次

AWS CDK(Python)でインフラをコード化する方法

早速ですが、AWS CDK(Python)でインフラをコード化する方法を解説します。

AWS CDKは、TypeScriptやPythonなどのプログラミング言語でAWSリソースを定義できるAWS公式のフレームワークです。

書いたコードは最終的にCloudFormationテンプレートに変換され、生成されたテンプレート経由でリソースが作成されます。

AWS CDKの環境構築

まずは、AWS CDKを使う環境を整えます。

STEP
Node.jsとAWS CDK Toolkitをインストールする

AWS CDK ToolkitはNode.js製のCLIなので、事前にNode.jsをインストールしておきます。

Node.jsのインストール後、npmでAWS CDK Toolkitをグローバルインストールします。

npm install -g aws-cdk
STEP
cdk initでプロジェクトを作成する

空のディレクトリを作成し、作成したディレクトリの中で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つ作成するスタックを実装してみます。

STEP
スタッククラスを実装する

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のままにしておくと安全です。

STEP
cdk bootstrapを実行する

初めてCDKをデプロイするAWSアカウント・リージョンでは、事前にcdk bootstrapを1回実行しておく必要があります。

cdk bootstrap

cdk bootstrapは、CDKがデプロイ時に使うS3バケットやIAMロールなどの実行環境を、対象のアカウント・リージョンに作成するコマンドです。

STEP
cdk deployでデプロイする

デプロイ前に、生成されるCloudFormationテンプレートをcdk synthで確認できます。

cdk synth
cdk deploy

cdk 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つのエージェントを使い回していますよ。

フリーランスを始めるなら「

案件数マージン率単価
約88,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 業界最大級の案件数。
  • 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
  • 案件参画中のフォローの充実。

※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。

は業界最大手のフリーランスエージェントです。

とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!

いずみ

僕もはじめてフリーランスの案件を貰ったのはです。

保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。

手厚い保障を重視したいなら「

案件数マージン率単価
約10,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 手厚い保障で正社員並みの安心感。
  • 還元率60%超え&単価公開でクリアな契約。
  • 給与保障制度(審査あり)。

は手厚い保障が特徴のフリーランスエージェントです。

フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。

いずみ

僕も何度か案件を紹介してもらいました。

自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。

週2〜3日の案件探しなら「

案件数マージン率単価
約5,000件非公開
初心者福利厚生申し込み
経験者向け無料
Good Point
  • 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)でインフラをコード化する方法について解説しました。

以下が本記事のまとめになります。

まとめ
  • AWS CDKはPythonなどのコードでAWSリソースを定義できるフレームワークである。
  • cdk init app –language pythonでプロジェクトを作成し、cdk deployでデプロイできる。
  • リソース削除時の挙動はremoval_policyで制御する。
まとめ
いずみ

最後までお読みいただき、ありがとうございました!

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
  • クソおすすめ本
¥4,480 (2024/06/01 23:28時点 | Amazon調べ)
\楽天ポイント4倍セール!/
楽天市場
いずみ

海外のエンジニアがどういった思考で働いているかが理解できます。

海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。

この記事が気に入ったら
フォローしてね!

シェアしてね!
  • URLをコピーしました!
目次