AWS CDKでスタックを複数作ったりYAML出力する覚書
AWS CDKでスタックを複数作ったりYAML出力する覚書:
AWS CDKでは、cdk.Stackクラスを継承することでスタックを定義できる。
以下のよう書くことで
そしてconstructorの第二引数でスタック名を決めているので、
標準出力では1スタックしか出せないらしい。
スタック名の指定かoutputディレクトリの指定すればOK。
$ cdk --version 0.23.0 (build 1d705e7)
import cdk = require('@aws-cdk/cdk');
import sqs = require('@aws-cdk/aws-sqs');
export class TestStack extends cdk.Stack {
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
super(scope, id, props);
new sqs.Queue(this, 'ProjdynamoQueue', {
visibilityTimeoutSec: 300
});
}
}
cdk deployでデプロイできる。#!/usr/bin/env node
import cdk = require('@aws-cdk/cdk');
import { TestStack } from '../lib/test-stack';
const app = new cdk.App();
new TestStack(app, 'TestStack');
app.run();
cdk.Stackクラスをインスタンス化すればスタックができるので、以下のようにすると同じスタックを複数作れる。#!/usr/bin/env node
import cdk = require('@aws-cdk/cdk');
import { TestStack } from '../lib/test-stack';
const app = new cdk.App();
new TestStack(app, 'TestStack');
new TestStack(app, 'TestStack1');
new TestStack(app, 'TestStack2');
new TestStack(app, 'TestStack3');
app.run();
cdk deployやcdk synthにスタック名を渡してやれば任意のスタックのみ操作ということができる。$ cdk synth TestStack2
Resources:
ProjdynamoQueueF6B39BFE:
Type: AWS::SQS::Queue
Properties:
VisibilityTimeout: 300
Metadata:
aws:cdk:path: TestStack2/ProjdynamoQueue/Resource
CDKMetadata:
Type: AWS::CDK::Metadata
Properties:
Modules: aws-cdk=0.23.0,@aws-cdk/aws-iam=0.23.0,@aws-cdk/aws-kms=0.23.0,@aws-cdk/aws-s3-notifications=0.23.0,@aws-cdk/aws-sqs=0.23.0,@aws-cdk/cdk=0.23.0,@aws-cdk/cx-api=0.23.0,jsii-runtime=node.js/v10.5.0
複数スタック設定時のsynth
cdk synthは複数スタック設定していると引数必須になる。標準出力では1スタックしか出せないらしい。
$ cdk synth Multiple stacks selected (TestStack, TestStack1, TestStack2), but output is directed to stdout. Either select one stack, or use --output to send templates to a directory.
$ mkdir output $ cdk synth --output ./output && tree output/ ./output/TestStack.template.yaml ./output/TestStack1.template.yaml ./output/TestStack2.template.yaml output/ ├── TestStack.template.yaml ├── TestStack1.template.yaml └── TestStack2.template.yaml
コメント
コメントを投稿