AWS CDKでスタックを複数作ったりYAML出力する覚書

AWS CDKでスタックを複数作ったりYAML出力する覚書:

$ cdk --version 
0.23.0 (build 1d705e7) 
AWS CDKでは、cdk.Stackクラスを継承することでスタックを定義できる。

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(); 
そしてconstructorの第二引数でスタック名を決めているので、cdk deploycdk 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. 
スタック名の指定かoutputディレクトリの指定すればOK。

$ 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 

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)