🗂
AWS CDKやってみた
install
インストール可能なバージョンの確認
work $ npm info aws-cdk versions
CDKはバージョンが揃っていないとうまくいかないようなので、バージョンを指定してインストールしていく
work $ npm install -g aws-cdk@1.134.0
work $ cdk --version
1.134.0 (build dd5e12d)
init
work $ cdk init sample-app --language typescript
生成された状態のファイル内容
この2つのファイルを編集することで、構築していく
作業ディレクトリのworkにちなんだ名称になっている
bin/work.ts
#!/usr/bin/env node
import * as cdk from '@aws-cdk/core';
import { WorkStack } from '../lib/work-stack';
const app = new cdk.App();
new WorkStack(app, 'WorkStack');
lib/work-stack.ts
import * as sns from '@aws-cdk/aws-sns';
import * as subs from '@aws-cdk/aws-sns-subscriptions';
import * as sqs from '@aws-cdk/aws-sqs';
import * as cdk from '@aws-cdk/core';
export class WorkStack extends cdk.Stack {
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const queue = new sqs.Queue(this, 'WorkQueue', {
visibilityTimeout: cdk.Duration.seconds(300)
});
const topic = new sns.Topic(this, 'WorkTopic');
topic.addSubscription(new subs.SqsSubscription(queue));
}
}
diff
cdk diff
このコマンドで、ローカルの環境とAWS上の差分が確認できるが、
デフォルトの状態で、CDKMetadataの差分がやたらと出る
これを無くすために1行設定追加する
cdk.json
{
"app": "npx ts-node --prefer-ts-exts bin/work.ts",
"versionReporting": false, <- この行追加
"watch": {
"include": [
"**"
],
"exclude": [
"README.md",
"cdk*.json",
"**/*.d.ts",
"**/*.js",
"tsconfig.json",
"package*.json",
"yarn.lock",
"node_modules",
"test"
]
},
"context": {
"@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId": true,
"@aws-cdk/core:enableStackNameDuplicates": true,
"aws-cdk:enableDiffNoFail": true,
"@aws-cdk/core:stackRelativeExports": true,
"@aws-cdk/aws-ecr-assets:dockerIgnoreSupport": true,
"@aws-cdk/aws-secretsmanager:parseOwnedSecretName": true,
"@aws-cdk/aws-kms:defaultKeyPolicies": true,
"@aws-cdk/aws-s3:grantWriteWithoutAcl": true,
"@aws-cdk/aws-ecs-patterns:removeDefaultDesiredCount": true,
"@aws-cdk/aws-rds:lowercaseDbIdentifier": true,
"@aws-cdk/aws-efs:defaultEncryptionAtRest": true,
"@aws-cdk/aws-lambda:recognizeVersionProps": true,
"@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021": true
}
}
deploy
CloudFormationの形式に変換できるので意図通りになっているか確認できる
work $ cdk synth
デプロイするときの一時保存用のS3を作るコマンド最初に一度行うのみでいい
CDKToolKitというスタックがCloudFormationに作成され、
cdktoolkit-stagingbucket-xxxxxという名称のS3バケットが作成される
work $ cdk bootstrap
デプロイ実行すると、CloudFormationのスタックが作成されて、デプロイされる
work $ cdk deploy
clean
CloudFormationのスタックが削除され、デプロイしたものが全て消える(S3などは残る)
PC上のファイルはそのまま残っている状態
work $ cdk destroy
Discussion