-
AWS CDKをTypeScriptで試してみる
- 2019年7月16日
- AWS
AWS Cloud Development Kit(AWS CDK)がTypeScriptとPythonを正式サポートしたようです。
管理コンソールでボタン押してリソース管理するのが許されるのは小学生までだよねー、ということで、AWSでインフラ構築するならCloudFormationなりTerraformなりでInfrastructure as a Codeをちゃんと実践すべきなのですが、何かと柔軟性に欠けるCloudFormationと比べて使い慣れた言語で柔軟に書けるのがこのCDKです。裏側はCloudFormationらしいです。
とりあえず試してみます。私はTypeScript推進派なのでTypeScriptを使います。試した環境はmacOS 10.14とNode 10.16です。
$ npm install aws-cdk -g
$ mkdir cdk-test
$ cd cdk-test
$ cdk init --language=typescript
こんな感じのものが生成されると思います。
.
├── README.md
├── bin
│ └── cdk-test.ts
├── cdk.json
├── lib
│ └── cdk-test-stack.ts
├── node_modules
├── package-lock.json
├── package.json
└── tsconfig.json
package.jsonを見ると
{
"name": "cdk-test",
"version": "0.1.0",
"bin": {
"cdk-test": "bin/cdk-test.js"
},
"scripts": {
"build": "tsc",
"watch": "tsc -w",
"cdk": "cdk"
},
"devDependencies": {
"@types/node": "8.10.45",
"typescript": "^3.3.3333",
"ts-node": "^8.1.0",
"aws-cdk": "^1.0.0"
},
"dependencies": {
"@aws-cdk/core": "^1.0.0",
"source-map-support": "^0.5.9"
}
}
またtsconfig.jsonもちゃんと設定済みのものが生成されていて、何もしなくてもTypeScriptが使える状態になっています。素晴らしいですね。
ではコードを書いていきます。lib/cdk-test-stack.ts にスケルトンが生成されているので、そこに追記していきます。今回はお試しでS3のバケットを1つ作ってみます。まずはS3を扱うためのパッケージをインストールします。
$ npm install @aws-cdk/aws-s3 --save
続いてバケットを作るコードを実装します。lib/cdk-test-stack.ts を編集します。
import cdk = require('@aws-cdk/core');
import * as s3 from '@aws-cdk/aws-s3';
export class CdkTestStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const testBucket = new s3.Bucket(this, 'TheNewBucketID', {bucketName: 'the-new-s3-bucket'});
}
}
ビルドします。
$ npm run build
デプロイします。環境変数なり aws configure を使うなりして認証情報は事前に設定しておいてください。
$ cdk deploy
できた!
ちなみに cdk synth コマンドでCloudFormationのテンプレートを生成できます。先ほどのコードはこんな感じになりました。
Resources:
TheNewBucketID0B5AF966:
Type: AWS::S3::Bucket
Properties:
BucketName: the-new-s3-bucket
UpdateReplacePolicy: Retain
DeletionPolicy: Retain
Metadata:
aws:cdk:path: CdkTestStack/TheNewBucketID/Resource
CDKMetadata:
Type: AWS::CDK::Metadata
Properties:
Modules: aws-cdk=1.0.0,@aws-cdk/aws-events=1.0.0,@aws-cdk/aws-iam=1.0.0,@aws-cdk/aws-kms=1.0.0,@aws-cdk/aws-s3=1.0.0,@aws-cdk/core=1.0.0,@aws-cdk/cx-api=1.0.0,@aws-cdk/region-info=1.0.0,jsii-runtime=node.js/v10.16.0
CDKならループや分岐も自由に書けるので、CloudFormationをそのまま使うより圧倒的に楽ですね。
エディタのコード補完を活用すれば、シンプルな構成ならリファレンスとにらめっこしなくてもノリと勢いで書けてしまいます。そう、TypeScriptならね。
公式ドキュメントはこちら。
この記事を書いた人 : 佐藤寛之
AWS bluebird css CSV docker docker compose electron ES6 es2015 Git Heroku ITコンサルティング JavaScript justinmind less mongoDB Node.js php PostgreSQL Private Space Promise React react-router reactjs Salesforce scss Selenium Builder selenium IDE Selenium WebDriver stylus TypeScript VirtualBox VisualStudioCode vue vuejs webpack システム開発プロジェクト セキュリティ ワイヤーフレーム 上流工程 卒FIT 帳票 要件定義 設計 電力小売業界