使うかどうかわからないけど、見つけたのでとりあえず覚書。
$ 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
});
}
}
const app = new cdk.App();
new TestStack(app, 'TestStack');
app.run();
これがこうなる。
Resources:
ProjdynamoQueueF6B39BFE:
Type: AWS::SQS::Queue
Properties:
VisibilityTimeout: 300
Metadata:
aws:cdk:path: TestStack/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
クラスを使わずに書く
注目すべきなのはSQSのリソースを定義している部分。
new sqs.Queue(this, 'ProjdynamoQueue', {
visibilityTimeoutSec: 300
});
thisを第一引数にしているが、これはcdk.Stack
を渡している。
ということはcdk.Stack
インスタンスを渡してやれば別にこの書き方をする必要はない。
import cdk = require('@aws-cdk/cdk');
import sqs = require('@aws-cdk/aws-sqs');
const app = new cdk.App();
const stack = new cdk.Stack(app, 'TestStack');
new sqs.Queue(stack, 'ProjdynamoQueue', {
visibilityTimeoutSec: 300
});
app.run();
こちらのほうがパット見はわかりやすいかもしれない。
ネストしたスタックなどを作り出すと地獄が見えるけども。