CDKでも「Expressモード」がサポートされたので、デプロイ時間を計測してみた

CDKでも「Expressモード」がサポートされたので、デプロイ時間を計測してみた

aws-cdk v2.1129.0で`cdk deploy --express`が追加されました。前回CloudFormation APIで検証したExpressモードと同じ構成をCDKで再現し、デプロイ所要時間が183秒から40秒(4.6倍)に短縮されることを確認しました
2026.07.02

はじめに

前回、CloudFormationのExpressモードをAWS CLIで検証しました。

https://dev.classmethod.jp/articles/cloudformation-express-mode-tried/

前回の結論は「通常182秒 → Express 61秒(3.0倍)」でしたが、CDK CLI未対応のためCloudFormation APIでの検証のみでした。

2026年7月1日(JST 22時)、aws-cdk v2.1129.0がリリースされ、cdk deploy --expressが追加されました。

https://github.com/aws/aws-cdk-cli/releases/tag/aws-cdk%40v2.1129.0

今回は前回と同じ構成をCDKで再現し、Expressモードのデプロイ時間を確認します。

検証

検証環境

  • リージョン: ap-northeast-1
  • CDK CLI: v2.1129.0
  • aws-cdk-lib: 2.258.0
  • Node.js: 22(Dockerコンテナ上で実行)
  • VPC: デフォルトVPC
  • インスタンスタイプ: t3.micro
  • AMI: Amazon Linux 2023 (x86_64)

CDK スタック定義

前回記事と同じ5リソース構成をL2コンストラクトで再現しています。

import * as cdk from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as iam from 'aws-cdk-lib/aws-iam';
import { Construct } from 'constructs';

export class BenchStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const role = new iam.Role(this, 'BenchRole', {
      assumedBy: new iam.ServicePrincipal('ec2.amazonaws.com'),
    });

    role.addToPolicy(
      new iam.PolicyStatement({
        actions: ['s3:GetObject'],
        resources: ['*'],
      }),
    );

    const vpc = ec2.Vpc.fromLookup(this, 'DefaultVpc', { isDefault: true });

    const sg = new ec2.SecurityGroup(this, 'BenchSecurityGroup', {
      vpc,
      description: 'Benchmark security group',
    });

    new ec2.Instance(this, 'BenchInstance', {
      vpc,
      instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.MICRO),
      machineImage: ec2.MachineImage.latestAmazonLinux2023(),
      role,
      securityGroup: sg,
    });
  }
}

ec2.InstanceのL2コンストラクトが内部でInstanceProfileを生成するため、比較対象となる実体リソースは5つです(Role / Policy / InstanceProfile / SecurityGroup / EC2 Instance)。

通常モードでのデプロイ

$ cdk deploy --require-approval never
✨  Synthesis time: 1s

CdkExpressBenchStack: deploying... [1/1]
CdkExpressBenchStack | 0/7 | 3:55:34 PM | CREATE_IN_PROGRESS | AWS::CloudFormation::Stack  | CdkExpressBenchStack User Initiated
CdkExpressBenchStack | 0/7 | 3:55:36 PM | CREATE_IN_PROGRESS | AWS::IAM::Role              | BenchRole (BenchRoleD9F05EBD)
CdkExpressBenchStack | 0/7 | 3:55:36 PM | CREATE_IN_PROGRESS | AWS::EC2::SecurityGroup     | BenchSecurityGroup (BenchSecurityGroup73EC7292)
CdkExpressBenchStack | 0/7 | 3:55:37 PM | CREATE_IN_PROGRESS | AWS::IAM::Role              | BenchRole (BenchRoleD9F05EBD) Resource creation Initiated
CdkExpressBenchStack | 0/7 | 3:55:39 PM | CREATE_IN_PROGRESS | AWS::EC2::SecurityGroup     | BenchSecurityGroup (BenchSecurityGroup73EC7292) Resource creation Initiated
CdkExpressBenchStack | 2/7 | 3:55:46 PM | CREATE_COMPLETE    | AWS::EC2::SecurityGroup     | BenchSecurityGroup (BenchSecurityGroup73EC7292)
CdkExpressBenchStack | 3/7 | 3:55:54 PM | CREATE_COMPLETE    | AWS::IAM::Role              | BenchRole (BenchRoleD9F05EBD)
CdkExpressBenchStack | 3/7 | 3:55:56 PM | CREATE_IN_PROGRESS | AWS::IAM::InstanceProfile   | BenchInstance/InstanceProfile (BenchInstanceInstanceProfile75E1DCDF) Resource creation Initiated
CdkExpressBenchStack | 5/7 | 3:58:07 PM | CREATE_COMPLETE    | AWS::IAM::InstanceProfile   | BenchInstance/InstanceProfile (BenchInstanceInstanceProfile75E1DCDF)
CdkExpressBenchStack | 5/7 | 3:58:10 PM | CREATE_IN_PROGRESS | AWS::EC2::Instance          | BenchInstance (BenchInstance0D9E1755) Resource creation Initiated
CdkExpressBenchStack | 6/7 | 3:58:22 PM | CREATE_COMPLETE    | AWS::EC2::Instance          | BenchInstance (BenchInstance0D9E1755)
CdkExpressBenchStack | 7/7 | 3:58:22 PM | CREATE_COMPLETE    | AWS::CloudFormation::Stack  | CdkExpressBenchStack

