AWS CDKを学習していく過程を記録する。
はじめに
AWS CDK(Cloud Development Kit) とは、プログライミング言語でインフラを定義し、AWS CloudFormationを通してデプロイできる開発フレームワークである。
AWS CloudFormationはJSONやYAMLといったテキストファイルでリソースが定義される一方、AWS CDKは馴染みのあるプログラミング言語(JavaScript、TypeScript、Python、Java、C#など)で書くことができる。
また、アプリケーションとインフラをまとめて管理できるメリットもある。
実施したこと
- AWS CDK TypeScriptプロジェクトの作成
- デプロイ
- 実行結果確認
1. AWS CDK TypeScriptプロジェクトの作成
cdk はあらかじめインストールしてある。
% cdk --version
2.40.0 (build 56ba2ab)
プロジェクト用のフォルダを作成し、プロジェクトを立ち上げる。
% cdk init app --language typescript
下記構成でフォルダおよびファイルが作成された。
├── README.md
├── lib
└── app-stack.ts
├── test
└── app.test.ts
├── bin
└── app.ts
├── node_modules
├── tsconfig.json
├── cdk.json
├── package-lock.json
├── jest.config.js
├── package.json
エントリポイント
/bin/app.tsがCDKアプリケーションのエントリポイントであり、/lib/app-stack.tsからAppStackクラスをインスタンス化する。
#!/usr/bin/env node
import 'source-map-support/register';
import * as cdk from 'aws-cdk-lib';
import { AppStack } from '../lib/app-stack';
const app = new cdk.App();
new AppStack(app, 'AppStack', { });
メインスタック
/lib/app-stack.tsでは、AWSリソースの集まりであるスタックが定義されており、/bin/app.tsでロードされる。
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
export class AppStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
});
}
}
2. デプロイ
CLIの設定
コンソールからIAMユーザー作成後、下記コマンドを入力。
% aws configure
対話形式で、Access Key, Secret Access Key, Default region name, Default output format を設定した。
設定内容は下記より確認できる。
% aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ******************** shared-credentials-file
secret_key ******************** shared-credentials-file
region ap-northeast-1 config-file ~/.aws/config
cdk bootstrap
cdk bootstrap コマンドで、デプロイに必要なIAMロールやS3などを作成する。
% cdk bootstrap
ビルド
ビルド、コンパイルするために npm run build コマンドを実行する。
ただし、libフォルダ下のアプリケーションスタックのみの修正であれば、後述のデプロイコマンド実行時に自動的にビルド、コンパイルされるため、このコマンドは不要である。
% npm run build
※ここで TypeScript のエラーに遭遇したが、回避方法については[備忘録] error TS1005, TS1011, TS1128 の解消にまとめた。
デプロイ
最後に cdk deploy コマンドでアプリケーションスタックをデプロイする。
% cdk deploy
3. 実行結果確認
cloudformationから、デプロイしたスタックが確認できる。
最後に
AWS CDK TypeScriptプロジェクトの作成、デプロイまで確認できた。
次は、API Gateway, Lambdaを構築していきたい。
参考にした文献を記す。