「AWS CDK」とは?
「AWS Cloud Development Kit」の略であり、OSSのインフラ構成ツールです。
PythonやTypeScriptなどの言語でCloudFormationのコードを記述するイメージです。
TerraformやServerless Frameworkと異なり、AWSの公式ツールのため、マルチクラウドでないならCDKを選択するのはありだと思います。
v1.0.0がリリースされたのが2019/07/12であり、新しいツールです。
https://github.com/aws/aws-cdk/releases
環境
- OS:macOS Catalina 10.15
- CDK:1.19.0 (build 5597bbe)
- Node.js:v12.14.0
- npm:6.13.4
前提条件
- Node.jsとnpmをインストールしている
セットアップ
### CDKのインストール
npmでグローバルにインストールします。
$ npm install -g aws-cdk
ローカルにインストールして npx cdk
で実行する方法も考えられますが、フォルダが空でないと cdk init
できないのでオススメしません。
$ npx cdk init app --language=typescript
`cdk init` cannot be run in a non-empty directory!
CDKのバージョン確認
CDKのバージョンを確認します。
$ cdk --version
1.19.0 (build 5597bbe)
もし bash: cdk: command not found
と出力される場合、CDKをグローバルにインストールしていない可能性があります。
npm install
時に -g
オプションを付けたか確認してください。
操作方法
CDKテンプレートの適用
cdk init
を実行すると、使えるテンプレートの一覧が出力されます。
$ cdk init
Available templates:
* app: Template for a CDK Application
└─ cdk init app --language=[csharp|fsharp|java|javascript|python|typescript]
* lib: Template for a CDK Construct Library
└─ cdk init lib --language=typescript
* sample-app: Example CDK Application with some constructs
└─ cdk init sample-app --language=[csharp|fsharp|java|javascript|python|typescript]
私はTypeScriptで通常のCDKアプリを作成したいため、以下のコマンドを実行しました。
$ cdk init app --language=typescript
Applying project template app for typescript
Executing npm install...
npm WARN deprecated core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
npm WARN deprecated left-pad@1.3.0: use String.prototype.padStart()
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN cdk_sample@0.1.0 No repository field.
npm WARN cdk_sample@0.1.0 No license field.
# Welcome to your CDK TypeScript project!
This is a blank project for TypeScript development with CDK.
The `cdk.json` file tells the CDK Toolkit how to execute your app.
## Useful commands
* `npm run build` compile typescript to js
* `npm run watch` watch for changes and compile
* `npm run test` perform the jest unit tests
* `cdk deploy` deploy this stack to your default AWS account/region
* `cdk diff` compare deployed stack with current state
* `cdk synth` emits the synthesized CloudFormation template
ls
で一通りファイルが生成されたことを確認します。
$ ls -a
. .. .git .gitignore .npmignore README.md bin cdk.context.json cdk.json jest.config.js lib node_modules package-lock.json package.json test tsconfig.json
自動生成された README.md
に記載されている通り、 cdk deploy
を実行するだけでデプロイされます。
モジュールのインストール
デフォルトでは @aws-cdk/core
のみインストールされるため、必要に応じてモジュールをインストールします。
$ npm install @aws-cdk/aws-iam
$ npm install @aws-cdk/aws-lambda
$ npm install @aws-cdk/aws-ecs
$ npm install @aws-cdk/aws-rds
$ npm install @aws-cdk/aws-logs
$ npm install @aws-cdk/aws-events
$ npm install @aws-cdk/aws-events-targets
おわりに
これでCDKを使えるようになりました。
使い慣れている言語でAWSのインフラコードをガンガン書いていきましょう!