✅  CdkExpressBenchStack

✨  Deployment time: 173.05s

✨  Total time: 181.08s

Deployment time: 173秒でした。InstanceProfileのResource creation InitiatedからCREATE_COMPLETEまで2分11秒かかっています。前回のCloudFormation API検証(182秒、InstanceProfile待ち2分11秒)と同じ傾向です。

Express モードでのデプロイ

--expressフラグを追加するだけです。通常モードのスタックを削除後、同じ構成でExpressモードを試しました。

$ cdk deploy --require-approval never --express
✨  Synthesis time: 1.15s

CdkExpressBenchStack: deploying... [1/1]
CdkExpressBenchStack | 0/7 | 4:00:18 PM | CREATE_IN_PROGRESS | AWS::CloudFormation::Stack  | CdkExpressBenchStack User Initiated
CdkExpressBenchStack | 0/7 | 4:00:20 PM | CREATE_IN_PROGRESS | AWS::IAM::Role              | BenchRole (BenchRoleD9F05EBD)
CdkExpressBenchStack | 0/7 | 4:00:20 PM | CREATE_IN_PROGRESS | AWS::EC2::SecurityGroup     | BenchSecurityGroup (BenchSecurityGroup73EC7292)
CdkExpressBenchStack | 0/7 | 4:00:21 PM | CREATE_IN_PROGRESS | AWS::IAM::Role              | BenchRole (BenchRoleD9F05EBD) Resource creation Initiated
CdkExpressBenchStack | 1/7 | 4:00:25 PM | CREATE_COMPLETE    | AWS::EC2::SecurityGroup     | BenchSecurityGroup (BenchSecurityGroup73EC7292) Resource operation completed using Express Mode. It may continue becoming available in the background.
CdkExpressBenchStack | 2/7 | 4:00:29 PM | CREATE_IN_PROGRESS | AWS::IAM::InstanceProfile   | BenchInstance/InstanceProfile (BenchInstanceInstanceProfile75E1DCDF) Resource creation Initiated
CdkExpressBenchStack | 3/7 | 4:00:30 PM | CREATE_COMPLETE    | AWS::IAM::InstanceProfile   | BenchInstance/InstanceProfile (BenchInstanceInstanceProfile75E1DCDF) Resource operation completed using Express Mode. It may continue becoming available in the background.
CdkExpressBenchStack | 5/7 | 4:00:31 PM | CREATE_COMPLETE    | AWS::IAM::Role              | BenchRole (BenchRoleD9F05EBD) Resource operation completed using Express Mode. It may continue becoming available in the background.
CdkExpressBenchStack | 5/7 | 4:00:39 PM | CREATE_IN_PROGRESS | AWS::EC2::Instance          | BenchInstance (BenchInstance0D9E1755) Resource creation Initiated
CdkExpressBenchStack | 6/7 | 4:00:46 PM | CREATE_COMPLETE    | AWS::EC2::Instance          | BenchInstance (BenchInstance0D9E1755) Resource operation completed using Express Mode. It may continue becoming available in the background.
CdkExpressBenchStack | 7/7 | 4:00:47 PM | CREATE_COMPLETE    | AWS::CloudFormation::Stack  | CdkExpressBenchStack Stack operation completed using Express Mode. Resources may continue becoming available in the background.

✅  CdkExpressBenchStack

✨  Deployment time: 31.14s

⚠️  Stack deployed using Express Mode. Resources still stabilizing: BenchSecurityGroup73EC7292, BenchInstanceInstanceProfile75E1DCDF, BenchRoleDefaultPolicy40C90E6B, BenchRoleD9F05EBD, BenchInstance0D9E1755

