AWSリソースをコードで定義。AWS CDKとは
目次
こんにちは。都築です。
今回はAWS CDKについてご紹介したいと思います。システムを構築する上でAWSを利用とすることは多いと思います。そのAWSリソースを構築する手段の一つとしてぜひ知っていただければと思います。
AWS CDKとは
AWS CDKとは公式によると下記となっています。
AWS Cloud Development Kitの略で、コードでクラウドインフラストラクチャを定義し、AWS CloudFormationを通じてプロビジョニングするためのフレームワーク
簡単に言うと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リソースを紐づけて、システム全体を包括的に作成することもできます。
是非、お試しいただければと思います。
《関連記事》