AWS CDK v2.91.0 で CDK diff コマンドに –quiet オプションが追加され、進捗メッセージを抑制できるようになりました

2023.08.11

こんにちは、CX事業本部 Delivery部の若槻です。

本日リリースされた AWS CDK v2.91.0 で、cdk diff コマンドに --quiet オプションが追加されました。

試してみたところとてもマイナーなアップデートだったのですが、せっかくなのでご紹介します。

試してみる

モジュールのアップデート

AWS CDK コマンドを v2.91.0 以上にアップグレードします。

npm i -g aws-cdk@latest

CDK コマンドの機能なので、アプリケーションのパッケージのアップデートは必須ではありません。

スタックに差分が無い場合

まずはスタックに差分が無い場合を確認してみます。

--quiet オプションなし

--quiet オプションなしの場合は次のようになります。スタック毎の進捗メッセージが表示されます。

$ cdk diff
Stack CdkSampleStack
There were no differences
Stack CdkSampleStack2
There were no differences

  Number of stacks with differences: 0

差分が無い場合はスタックごとにStack <Stack 名>およびThere were no differencesというメッセージが表示され、最後にNumber of stacks with differences: Xと表示されます。

--quiet オプションあり

次に--quiet オプションを付けてみます。

$ cdk diff --quiet

  Number of stacks with differences: 0

--quiet オプションを付けると、スタックごとの差分無しを示すメッセージが省略される挙動となりました。

スタックに差分がある場合

次にスタックに差分がある場合を確認してみます。

--quiet オプションなし

--quiet オプションなしの場合は次のように表示されます。

$ cdk diff        
Stack CdkSampleStack
There were no differences
Stack CdkSampleStack2
Resources
[-] AWS::Logs::LogGroup LogGroup2 LogGroup2477F707C orphan
[-] AWS::SNS::Topic Topic2 Topic269377B75 destroy


  Number of stacks with differences: 2

--quiet オプションあり

そして、--quiet オプションを付けてみます。

$ cdk diff --quiet
Resources
[-] AWS::Logs::LogGroup LogGroup2 LogGroup2477F707C orphan
[-] AWS::SNS::Topic Topic2 Topic269377B75 destroy


  Number of stacks with differences: 2

スタックごとの差分の有無を示すメッセージが省略され、単にリソースの差分が表示されるだけとなりました。

複数のスタックに差分がある時

複数のスタックに差分がある時に --quiet オプションをつけた場合。

$ cdk diff --quiet
Resources
[-] AWS::SNS::Topic Topic TopicBFC7AF6E destroy

Resources
[+] AWS::SNS::Topic Topic TopicBFC7AF6E 


  Number of stacks with differences: 2

どのリソースの差分がどのスタックにのものであるかが表示だけだと分からなくなります。

スタック新規作成時

スタック新規作成時に --quiet オプションをつけた場合。

$ cdk diff --quiet
Parameters
[+] Parameter BootstrapVersion BootstrapVersion: {"Type":"AWS::SSM::Parameter::Value<String>","Default":"/cdk-bootstrap/hnb659fds/version","Description":"Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]"}

Conditions
[+] Condition CDKMetadata/Condition CDKMetadataAvailable: {"Fn::Or":[{"Fn::Or":[{"Fn::Equals":[{"Ref":"AWS::Region"},"af-south-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ap-east-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ap-northeast-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ap-northeast-2"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ap-south-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ap-southeast-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ap-southeast-2"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"ca-central-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"cn-north-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"cn-northwest-1"]}]},{"Fn::Or":[{"Fn::Equals":[{"Ref":"AWS::Region"},"eu-central-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"eu-north-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"eu-south-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"eu-west-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"eu-west-2"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"eu-west-3"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"me-south-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"sa-east-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"us-east-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"us-east-2"]}]},{"Fn::Or":[{"Fn::Equals":[{"Ref":"AWS::Region"},"us-west-1"]},{"Fn::Equals":[{"Ref":"AWS::Region"},"us-west-2"]}]}]}

Other Changes
[+] Unknown Rules: {"CheckBootstrapVersion":{"Assertions":[{"Assert":{"Fn::Not":[{"Fn::Contains":[["1","2","3","4","5"],{"Ref":"BootstrapVersion"}]}]},"AssertDescription":"CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI."}]}}


  Number of stacks with differences: 3

やはりスタックごとの差分の有無を示すメッセージは省略されます。

おわりに

AWS CDK v2.91.0 で、cdk diff コマンドに --quiet オプションが追加されたのでご紹介しました。

このアップデートの背景としては、下記の Issue を見ると、数百を超えるスタックがある環境で cdk diff コマンドで差分を出力してレビューをしたい場合に、スタックごとの差分の有無を示すメッセージを省略することで、レビューをしやすくするためとのことです。

同様のケースの場合にご利用を検討ください。

以上