✨  Total time: 38.74s

Deployment time: 31秒でした。InstanceProfileはResource creation Initiatedから1秒で、CloudFormationイベント上はCREATE_COMPLETEになっています。

デプロイ完了後、CDK CLIが安定化継続中のリソースを一覧で表示します。

⚠️  Stack deployed using Express Mode. Resources still stabilizing: BenchSecurityGroup73EC7292, BenchInstanceInstanceProfile75E1DCDF, ...

デプロイ時間の比較

手法 CLI実行〜完了 倍率
CDK 通常モード 183秒 1.0x
CDK Express モード 40秒 4.6x
(参考)CFn API 通常モード(前回記事) 182秒 1.0x
(参考)CFn API Express モード(前回記事) 61秒 3.0x

「CLI実行〜完了」はcdk deployコマンドの実行開始から制御が戻るまでの所要時間(wall clock)です。CDKの場合はsynth + changeset作成 + CloudFormation処理を含みます。前回のCFn API計測(create-stack実行〜wait stack-create-complete完了)とはCDK側にsynthやchangeset作成が含まれる分の差はありますが、いずれもwall clockベースであり、傾向を比較する目安になります。

CDK CLIが出力するDeployment timeで見ると、通常173秒 → Express 31秒(5.6倍)でした。synthやChange Set作成を含むCLI全体時間では4.6倍、Deployment timeでは5.6倍です。

通常モード同士はほぼ同等(CDK 183秒 / CFn API 182秒)で、いずれもInstanceProfileの安定化待ちがボトルネックです。Expressモードの差(CDK 40秒 / CFn API 61秒)は、前回のwaitコマンドのポーリング間隔も一因と考えられます。

スタックイベントの比較

InstanceProfileの完了時間にフォーカスして比較します。

通常モード: InstanceProfileの完了待ちに2分11秒

3:55:56 PM | CREATE_IN_PROGRESS | AWS::IAM::InstanceProfile | Resource creation Initiated
3:58:07 PM | CREATE_COMPLETE    | AWS::IAM::InstanceProfile

Express モード: InstanceProfileのCREATE_COMPLETEが1秒後に記録

4:00:29 PM | CREATE_IN_PROGRESS | AWS::IAM::InstanceProfile | Resource creation Initiated
4:00:30 PM | CREATE_COMPLETE    | AWS::IAM::InstanceProfile | Resource operation completed using Express Mode. It may continue becoming available in the background.

Expressモードでは安定化確認の完了を待たずにデプロイが進むため、InstanceProfileの2分以上の待ち時間がなくなります。

