kakakakakku blog

Weekly Tech Blog: Keep on Learning!

AWS CDK の --exclusively オプションでスタック間の依存関係を考慮せずに実行する

AWS CDK の cdk diff コマンド・cdk deploy コマンドで --exclusively オプションもしくは -e オプションを指定して実行すると,スタック間の依存関係を考慮せずに指定したスタックのみ操作できる👌実行時間を短くしたり,デプロイの影響範囲を狭めたりするときに使えたりする

-e, --exclusively
Only diff requested stacks, don't include dependencies [boolean]

docs.aws.amazon.com

docs.aws.amazon.com

--exclusively オプションなし(デフォルト)

stack.addDependency(stack) を使って InfrastructureBackendFrontend という依存関係のあるスタックを作る.あくまでサンプルとして❗️

sandboxCdkFrontendStack.addDependency(sandboxCdkBackendStack)
sandboxCdkBackendStack.addDependency(sandboxCdkInfrastructureStack)

そして Frontend (SandboxCdkFrontendStack) に対して cdk diff コマンドを実行すると,以下のように依存関係に従って実行できる.実行ログは抜粋している📝

$ cdk diff SandboxCdkFrontendStack
Including dependency stacks: SandboxCdkBackendStack, SandboxCdkInfrastructureStack

Stack SandboxCdkFrontendStack
(中略)
Stack SandboxCdkBackendStack
(中略)
Stack SandboxCdkInfrastructureStack
(中略)

cdk deploy コマンドも同じ.

$ cdk deploy SandboxCdkFrontendStack
Including dependency stacks: SandboxCdkBackendStack, SandboxCdkInfrastructureStack

SandboxCdkInfrastructureStack
SandboxCdkInfrastructureStack: deploying... [3/3]
(中略)

SandboxCdkBackendStack
SandboxCdkBackendStack: deploying... [2/3]
(中略)

SandboxCdkFrontendStack
SandboxCdkFrontendStack: deploying... [1/3]
(中略)

--exclusively オプションあり

今度は Frontend (SandboxCdkFrontendStack) に対して cdk diff --exclusively コマンドを実行すると,以下のように依存関係を考慮せずに指定したスタックのみ操作できる❗

$ cdk diff --exclusively SandboxCdkFrontendStack

Stack SandboxCdkFrontendStack
(中略)

cdk deploy コマンドも同じ.

$ cdk deploy --exclusively SandboxCdkFrontendStack

SandboxCdkFrontendStack: deploying... [1/1]
(中略)