はじめに
このアドベントカレンダーでは今更な話だと思いますが、CDK2.0が一般公開されたことを記念して早速試してみようという内容です。
また、2020年くらいに紹介されたprojenというCDK(に限らずですが)のプロジェクト構成管理をより快適にするためのツールがあるので、そのprojenでも既にcdk2.0に対応しているのかを確認してみました。
projenとは
projenはソースコードの開発を行うために設定するプロジェクトファイルを自動管理してくれる開発ツールです。例えばCDKに限らない話だと思いますが、一つのプロジェクトを構成するときに色んな設定ファイルをいじることになると思います。
- .gitignore
- package.json
- tsconfig.json
- etc...
設定したは良いものの他のプロジェクトで一々ファイルコピーするのは面倒で、この設定ファイル群をまとめて使いまわしたい!という要望を叶えてくれるのがこのprojenです
使ってみる
以下のコマンドで導入です!
mkdir my-cdk-project && cd my-cdk-project
npx projen new awscdk-app-ts
これでCDKのプロジェクトの準備は完了です。若干aws-cdk
のデフォルトのプロジェクト構成と異なりますが、いつものCDKの初期のコードが↓のような感じで用意されています。cdk2.0の特徴として、他の標準のConstructのライブラリをaws-cdk-lib
でモノリシックに管理するようになりました。
import { App, Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';
export class MyStack extends Stack {
constructor(scope: Construct, id: string, props: StackProps = {}) {
super(scope, id, props);
// define resources here...
}
}
// for development, use account/region from cdk cli
const devEnv = {
account: process.env.CDK_DEFAULT_ACCOUNT,
region: process.env.CDK_DEFAULT_REGION,
};
const app = new App();
new MyStack(app, 'my-stack-dev', { env: devEnv });
// new MyStack(app, 'my-stack-prod', { env: prodEnv });
app.synth();
projenで特にバージョンを指定していなかった場合、もうCDK2.0以降のバージョンで構成されるようになったみたいですね。projenに関する設定ファイルは.projenrc.js
で編集できます。
const { awscdk } = require('projen');
const project = new awscdk.AwsCdkTypeScriptApp({
cdkVersion: '2.1.0',
defaultReleaseBranch: 'main',
name: 'my-cdk-project',
// deps: [], /* Runtime dependencies of this module. */
// description: undefined, /* The description is just a string that helps people understand the purpose of the package. */
// devDeps: [], /* Build dependencies for this module. */
// packageName: undefined, /* The "name" in package.json. */
// release: undefined, /* Add release management to this project. */
});
project.synth();
cdkVersion
で指定されているのがCDKのバージョンです。デフォルトで2.0
以降のバージョンになっていることが確認できました。
さいごに
かなり薄い内容になってしまいました。ごめんさない。。。
せっかくprojenも2.0に対応していたみたいなので、色々やってみたいと思います!