通常モードのスタックイベント全文
CdkExpressBenchStack | 0/7 | 3:55:28 PM | REVIEW_IN_PROGRESS   | AWS::CloudFormation::Stack | CdkExpressBenchStack User Initiated
CdkExpressBenchStack | 0/7 | 3:55:34 PM | CREATE_IN_PROGRESS   | AWS::CloudFormation::Stack | CdkExpressBenchStack User Initiated
CdkExpressBenchStack | 0/7 | 3:55:36 PM | CREATE_IN_PROGRESS   | AWS::EC2::SecurityGroup    | BenchSecurityGroup (BenchSecurityGroup73EC7292)
CdkExpressBenchStack | 0/7 | 3:55:36 PM | CREATE_IN_PROGRESS   | AWS::IAM::Role             | BenchRole (BenchRoleD9F05EBD)
CdkExpressBenchStack | 0/7 | 3:55:36 PM | CREATE_IN_PROGRESS   | AWS::CDK::Metadata         | CDKMetadata/Default (CDKMetadata)
CdkExpressBenchStack | 0/7 | 3:55:37 PM | CREATE_IN_PROGRESS   | AWS::IAM::Role             | BenchRole (BenchRoleD9F05EBD) Resource creation Initiated
CdkExpressBenchStack | 0/7 | 3:55:38 PM | CREATE_IN_PROGRESS   | AWS::CDK::Metadata         | CDKMetadata/Default (CDKMetadata) Resource creation Initiated
CdkExpressBenchStack | 1/7 | 3:55:38 PM | CREATE_COMPLETE      | AWS::CDK::Metadata         | CDKMetadata/Default (CDKMetadata)
CdkExpressBenchStack | 1/7 | 3:55:39 PM | CREATE_IN_PROGRESS   | AWS::EC2::SecurityGroup    | BenchSecurityGroup (BenchSecurityGroup73EC7292) Resource creation Initiated
CdkExpressBenchStack | 2/7 | 3:55:46 PM | CREATE_COMPLETE      | AWS::EC2::SecurityGroup    | BenchSecurityGroup (BenchSecurityGroup73EC7292)
CdkExpressBenchStack | 3/7 | 3:55:54 PM | CREATE_COMPLETE      | AWS::IAM::Role             | BenchRole (BenchRoleD9F05EBD)
CdkExpressBenchStack | 3/7 | 3:55:55 PM | CREATE_IN_PROGRESS   | AWS::IAM::InstanceProfile  | BenchInstance/InstanceProfile (BenchInstanceInstanceProfile75E1DCDF)
CdkExpressBenchStack | 3/7 | 3:55:55 PM | CREATE_IN_PROGRESS   | AWS::IAM::Policy           | BenchRole/DefaultPolicy (BenchRoleDefaultPolicy40C90E6B)
CdkExpressBenchStack | 3/7 | 3:55:56 PM | CREATE_IN_PROGRESS   | AWS::IAM::InstanceProfile  | BenchInstance/InstanceProfile (BenchInstanceInstanceProfile75E1DCDF) Resource creation Initiated
CdkExpressBenchStack | 3/7 | 3:55:57 PM | CREATE_IN_PROGRESS   | AWS::IAM::Policy           | BenchRole/DefaultPolicy (BenchRoleDefaultPolicy40C90E6B) Resource creation Initiated
CdkExpressBenchStack | 4/7 | 3:56:12 PM | CREATE_COMPLETE      | AWS::IAM::Policy           | BenchRole/DefaultPolicy (BenchRoleDefaultPolicy40C90E6B)
CdkExpressBenchStack | 5/7 | 3:58:07 PM | CREATE_COMPLETE      | AWS::IAM::InstanceProfile  | BenchInstance/InstanceProfile (BenchInstanceInstanceProfile75E1DCDF)
CdkExpressBenchStack | 5/7 | 3:58:08 PM | CREATE_IN_PROGRESS   | AWS::EC2::Instance         | BenchInstance (BenchInstance0D9E1755)
CdkExpressBenchStack | 5/7 | 3:58:10 PM | CREATE_IN_PROGRESS   | AWS::EC2::Instance         | BenchInstance (BenchInstance0D9E1755) Resource creation Initiated
CdkExpressBenchStack | 5/7 | 3:58:21 PM | CREATE_IN_PROGRESS   | AWS::EC2::Instance         | BenchInstance (BenchInstance0D9E1755) Eventual consistency check initiated
CdkExpressBenchStack | 5/7 | 3:58:21 PM | CREATE_IN_PROGRESS   | AWS::CloudFormation::Stack | CdkExpressBenchStack Eventual consistency check initiated
CdkExpressBenchStack | 6/7 | 3:58:22 PM | CREATE_COMPLETE      | AWS::EC2::Instance         | BenchInstance (BenchInstance0D9E1755)
CdkExpressBenchStack | 7/7 | 3:58:22 PM | CREATE_COMPLETE      | AWS::CloudFormation::Stack | CdkExpressBenchStack
Expressモードのスタックイベント全文
CdkExpressBenchStack | 0/7 | 4:00:12 PM | REVIEW_IN_PROGRESS   | AWS::CloudFormation::Stack | CdkExpressBenchStack User Initiated
CdkExpressBenchStack | 0/7 | 4:00:18 PM | CREATE_IN_PROGRESS   | AWS::CloudFormation::Stack | CdkExpressBenchStack User Initiated
CdkExpressBenchStack | 0/7 | 4:00:20 PM | CREATE_IN_PROGRESS   | AWS::CDK::Metadata         | CDKMetadata/Default (CDKMetadata)
CdkExpressBenchStack | 0/7 | 4:00:20 PM | CREATE_IN_PROGRESS   | AWS::IAM::Role             | BenchRole (BenchRoleD9F05EBD)
CdkExpressBenchStack | 0/7 | 4:00:20 PM | CREATE_IN_PROGRESS   | AWS::EC2::SecurityGroup    | BenchSecurityGroup (BenchSecurityGroup73EC7292)
CdkExpressBenchStack | 0/7 | 4:00:21 PM | CREATE_IN_PROGRESS   | AWS::IAM::Role             | BenchRole (BenchRoleD9F05EBD) Resource creation Initiated
CdkExpressBenchStack | 0/7 | 4:00:21 PM | CREATE_IN_PROGRESS   | AWS::CDK::Metadata         | CDKMetadata/Default (CDKMetadata) Resource creation Initiated
CdkExpressBenchStack | 1/7 | 4:00:21 PM | CREATE_COMPLETE      | AWS::CDK::Metadata         | CDKMetadata/Default (CDKMetadata) Resource operation completed using Express Mode. It may continue becoming available in the background.
CdkExpressBenchStack | 1/7 | 4:00:21 PM | CREATE_IN_PROGRESS   | AWS::EC2::SecurityGroup    | BenchSecurityGroup (BenchSecurityGroup73EC7292) Resource creation Initiated
CdkExpressBenchStack | 1/7 | 4:00:24 PM | CREATE_IN_PROGRESS   | AWS::EC2::SecurityGroup    | BenchSecurityGroup (BenchSecurityGroup73EC7292) Eventual consistency check initiated
CdkExpressBenchStack | 2/7 | 4:00:25 PM | CREATE_COMPLETE      | AWS::EC2::SecurityGroup    | BenchSecurityGroup (BenchSecurityGroup73EC7292) Resource operation completed using Express Mode. It may continue becoming available in the background.
CdkExpressBenchStack | 2/7 | 4:00:28 PM | CREATE_IN_PROGRESS   | AWS::IAM::Role             | BenchRole (BenchRoleD9F05EBD) Eventual consistency check initiated
CdkExpressBenchStack | 2/7 | 4:00:28 PM | CREATE_IN_PROGRESS   | AWS::IAM::InstanceProfile  | BenchInstance/InstanceProfile (BenchInstanceInstanceProfile75E1DCDF)
CdkExpressBenchStack | 2/7 | 4:00:28 PM | CREATE_IN_PROGRESS   | AWS::IAM::Policy           | BenchRole/DefaultPolicy (BenchRoleDefaultPolicy40C90E6B)
CdkExpressBenchStack | 2/7 | 4:00:29 PM | CREATE_IN_PROGRESS   | AWS::IAM::InstanceProfile  | BenchInstance/InstanceProfile (BenchInstanceInstanceProfile75E1DCDF) Resource creation Initiated
CdkExpressBenchStack | 2/7 | 4:00:29 PM | CREATE_IN_PROGRESS   | AWS::IAM::InstanceProfile  | BenchInstance/InstanceProfile (BenchInstanceInstanceProfile75E1DCDF) Eventual consistency check initiated
CdkExpressBenchStack | 2/7 | 4:00:30 PM | CREATE_IN_PROGRESS   | AWS::IAM::Policy           | BenchRole/DefaultPolicy (BenchRoleDefaultPolicy40C90E6B) Resource creation Initiated
CdkExpressBenchStack | 3/7 | 4:00:30 PM | CREATE_COMPLETE      | AWS::IAM::InstanceProfile  | BenchInstance/InstanceProfile (BenchInstanceInstanceProfile75E1DCDF) Resource operation completed using Express Mode. It may continue becoming available in the background.
CdkExpressBenchStack | 3/7 | 4:00:30 PM | CREATE_IN_PROGRESS   | AWS::IAM::Policy           | BenchRole/DefaultPolicy (BenchRoleDefaultPolicy40C90E6B) Eventual consistency check initiated
CdkExpressBenchStack | 4/7 | 4:00:30 PM | CREATE_COMPLETE      | AWS::IAM::Policy           | BenchRole/DefaultPolicy (BenchRoleDefaultPolicy40C90E6B) Resource operation completed using Express Mode. It may continue becoming available in the background.
CdkExpressBenchStack | 5/7 | 4:00:31 PM | CREATE_COMPLETE      | AWS::IAM::Role             | BenchRole (BenchRoleD9F05EBD) Resource operation completed using Express Mode. It may continue becoming available in the background.
CdkExpressBenchStack | 5/7 | 4:00:31 PM | CREATE_IN_PROGRESS   | AWS::EC2::Instance         | BenchInstance (BenchInstance0D9E1755)
CdkExpressBenchStack | 5/7 | 4:00:39 PM | CREATE_IN_PROGRESS   | AWS::EC2::Instance         | BenchInstance (BenchInstance0D9E1755) Resource creation Initiated
CdkExpressBenchStack | 5/7 | 4:00:44 PM | CREATE_IN_PROGRESS   | AWS::EC2::Instance         | BenchInstance (BenchInstance0D9E1755) Eventual consistency check initiated
CdkExpressBenchStack | 5/7 | 4:00:44 PM | CREATE_IN_PROGRESS   | AWS::CloudFormation::Stack | CdkExpressBenchStack Eventual consistency check initiated
CdkExpressBenchStack | 6/7 | 4:00:46 PM | CREATE_COMPLETE      | AWS::EC2::Instance         | BenchInstance (BenchInstance0D9E1755) Resource operation completed using Express Mode. It may continue becoming available in the background.
CdkExpressBenchStack | 7/7 | 4:00:47 PM | CREATE_COMPLETE      | AWS::CloudFormation::Stack | CdkExpressBenchStack Stack operation completed using Express Mode. Resources may continue becoming available in the background.

