Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cdk-cli: --quiet flag suppresses "Stack stack-name" messages also for stacks which do have changes #27128

Closed
nomike opened this issue Sep 13, 2023 · 9 comments · Fixed by #30186 or softwaremill/tapir#4137 · May be fixed by NOUIY/aws-solutions-constructs#135 or NOUIY/aws-solutions-constructs#136
Assignees
Labels
bug This issue is a bug. effort/small Small work item – less than a day of effort p1 package/tools Related to AWS CDK Tools or CLI

Comments

@nomike
Copy link

nomike commented Sep 13, 2023

Describe the bug

I originally filed a feature request #26526 to suppress output of

Stack: my-stack
There were no differences

When you have a lot of stacks and want to know what will be change on deploy, those messages clutter the output and one might miss the real changes in between.

The --quiet flag was introduced in pull request 26652. Using this flag however, suppresses "Stack stackname" also for stacks which do have changes, so it's not clear anymore to which stack a change belongs.

Expected Behavior

Output without using the --quiet flag:

Stack euc1-ec2-bootstrap-s3-buckets
There were no differences
Stack euc1-gitlab-runner-2-ec2-instance
IAM Statement Changes
┌───┬───────────────────────────────────────────────────────────────────────────────────┬────────┬─────────────────────────────────┬───────────────────────────────────────────────────────────────────────────────────┬───────────┐
│   │ Resource                                                                          │ Effect │ Action                          │ Principal                                                                         │ Condition │
├───┼───────────────────────────────────────────────────────────────────────────────────┼────────┼─────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────┼───────────┤
│ + │ ${IAMRole_euc1_gitlab_runner_2_ec2_instance_1.Arn}                                │ Allow  │ sts:AssumeRole                  │ Service:ec2.amazonaws.com                                                         │           │
├───┼───────────────────────────────────────────────────────────────────────────────────┼────────┼─────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────┼───────────┤
│ + │ arn:aws:secretsmanager:eu-central-1:030614601540:secret:ansible_bootstrap*        │ Allow  │ secretsmanager:GetSecretValue   │ AWS:${IAMRole_euc1_gitlab_runner_2_ec2_instance_1}                                │           │
├───┼───────────────────────────────────────────────────────────────────────────────────┼────────┼─────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────┼───────────┤
│ + │ {"Fn::ImportValue":"euc1-ec2-bootstrap-s3-buckets:ExportsOutputFnGetAtts303061460 │ Allow  │ s3:GetObject                    │ AWS:${IAMRole_euc1_gitlab_runner_2_ec2_instance_1}                                │           │
│   │ 1540euc1ec2bootstrap5CC677DFArn13EBC388"}/*                                       │        │ s3:GetObjectVersion             │                                                                                   │           │
└───┴───────────────────────────────────────────────────────────────────────────────────┴────────┴─────────────────────────────────┴───────────────────────────────────────────────────────────────────────────────────┴───────────┘
IAM Policy Changes
┌───┬────────────────────────────────────────────────┬────────────────────────────────────────────────────────────────────┐
│   │ Resource                                       │ Managed Policy ARN                                                 │
├───┼────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────────┤
│ + │ ${IAMRole_euc1_gitlab_runner_2_ec2_instance_1} │ arn:${AWS::Partition}:iam::aws:policy/AmazonSSMManagedInstanceCore │
│ + │ ${IAMRole_euc1_gitlab_runner_2_ec2_instance_1} │ arn:${AWS::Partition}:iam::aws:policy/CloudWatchAgentServerPolicy  │
│ + │ ${IAMRole_euc1_gitlab_runner_2_ec2_instance_1} │ arn:${AWS::Partition}:iam::aws:policy/AdministratorAccess          │
└───┴────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────┘
Security Group Changes
┌───┬───────────────────────────────────────────────────────────────────────┬─────┬────────────┬─────────────────┐
│   │ Group                                                                 │ Dir │ Protocol   │ Peer            │
├───┼───────────────────────────────────────────────────────────────────────┼─────┼────────────┼─────────────────┤
│ + │ ${security_group_private_euc1-gitlab-runner-2-ec2-instance_1.GroupId} │ In  │ TCP 22     │ 10.0.0.0/8      │
│ + │ ${security_group_private_euc1-gitlab-runner-2-ec2-instance_1.GroupId} │ In  │ TCP 443    │ 10.0.0.0/8      │
│ + │ ${security_group_private_euc1-gitlab-runner-2-ec2-instance_1.GroupId} │ Out │ Everything │ Everyone (IPv4) │
└───┴───────────────────────────────────────────────────────────────────────┴─────┴────────────┴─────────────────┘
(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)

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]"}

