
AWS CDK の cdk diff コマンド・cdk deploy コマンドで --exclusively オプションもしくは -e オプションを指定して実行すると,スタック間の依存関係を考慮せずに指定したスタックのみ操作できる👌実行時間を短くしたり,デプロイの影響範囲を狭めたりするときに使えたりする
-e, --exclusively Only diff requested stacks, don't include dependencies [boolean]
--exclusively オプションなし(デフォルト)
stack.addDependency(stack) を使って Infrastructure → Backend → Frontend という依存関係のあるスタックを作る.あくまでサンプルとして❗️
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] (中略)