補足: cdk destroy --express

cdk destroyにも--expressが使えます。

$ cdk destroy --force --express
CdkExpressBenchStack: destroying... [1/1]
CdkExpressBenchStack |   0 | 4:01:20 PM | DELETE_IN_PROGRESS | AWS::CloudFormation::Stack | CdkExpressBenchStack User Initiated
CdkExpressBenchStack |   0 | 4:01:22 PM | DELETE_IN_PROGRESS | AWS::EC2::Instance         | BenchInstance (BenchInstance0D9E1755)
CdkExpressBenchStack |   1 | 4:02:24 PM | DELETE_IN_PROGRESS | AWS::EC2::Instance         | BenchInstance (BenchInstance0D9E1755) Eventual consistency check initiated
CdkExpressBenchStack |   2 | 4:02:25 PM | DELETE_COMPLETE     | AWS::EC2::Instance         | BenchInstance (BenchInstance0D9E1755) Resource operation completed using Express Mode. It may continue becoming available in the background.
CdkExpressBenchStack |   3 | 4:02:26 PM | DELETE_COMPLETE     | AWS::IAM::Policy           | BenchRole/DefaultPolicy (BenchRoleDefaultPolicy40C90E6B) Resource operation completed using Express Mode. It may continue becoming available in the background.
CdkExpressBenchStack |   4 | 4:02:26 PM | DELETE_COMPLETE     | AWS::EC2::SecurityGroup    | BenchSecurityGroup (BenchSecurityGroup73EC7292) Resource operation completed using Express Mode. It may continue becoming available in the background.
CdkExpressBenchStack |   5 | 4:02:27 PM | DELETE_COMPLETE     | AWS::IAM::InstanceProfile  | BenchInstance/InstanceProfile (BenchInstanceInstanceProfile75E1DCDF) Resource operation completed using Express Mode. It may continue becoming available in the background.
CdkExpressBenchStack |   6 | 4:02:33 PM | DELETE_COMPLETE     | AWS::IAM::Role             | BenchRole (BenchRoleD9F05EBD) Resource operation completed using Express Mode. It may continue becoming available in the background.
CdkExpressBenchStack |   7 | 4:02:33 PM | DELETE_COMPLETE     | AWS::CloudFormation::Stack | CdkExpressBenchStack Stack operation completed using Express Mode. Resources may continue becoming available in the background.
✅  CdkExpressBenchStack: destroyed
⚠️  Stack deleted using Express Mode. Resources still tearing down: BenchInstance0D9E1755, BenchRoleDefaultPolicy40C90E6B, BenchSecurityGroup73EC7292, BenchInstanceInstanceProfile75E1DCDF, BenchRoleD9F05EBD

destroyの場合、この構成ではEC2インスタンスのterminate処理が約1分を占めました。terminate後の依存リソースは数秒のうちにDELETE_COMPLETEとして記録されています。全体のDestroy timeは約73秒(4:01:20→4:02:33)で、deployほどの劇的な短縮は得られませんが、EC2 terminate後の後続削除が即座に進む効果は確認できました。

まとめ

aws-cdk v2.1129.0でcdk deploy --expressが使えるようになりました。前回と同じ構成で試したところ、デプロイ所要時間が183秒から40秒に短縮されました(4.6倍)。--expressフラグを付けるだけでスタック定義の変更は不要です。

なお、デプロイ速度をさらに追求する選択肢として、CloudFormationを経由せずSDKで直接デプロイするcdkdもあります。cdkdは対応リソースが限定される実験的なアプローチのため、CloudFormation/CDKの枠組みのまま短縮したい場合はcdk deploy --expressが手軽な選択肢になりそうです。

https://dev.classmethod.jp/articles/cdkd-deploy-6x-faster-than-cloudformation/

参考リンク

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事