Resources
[+] AWS::EC2::SecurityGroup security_group_private_euc1-gitlab-runner-2-ec2-instance_1 securitygroupprivateeuc1gitlabrunner2ec2instance1B2DBB269 
[+] AWS::EC2::NetworkInterface eni_euc1-gitlab-runner-2-ec2-instance_private_1 enieuc1gitlabrunner2ec2instanceprivate1 
[+] AWS::IAM::Role IAMRole_euc1_gitlab_runner_2_ec2_instance_1 IAMRoleeuc1gitlabrunner2ec2instance1AF79DDFE 
[+] AWS::IAM::InstanceProfile IAMInstanceProfile_1 IAMInstanceProfile1 
[+] AWS::EC2::Instance instance_euc1-gitlab-runner-2-ec2-instance_1 instanceeuc1gitlabrunner2ec2instance1 
[+] AWS::Route53::RecordSet dns_euc1-gitlab-runner-2-ec2-instance_1 dnseuc1gitlabrunner2ec2instance15F8A8179 

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: 1
---

Output when using the `--quiet` flag:

```plaintext
Stack euc1-gitlab-runner-2-ec2-instance
IAM Statement Changes
┌───┬───────────────────────────────────────────────────────────────────────────────────┬────────┬─────────────────────────────────┬───────────────────────────────────────────────────────────────────────────────────┬───────────┐
│   │ Resource                                                                          │ Effect │ Action                          │ Principal                                                                         │ Condition │
├───┼───────────────────────────────────────────────────────────────────────────────────┼────────┼─────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────┼───────────┤
│ + │ ${IAMRole_euc1_gitlab_runner_2_ec2_instance_1.Arn}                                │ Allow  │ sts:AssumeRole                  │ Service:ec2.amazonaws.com                                                         │           │
├───┼───────────────────────────────────────────────────────────────────────────────────┼────────┼─────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────┼───────────┤
│ + │ arn:aws:secretsmanager:eu-central-1:030614601540:secret:ansible_bootstrap*        │ Allow  │ secretsmanager:GetSecretValue   │ AWS:${IAMRole_euc1_gitlab_runner_2_ec2_instance_1}                                │           │
├───┼───────────────────────────────────────────────────────────────────────────────────┼────────┼─────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────┼───────────┤
│ + │ {"Fn::ImportValue":"euc1-ec2-bootstrap-s3-buckets:ExportsOutputFnGetAtts303061460 │ Allow  │ s3:GetObject                    │ AWS:${IAMRole_euc1_gitlab_runner_2_ec2_instance_1}                                │           │
│   │ 1540euc1ec2bootstrap5CC677DFArn13EBC388"}/*                                       │        │ s3:GetObjectVersion             │                                                                                   │           │
└───┴───────────────────────────────────────────────────────────────────────────────────┴────────┴─────────────────────────────────┴───────────────────────────────────────────────────────────────────────────────────┴───────────┘
IAM Policy Changes
┌───┬────────────────────────────────────────────────┬────────────────────────────────────────────────────────────────────┐
│   │ Resource                                       │ Managed Policy ARN                                                 │
├───┼────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────────┤
│ + │ ${IAMRole_euc1_gitlab_runner_2_ec2_instance_1} │ arn:${AWS::Partition}:iam::aws:policy/AmazonSSMManagedInstanceCore │
│ + │ ${IAMRole_euc1_gitlab_runner_2_ec2_instance_1} │ arn:${AWS::Partition}:iam::aws:policy/CloudWatchAgentServerPolicy  │
│ + │ ${IAMRole_euc1_gitlab_runner_2_ec2_instance_1} │ arn:${AWS::Partition}:iam::aws:policy/AdministratorAccess          │
└───┴────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────┘
Security Group Changes
┌───┬───────────────────────────────────────────────────────────────────────┬─────┬────────────┬─────────────────┐
│   │ Group                                                                 │ Dir │ Protocol   │ Peer            │
├───┼───────────────────────────────────────────────────────────────────────┼─────┼────────────┼─────────────────┤
│ + │ ${security_group_private_euc1-gitlab-runner-2-ec2-instance_1.GroupId} │ In  │ TCP 22     │ 10.0.0.0/8      │
│ + │ ${security_group_private_euc1-gitlab-runner-2-ec2-instance_1.GroupId} │ In  │ TCP 443    │ 10.0.0.0/8      │
│ + │ ${security_group_private_euc1-gitlab-runner-2-ec2-instance_1.GroupId} │ Out │ Everything │ Everyone (IPv4) │
└───┴───────────────────────────────────────────────────────────────────────┴─────┴────────────┴─────────────────┘
(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)

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]"}

Resources
[+] AWS::EC2::SecurityGroup security_group_private_euc1-gitlab-runner-2-ec2-instance_1 securitygroupprivateeuc1gitlabrunner2ec2instance1B2DBB269 
[+] AWS::EC2::NetworkInterface eni_euc1-gitlab-runner-2-ec2-instance_private_1 enieuc1gitlabrunner2ec2instanceprivate1 
[+] AWS::IAM::Role IAMRole_euc1_gitlab_runner_2_ec2_instance_1 IAMRoleeuc1gitlabrunner2ec2instance1AF79DDFE 
[+] AWS::IAM::InstanceProfile IAMInstanceProfile_1 IAMInstanceProfile1 
[+] AWS::EC2::Instance instance_euc1-gitlab-runner-2-ec2-instance_1 instanceeuc1gitlabrunner2ec2instance1 
[+] AWS::Route53::RecordSet dns_euc1-gitlab-runner-2-ec2-instance_1 dnseuc1gitlabrunner2ec2instance15F8A8179 

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: 1

Current Behavior

Output when using the --quiet flag:

IAM Statement Changes
┌───┬───────────────────────────────────────────────────────────────────────────────────┬────────┬─────────────────────────────────┬───────────────────────────────────────────────────────────────────────────────────┬───────────┐
│   │ Resource                                                                          │ Effect │ Action                          │ Principal                                                                         │ Condition │
├───┼───────────────────────────────────────────────────────────────────────────────────┼────────┼─────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────┼───────────┤
│ + │ ${IAMRole_euc1_gitlab_runner_2_ec2_instance_1.Arn}                                │ Allow  │ sts:AssumeRole                  │ Service:ec2.amazonaws.com                                                         │           │
├───┼───────────────────────────────────────────────────────────────────────────────────┼────────┼─────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────┼───────────┤
│ + │ arn:aws:secretsmanager:eu-central-1:030614601540:secret:ansible_bootstrap*        │ Allow  │ secretsmanager:GetSecretValue   │ AWS:${IAMRole_euc1_gitlab_runner_2_ec2_instance_1}                                │           │
├───┼───────────────────────────────────────────────────────────────────────────────────┼────────┼─────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────┼───────────┤
│ + │ {"Fn::ImportValue":"euc1-ec2-bootstrap-s3-buckets:ExportsOutputFnGetAtts303061460 │ Allow  │ s3:GetObject                    │ AWS:${IAMRole_euc1_gitlab_runner_2_ec2_instance_1}                                │           │
│   │ 1540euc1ec2bootstrap5CC677DFArn13EBC388"}/*                                       │        │ s3:GetObjectVersion             │                                                                                   │           │
└───┴───────────────────────────────────────────────────────────────────────────────────┴────────┴─────────────────────────────────┴───────────────────────────────────────────────────────────────────────────────────┴───────────┘
IAM Policy Changes
┌───┬────────────────────────────────────────────────┬────────────────────────────────────────────────────────────────────┐
│   │ Resource                                       │ Managed Policy ARN                                                 │
├───┼────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────────┤
│ + │ ${IAMRole_euc1_gitlab_runner_2_ec2_instance_1} │ arn:${AWS::Partition}:iam::aws:policy/AmazonSSMManagedInstanceCore │
│ + │ ${IAMRole_euc1_gitlab_runner_2_ec2_instance_1} │ arn:${AWS::Partition}:iam::aws:policy/CloudWatchAgentServerPolicy  │
│ + │ ${IAMRole_euc1_gitlab_runner_2_ec2_instance_1} │ arn:${AWS::Partition}:iam::aws:policy/AdministratorAccess          │
└───┴────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────┘
Security Group Changes
┌───┬───────────────────────────────────────────────────────────────────────┬─────┬────────────┬─────────────────┐
│   │ Group                                                                 │ Dir │ Protocol   │ Peer            │
├───┼───────────────────────────────────────────────────────────────────────┼─────┼────────────┼─────────────────┤
│ + │ ${security_group_private_euc1-gitlab-runner-2-ec2-instance_1.GroupId} │ In  │ TCP 22     │ 10.0.0.0/8      │
│ + │ ${security_group_private_euc1-gitlab-runner-2-ec2-instance_1.GroupId} │ In  │ TCP 443    │ 10.0.0.0/8      │
│ + │ ${security_group_private_euc1-gitlab-runner-2-ec2-instance_1.GroupId} │ Out │ Everything │ Everyone (IPv4) │
└───┴───────────────────────────────────────────────────────────────────────┴─────┴────────────┴─────────────────┘
(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)

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]"}

Resources
[+] AWS::EC2::SecurityGroup security_group_private_euc1-gitlab-runner-2-ec2-instance_1 securitygroupprivateeuc1gitlabrunner2ec2instance1B2DBB269 
[+] AWS::EC2::NetworkInterface eni_euc1-gitlab-runner-2-ec2-instance_private_1 enieuc1gitlabrunner2ec2instanceprivate1 
[+] AWS::IAM::Role IAMRole_euc1_gitlab_runner_2_ec2_instance_1 IAMRoleeuc1gitlabrunner2ec2instance1AF79DDFE 
[+] AWS::IAM::InstanceProfile IAMInstanceProfile_1 IAMInstanceProfile1 
[+] AWS::EC2::Instance instance_euc1-gitlab-runner-2-ec2-instance_1 instanceeuc1gitlabrunner2ec2instance1 
[+] AWS::Route53::RecordSet dns_euc1-gitlab-runner-2-ec2-instance_1 dnseuc1gitlabrunner2ec2instance15F8A8179 

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: 1


 Wed 13 Sep - 14:50  ~/coding/psc-application-nonprod-030614601540   origin ☊ CP-101---Setup-test-ec2-instance-running-a-CIS-hardened-Amazon-Linux-2023 1☀ 
 @nomike  cdk diff --profile=nonprod --concurrency=10 euc1-gitlab-runner-2-ec2-instance 
WARNING:root:lb.LB is deprecated. Use alb.ALB or nlb.NLB instead.
Including dependency stacks: euc1-ec2-bootstrap-s3-buckets
[Warning at /euc1-gitlab-runner-2-ec2-instance/euc1-gitlab-runner-2-ec2-instance_interface_0_subnet_0] No routeTableId was provided to the subnet 'subnet-084047d8f0e5f97b2'. Attempting to read its .routeTable.routeTableId will return null/undefined. (More info: https://github.com/aws/aws-cdk/pull/3171)
Stack euc1-ec2-bootstrap-s3-buckets
There were no differences
Stack euc1-gitlab-runner-2-ec2-instance
IAM Statement Changes
┌───┬───────────────────────────────────────────────────────────────────────────────────┬────────┬─────────────────────────────────┬───────────────────────────────────────────────────────────────────────────────────┬───────────┐
│   │ Resource                                                                          │ Effect │ Action                          │ Principal                                                                         │ Condition │
├───┼───────────────────────────────────────────────────────────────────────────────────┼────────┼─────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────┼───────────┤
│ + │ ${IAMRole_euc1_gitlab_runner_2_ec2_instance_1.Arn}                                │ Allow  │ sts:AssumeRole                  │ Service:ec2.amazonaws.com                                                         │           │
├───┼───────────────────────────────────────────────────────────────────────────────────┼────────┼─────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────┼───────────┤
│ + │ arn:aws:secretsmanager:eu-central-1:030614601540:secret:ansible_bootstrap*        │ Allow  │ secretsmanager:GetSecretValue   │ AWS:${IAMRole_euc1_gitlab_runner_2_ec2_instance_1}                                │           │
├───┼───────────────────────────────────────────────────────────────────────────────────┼────────┼─────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────┼───────────┤
│ + │ {"Fn::ImportValue":"euc1-ec2-bootstrap-s3-buckets:ExportsOutputFnGetAtts303061460 │ Allow  │ s3:GetObject                    │ AWS:${IAMRole_euc1_gitlab_runner_2_ec2_instance_1}                                │           │
│   │ 1540euc1ec2bootstrap5CC677DFArn13EBC388"}/*                                       │        │ s3:GetObjectVersion             │                                                                                   │           │
└───┴───────────────────────────────────────────────────────────────────────────────────┴────────┴─────────────────────────────────┴───────────────────────────────────────────────────────────────────────────────────┴───────────┘
IAM Policy Changes
┌───┬────────────────────────────────────────────────┬────────────────────────────────────────────────────────────────────┐
│   │ Resource                                       │ Managed Policy ARN                                                 │
├───┼────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────────┤
│ + │ ${IAMRole_euc1_gitlab_runner_2_ec2_instance_1} │ arn:${AWS::Partition}:iam::aws:policy/AmazonSSMManagedInstanceCore │
│ + │ ${IAMRole_euc1_gitlab_runner_2_ec2_instance_1} │ arn:${AWS::Partition}:iam::aws:policy/CloudWatchAgentServerPolicy  │
│ + │ ${IAMRole_euc1_gitlab_runner_2_ec2_instance_1} │ arn:${AWS::Partition}:iam::aws:policy/AdministratorAccess          │
└───┴────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────┘
Security Group Changes
┌───┬───────────────────────────────────────────────────────────────────────┬─────┬────────────┬─────────────────┐
│   │ Group                                                                 │ Dir │ Protocol   │ Peer            │
├───┼───────────────────────────────────────────────────────────────────────┼─────┼────────────┼─────────────────┤
│ + │ ${security_group_private_euc1-gitlab-runner-2-ec2-instance_1.GroupId} │ In  │ TCP 22     │ 10.0.0.0/8      │
│ + │ ${security_group_private_euc1-gitlab-runner-2-ec2-instance_1.GroupId} │ In  │ TCP 443    │ 10.0.0.0/8      │
│ + │ ${security_group_private_euc1-gitlab-runner-2-ec2-instance_1.GroupId} │ Out │ Everything │ Everyone (IPv4) │
└───┴───────────────────────────────────────────────────────────────────────┴─────┴────────────┴─────────────────┘
(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)

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]"}

Resources
[+] AWS::EC2::SecurityGroup security_group_private_euc1-gitlab-runner-2-ec2-instance_1 securitygroupprivateeuc1gitlabrunner2ec2instance1B2DBB269 
[+] AWS::EC2::NetworkInterface eni_euc1-gitlab-runner-2-ec2-instance_private_1 enieuc1gitlabrunner2ec2instanceprivate1 
[+] AWS::IAM::Role IAMRole_euc1_gitlab_runner_2_ec2_instance_1 IAMRoleeuc1gitlabrunner2ec2instance1AF79DDFE 
[+] AWS::IAM::InstanceProfile IAMInstanceProfile_1 IAMInstanceProfile1 
[+] AWS::EC2::Instance instance_euc1-gitlab-runner-2-ec2-instance_1 instanceeuc1gitlabrunner2ec2instance1 
[+] AWS::Route53::RecordSet dns_euc1-gitlab-runner-2-ec2-instance_1 dnseuc1gitlabrunner2ec2instance15F8A8179 

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: 1

Reproduction Steps

Introduce changes to your stacks, run cdk diff --quiet.

Possible Solution

I have written a wrapper for cdk in the past, which added parallel deployments (unfortunately company policy prevents me from sharing the source). I've added a feature like this in my code.

If the operating mode is "diff", the output for each stack is cached and printed all at once, once the stack is processed. This is to prevent the output of stacks becoming all mixed up. In other modes ("deploy", "destroy", ...) this caching does not happen, as you want to see immediately if something goes wrong, so you could introduce emergency counter-measures.

When the "--quiet" flag is present (I named it "--suppress-unchanged-stacks"), at the end of a stacks diff, the code checks whether the line ~"^There were no differences$" is part of the output and just skips printing it to the screen if it is.

As my script was an external wrapper I was fairly limited in how to do this. Thus that solution has a lot of short-comings and potential issues (e.g. it doesn't work at all with i18n or l10n).

I'm sure that inside the cdk codebase itself a much more resilient method could be found to assert whether there have been changes in a stack.

Additional Information/Context

No response

CDK CLI Version

2.94.0 (build 987c329)

Framework Version

No response

Node.js Version

v20.5.1

OS

Ubuntu 22.04.3 LTS

Language

Typescript, Python, .NET, Java, Go

Language Version

not applicable

Other information

No response

@nomike nomike added bug This issue is a bug. needs-triage This issue or PR still needs to be triaged. labels Sep 13, 2023
@github-actions github-actions bot added the package/tools Related to AWS CDK Tools or CLI label Sep 13, 2023
@peterwoodworth
Copy link
Contributor

Thanks for reporting @nomike,

@rix0rrr @MatasNed was this the desired outcome for the quiet flag?

@peterwoodworth peterwoodworth added p1 effort/small Small work item – less than a day of effort and removed needs-triage This issue or PR still needs to be triaged. labels Sep 13, 2023
@MatasNed
Copy link
Contributor

MatasNed commented Sep 14, 2023

Thanks for reporting @nomike,

@rix0rrr @MatasNed was this the desired outcome for the quiet flag?

Looks like a bug on the first glance, will submit a PR this

@nomike
Copy link
Author

nomike commented Sep 25, 2023

The desired output of the --quiet flag is to show stacks with changed resources, just like they would be shown without it, but if a stack doesn't have any changes, it should not be shown at all.

@SankyRed
Copy link
Contributor

SankyRed commented May 8, 2024

@sakurai-ryo @nomike Hello, I'm a member of the CDK team and I've been investigating this issue. I notice that some progress has been made on it. I'm reaching out to see if either of you would like to take ownership of this task, or if you prefer, I can handle it myself?

@sakurai-ryo
Copy link
Contributor

Hi @SankyRed
Sorry for leaving the PR out. I missed notifications from reviewers.
I will create a new PR within 2 ~ 3 days.
If you need to fix this problem immediately, feel free to create a new PR.

@SankyRed
Copy link
Contributor

SankyRed commented May 9, 2024

@sakurai-ryo No hurry, the CDK team is looking into P1s, and since you've made progress on it, I wanted to check if you'd be interested in getting it over the line. I could follow up with you, and if not, I can take it on.

@sakurai-ryo
Copy link
Contributor

Hi @SankyRed
I created the new PR.
However, the pr/needs-cli-test-run label is not assigned. Is it possible to assign it?
#30186

@mergify mergify bot closed this as completed in #30186 Sep 25, 2024
@mergify mergify bot closed this as completed in bcf9209 Sep 25, 2024
Copy link

Comments on closed issues and PRs are hard for our team to see.
If you need help, please open a new issue that references this one.

1 similar comment
Copy link

Comments on closed issues and PRs are hard for our team to see.
If you need help, please open a new issue that references this one.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Sep 25, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.