AWSリソースをコードで定義。AWS CDKとは

こんにちは。都築です。
 
今回はAWS CDKについてご紹介したいと思います。システムを構築する上でAWSを利用とすることは多いと思います。そのAWSリソースを構築する手段の一つとしてぜひ知っていただければと思います。

AWS CDKとは

AWS CDKとは公式によると下記となっています。

AWS Cloud Development Kitの略で、コードでクラウドインフラストラクチャを定義し、AWS CloudFormationを通じてプロビジョニングするためのフレームワーク

AWSデベロッパーガイド

簡単に言うとTypeScriptやPythonなどのプログラミング言語を使用して、S3やECSなどのAWSリソースを作成することが出来ます。AWS CloudFormationもAWSリソースを自動作成するサービスですが、そのAWS CloudFormationをコードで定義して作ることが出来るのがAWS CDKです。
 
これによって、多くの開発者が習得済みのプログラミング言語を使ってAWSリソースの構築が可能となります。また、本番環境とステージング環境などのように、一部異なるものの類似した環境を作成したい場合に、差異部分のコードのみを変更するだけで別リソースの構築が可能になります。

環境

今回は以下の環境でAWS CDKを実行しています。前提としてnodeやnpmを利用していますので、事前にインストールしてください。また、AWS configureなどAWSの設定も事前に必要となります。

Ubuntu
20.04
Node
21.6.1
npm
10.2.4
AWS CLI
2.15.17
AWS CDK
2.126.0

AWS CDKのインストール

まずAWS CDKを利用するために、インストールを実施します。下記コマンドを実行し、npmを利用してAWS CDKをインストールします。

~$npm install -g aws-cdk

インストールが完了したら、下記コマンドで確認します。バージョンが表示されたら、インストールが正常に完了しています。
~$cdk --version
~$2.126.0 (build fb74c41)

AWS CDKプロジェクトを作成する

実際にAWSのリソースを作成する前に、まずはAWS CDKプロジェクトを作成します。適当なディレクトリを作成し、今回はTypeScriptで実施しますのでTypeScriptを指定して作成します。

~$mkdir cdkwork
~$cd cdkwork
~/cdkwork$cdk init app --language typescript

bin/cdkwork.tsやlib/cdkwork-stack.tsなどが生成されていれば成功です。また、CDKを初めてデプロイする際は以下コマンドでbootstrapを実行します。CDKアプリケーションをデプロイするために必要なリソースが作成されます。
~/cdkwork$cdk bootstrap

また、TypescriptでAWS CDKを実行する場合、実行前にコンパイルする必要があります。今回は自動でコンパイルされるように以下コマンドを実行します。
~/cdkwork$npm run watch

S3のBucketをAWS CDKで作成

上記まででAWS CDKを実行する準備が整いましたら、実際にAWS CDKでAWSリソースを作成します。AWS CDKで作成できるAWSリソースは多岐に渡りますが、今回は簡単なリソースとしてS3のバケットを作成します。
 
前段のcdk initでbin/cdkwork.tsに実行するTypescriptとcdkwork.tsが呼び出すlib/cdkwork-stack.tsが作成されています。デフォルトで作成されているコードを修正し、S3のBucketを作成するコードに変更します。
 
lib/cdkwork-stack.ts

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';

export class CdkworkStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const bucket = new s3.Bucket(this, 'CreateBucket', {
      bucketName: "sample-bucket-tsuzuki",
      versioned: true
    });
  }
}

まずはコードで定義されたスタックの一覧を表示します。今回はデフォルトで定義されたCdkworkStackというスタックが表示されます。
~/cdkwork$cdk list
CdkworkStack

cdk deployでCdkworkStackを実行します。
~/cdkwork$cdk depoly CdkworkStack

CdkworkStack: deploying... [1/1]
CdkworkStack: creating CloudFormation changeset...

Deployment time: 48.09s

Stack ARN:
arn:aws:cloudformation:ap-northeast-1:xxxxxxxxx:stack/CdkworkStack/xxxxxxxxxxxxxxxxxxxxxxxxxxx

Total time: 53.03s

S3が作成されているか確認します。
~/cdkwork$aws s3 ls
sample-bucket-tsuzuki

想定通りにsample-bucket-tsuzukiというS3 Bucketが作成されています。S3のBucketを作成するにはAWSのコンソールから作成することもできますが、AWS CDKを用いることで、このようにコードでS3のBucketをすることが出来ます。

まとめ

今回はS3でしたがEC2やECS、Lambdaなど様々なAWSリソースを作成することが出来ます。
 
また、ECSやCodeCommit、CodeBuild、Codepipelineなど各AWSリソースを紐づけて、システム全体を包括的に作成することもできます。
 
是非、お試しいただければと思います。
 
 
 
 
《関連記事》

IAM
技術
2024.3.1(Fri)

【AWS入門】IAMについて簡単にまとめてみた

#まとめ#ツール

Simple Email Serviceを導入
技術
2021.7.30(Fri)

【AWS活用術】Simple Email Serviceを導入してメール送信

 

CloudWatchでディスク容量とメモリを監視
技術
2021.8.27(Fri)

【AWS活用術】CloudWatchでディスク容量とメモリを監視する

記事をシェア
MOST VIEWED ARTICLES