0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS CDKAdvent Calendar 2021

Day 24

projenでCDK v2.0が使えるのか試してみた

Last updated at Posted at 2021-12-23

はじめに

このアドベントカレンダーでは今更な話だと思いますが、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でモノリシックに管理するようになりました。

src/main.ts
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で編集できます。

.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に対応していたみたいなので、色々やってみたいと思います!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?