Repository: graasp/graasp-infrastructure
Pull request #50: fix: make infra state more polished and add doc
Author: login: spaenleh
Created: 2025-03-25T11:15:00Z | Merged: 2025-03-26T06:47:47Z



Diff:
diff --git a/.github/workflows/infra-start.yml b/.github/workflows/infra-start.yml
index d5357d9..c4f6bb2 100644
--- a/.github/workflows/infra-start.yml
+++ b/.github/workflows/infra-start.yml
@@ -9,17 +9,20 @@ on:
         type: environment
         required: true
       state:
-        description: "Expected state, active or hibernate"
+        description: "Expected infrastructure state"
         type: choice
         options:
-          - active
+          - running
+          - restricted
+          - db-only
           - stopped
         required: false
-        default: active
+        # default to running - only for the manual select
+        default: running
 
 jobs:
   deploy:
-    name: "Deploy infra in ${{ inputs.state || 'active' }} state to ${{ inputs.environment || 'dev' }}"
+    name: "Deploy infra in ${{ inputs.state || 'running' }} state to ${{ inputs.environment || 'dev' }} environment"
     environment: ${{ inputs.environment || 'dev' }}
     runs-on: ubuntu-latest
     steps:
@@ -36,7 +39,9 @@ jobs:
         run: npx cdktf deploy --auto-approve 'graasp-${{ inputs.environment || 'dev' }}'
         shell: bash
         env:
-          DEPLOYMENT_STATE: ${{ inputs.state || 'active' }}
+          INFRA_STATE: ${{ inputs.state || 'running' }}
+          MAINTENANCE_HEADER_NAME: ${{ secrets.MAINTENANCE_HEADER_NAME }}
+          MAINTENANCE_HEADER_SECRET: ${{ secrets.MAINTENANCE_HEADER_SECRET }}
           TF_VAR_MEILISEARCH_MASTER_KEY: ${{ secrets.TF_MEILISEARCH_MASTER_KEY }}
           TF_VAR_GRAASP_DB_PASSWORD: ${{ secrets.TF_GRAASP_DB_PASSWORD }}
           TF_VAR_ETHERPAD_DB_PASSWORD: ${{ secrets.TF_ETHERPAD_DB_PASSWORD }}
diff --git a/.github/workflows/infra-stop.yml b/.github/workflows/infra-stop.yml
index 6ba7d18..5bce99b 100644
--- a/.github/workflows/infra-stop.yml
+++ b/.github/workflows/infra-stop.yml
@@ -9,17 +9,20 @@ on:
         type: environment
         required: true
       state:
-        description: "Expected state, active or hibernate"
+        description: "Expected infrastructure state"
         type: choice
         options:
-          - active
+          - running
+          - restricted
+          - db-only
           - stopped
         required: false
-        default: active
+        # default to stopped - only for the manual select
+        default: stopped
 
 jobs:
   deploy:
-    name: "Deploy infra in ${{ inputs.state || 'stopped' }} state to ${{ inputs.environment || 'dev' }}"
+    name: "Deploy infra in ${{ inputs.state || 'stopped' }} state to ${{ inputs.environment || 'dev' }} environment"
     environment: ${{ inputs.environment || 'dev' }}
     runs-on: ubuntu-latest
     steps:
@@ -36,7 +39,9 @@ jobs:
         run: npx cdktf deploy --auto-approve 'graasp-${{ inputs.environment || 'dev' }}'
         shell: bash
         env:
-          DEPLOYMENT_STATE: ${{ inputs.state || 'stopped' }}
+          INFRA_STATE: ${{ inputs.state || 'stopped' }}
+          MAINTENANCE_HEADER_NAME: ${{ secrets.MAINTENANCE_HEADER_NAME }}
+          MAINTENANCE_HEADER_SECRET: ${{ secrets.MAINTENANCE_HEADER_SECRET }}
           TF_VAR_MEILISEARCH_MASTER_KEY: ${{ secrets.TF_MEILISEARCH_MASTER_KEY }}
           TF_VAR_GRAASP_DB_PASSWORD: ${{ secrets.TF_GRAASP_DB_PASSWORD }}
           TF_VAR_ETHERPAD_DB_PASSWORD: ${{ secrets.TF_ETHERPAD_DB_PASSWORD }}
diff --git a/.github/workflows/infrastructure-deploy-dev-on-merge.yml b/.github/workflows/infrastructure-deploy-dev-on-merge.yml
index 06fb83a..b6b04c4 100644
--- a/.github/workflows/infrastructure-deploy-dev-on-merge.yml
+++ b/.github/workflows/infrastructure-deploy-dev-on-merge.yml
@@ -19,25 +19,11 @@ jobs:
       - name: Checkout
         uses: actions/checkout@v4
 
-      - uses: actions/setup-node@v4
-        with:
-          node-version: "22"
-
-      - name: Install dependencies
-        run: yarn install
-
-      - uses: hashicorp/setup-terraform@v3
-
-      - name: Generate module and provider bindings
-        run: npx cdktf get
-
-      - name: Configure AWS Credentials
-        id: configure-aws
-        uses: aws-actions/configure-aws-credentials@v4
+      - name: Prepare terraform
+        uses: ./.github/actions/prepare-terraform
         with:
           aws-access-key-id: ${{ secrets.TF_AWS_ACCESS_KEY }}
           aws-secret-access-key: ${{ secrets.TF_SECRET_AWS_ACCESS_KEY }}
-          aws-region: eu-central-2 # not really important because it is reconfigured by Terraform
 
       # TODO: retrieve "cdktf.out/stacks/graasp-dev/plan" file to execute it
       - name: Run Terraform CDK
@@ -51,6 +37,8 @@ jobs:
           commentOnPr: false
           updateComment: false
         env:
+          MAINTENANCE_HEADER_NAME: ${{ secrets.MAINTENANCE_HEADER_NAME }}
+          MAINTENANCE_HEADER_SECRET: ${{ secrets.MAINTENANCE_HEADER_SECRET }}
           TF_VAR_MEILISEARCH_MASTER_KEY: ${{ secrets.TF_MEILISEARCH_MASTER_KEY }}
           TF_VAR_GRAASP_DB_PASSWORD: ${{ secrets.TF_GRAASP_DB_PASSWORD }}
           TF_VAR_ETHERPAD_DB_PASSWORD: ${{ secrets.TF_ETHERPAD_DB_PASSWORD }}
diff --git a/.github/workflows/infrastructure-deploy-env.yml b/.github/workflows/infrastructure-deploy-env.yml
index de78788..0eb616b 100644
--- a/.github/workflows/infrastructure-deploy-env.yml
+++ b/.github/workflows/infrastructure-deploy-env.yml
@@ -8,13 +8,15 @@ on:
         type: environment
         required: true
       state:
-        description: "Expected state, active or hibernate"
+        description: "Expected infrastructure running, active, restricted, db-only or stopped"
         type: choice
         options:
-          - active
+          - running
+          - restricted
+          - db-only
           - stopped
         required: false
-        default: active
+        default: running
 
 jobs:
   plan:
@@ -35,7 +37,9 @@ jobs:
         run: npx cdktf plan graasp-${{ inputs.environment }}
         shell: bash
         env:
-          DEPLOYMENT_STATE: ${{ inputs.state }}
+          INFRA_STATE: ${{ inputs.state }}
+          MAINTENANCE_HEADER_NAME: ${{ secrets.MAINTENANCE_HEADER_NAME }}
+          MAINTENANCE_HEADER_SECRET: ${{ secrets.MAINTENANCE_HEADER_SECRET }}
           TF_VAR_MEILISEARCH_MASTER_KEY: ${{ secrets.TF_MEILISEARCH_MASTER_KEY }}
           TF_VAR_GRAASP_DB_PASSWORD: ${{ secrets.TF_GRAASP_DB_PASSWORD }}
           TF_VAR_ETHERPAD_DB_PASSWORD: ${{ secrets.TF_ETHERPAD_DB_PASSWORD }}
@@ -63,7 +67,9 @@ jobs:
         run: npx cdktf deploy --auto-approve 'graasp-${{ inputs.environment }}'
         shell: bash
         env:
-          DEPLOYMENT_STATE: ${{ inputs.state }}
+          INFRA_STATE: ${{ inputs.state }}
+          MAINTENANCE_HEADER_NAME: ${{ secrets.MAINTENANCE_HEADER_NAME }}
+          MAINTENANCE_HEADER_SECRET: ${{ secrets.MAINTENANCE_HEADER_SECRET }}
           TF_VAR_MEILISEARCH_MASTER_KEY: ${{ secrets.TF_MEILISEARCH_MASTER_KEY }}
           TF_VAR_GRAASP_DB_PASSWORD: ${{ secrets.TF_GRAASP_DB_PASSWORD }}
           TF_VAR_ETHERPAD_DB_PASSWORD: ${{ secrets.TF_ETHERPAD_DB_PASSWORD }}
diff --git a/.github/workflows/infrastructure-plan-on-pr.yml b/.github/workflows/infrastructure-plan-on-pr.yml
index f2f7c94..44d997f 100644
--- a/.github/workflows/infrastructure-plan-on-pr.yml
+++ b/.github/workflows/infrastructure-plan-on-pr.yml
@@ -14,25 +14,12 @@ jobs:
     steps:
       - name: Checkout
         uses: actions/checkout@v4
-      - uses: hashicorp/setup-terraform@v3
 
-      - uses: actions/setup-node@v4
-        with:
-          node-version: "22"
-
-      - name: Install dependencies
-        run: yarn install
-
-      - name: Generate module and provider bindings
-        run: npx cdktf get
-
-      - name: Configure AWS Credentials
-        id: configure-aws
-        uses: aws-actions/configure-aws-credentials@v4
+      - name: Prepare terraform
+        uses: ./.github/actions/prepare-terraform
         with:
           aws-access-key-id: ${{ secrets.TF_AWS_ACCESS_KEY }}
           aws-secret-access-key: ${{ secrets.TF_SECRET_AWS_ACCESS_KEY }}
-          aws-region: eu-central-2 # not really important because it is reconfigured by Terraform
 
       - name: Run Terraform CDK
         uses: hashicorp/terraform-cdk-action@v4
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..31fc0c4
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1 @@
+{ "typescript.tsdk": "node_modules/typescript/lib" }
diff --git a/README.md b/README.md
index 45faf5d..3ab08a8 100644
--- a/README.md
+++ b/README.md
@@ -68,6 +68,11 @@ You need to export some variables before running cdktf:
 export AWS_ACCESS_KEY_ID="yourkey"
 export AWS_SECRET_ACCESS_KEY="yoursecret"
 
+# used to define the state of the deployment
+export INFRA_STATE="running"
+export MAINTENANCE_HEADER_NAME="abcd" # change to a random value
+export MAINTENANCE_HEADER_SECRET="secret" # change to the real value
+
 # use the passwords that will be really used!
 export TF_VAR_GRAASP_DB_PASSWORD="password"
 export TF_VAR_ETHERPAD_DB_PASSWORD="password"
@@ -271,6 +276,8 @@ It is possible that after some time deployments will break with an error similar
 
 In this case the fix is usually to update the `@cdktf/provider-aws` dependency. Using `yarn upgrade-interactive` it is easy to do.
 
+If upgrading the npm dependencies does not solve the problem, it might be because the required ranges are incompatible. Some modules might require higher ranges, and the pre-built aws provider not being updated to those ranges yet. In this case, look at the requirements for the two modules that are manually added in the `cdktf.json` config file and set them to a previous version that makes the range requirement from the pre-built aws provider happy.
+
 ### Container does not exist in task definition
 
 If you have to delete a cluster and when re-deploying you see an error about the container not existing in the task definition you should:
diff --git a/constructs/cloudfront.ts b/constructs/cloudfront.ts
index 1f7ce2a..1dc9420 100644
--- a/constructs/cloudfront.ts
+++ b/constructs/cloudfront.ts
@@ -1,5 +1,7 @@
 import { CloudfrontDistribution } from '@cdktf/provider-aws/lib/cloudfront-distribution';
+import { CloudfrontFunction } from '@cdktf/provider-aws/lib/cloudfront-function';
 import { DataAwsAcmCertificate } from '@cdktf/provider-aws/lib/data-aws-acm-certificate';
+import { Token } from 'cdktf';
 
 import { Construct } from 'constructs';
 
@@ -12,6 +14,7 @@ export function makeCloudfront(
   id: string,
   targetName: string,
   s3domain: string,
+  functionAssociationArn: string | undefined,
   certificate: DataAwsAcmCertificate,
   env: EnvironmentConfig,
   isUsingWebsiteEndpoint: boolean = false,
@@ -47,13 +50,9 @@ export function makeCloudfront(
       cachedMethods: ['GET', 'HEAD'],
       targetOriginId: targetName,
       viewerProtocolPolicy: 'redirect-to-https',
-      // lambdaFunctionAssociation: [
-      //   {
-      //     eventType: 'viewer-request',
-      //     lambdaArn:
-      //       'arn:aws:lambda:us-east-1:299720865162:function:maintenance-check-dev',
-      //   },
-      // ],
+      functionAssociation: functionAssociationArn
+        ? [{ eventType: 'viewer-request', functionArn: functionAssociationArn }]
+        : undefined,
     },
     customErrorResponse: [
       {
@@ -77,3 +76,47 @@ export function makeCloudfront(
     },
   });
 }
+
+/**
+ * Create a Cloudfront funtion that can be associated to the `viewer-request` event to filter requests based on a secret header.
+ *
+ * This allows to redirect normal users to the maintenance page when we perform migrations on the infrastructure.
+ */
+export function createMaintenanceFunction(
+  scope: Construct,
+  id: string,
+  environment: EnvironmentConfig,
+  headerSecret: { name: string; value: string } | undefined,
+) {
+  const cfFunc = new CloudfrontFunction(scope, id, {
+    name: 'maintenance-check',
+    runtime: 'cloudfront-js-2.0',
+    code: headerSecret
+      ? Token.asString(`
+function handler(event) {
+  const headers = event.request.headers;
+  const headerName = 'x-maintenance-${headerSecret.name}';
+  const headerSecret = '${headerSecret.value}';
+  if (
+    headers[headerName] &&
+    headers[headerName][0].value === headerSecret
+  ) {
+    return event.request;
+  }
+
+  return {
+    statusCode: 302,
+    statusDescription: 'Found',
+    headers: {
+      'location': {value: 'https://${subdomainForEnv('maintenance', environment)}'},
+    },
+  };
+}`)
+      : Token.asString(`
+function handler(event) {
+  return event.request;
+}`),
+  });
+  // do not return the function when there are not secret headers so it can be de-associated
+  return headerSecret ? cfFunc : undefined;
+}
diff --git a/constructs/cluster.ts b/constructs/cluster.ts
index 8e4692a..6c15246 100644
--- a/constructs/cluster.ts
+++ b/constructs/cluster.ts
@@ -12,7 +12,10 @@ import {
 import { EcsTaskDefinition } from '@cdktf/provider-aws/lib/ecs-task-definition';
 import { IamRole } from '@cdktf/provider-aws/lib/iam-role';
 import { IamRolePolicy } from '@cdktf/provider-aws/lib/iam-role-policy';
-import { LbListenerRule } from '@cdktf/provider-aws/lib/lb-listener-rule';
+import {
+  LbListenerRule,
+  LbListenerRuleCondition,
+} from '@cdktf/provider-aws/lib/lb-listener-rule';
 import { LbTargetGroup } from '@cdktf/provider-aws/lib/lb-target-group';
 import { SecurityGroup } from '@cdktf/provider-aws/lib/security-group';
 import { ServiceDiscoveryHttpNamespace } from '@cdktf/provider-aws/lib/service-discovery-http-namespace';
@@ -42,9 +45,7 @@ export class Cluster extends Construct {
     super(scope, name);
 
     this.isActive = isActive;
-    this.cluster = new EcsCluster(scope, `cluster`, {
-      name,
-    });
+    this.cluster = new EcsCluster(scope, `cluster`, { name });
     this.vpc = vpc;
 
     this.namespace = new ServiceDiscoveryHttpNamespace(this, 'namespace', {
@@ -63,9 +64,7 @@ export class Cluster extends Construct {
             Action: 'sts:AssumeRole',
             Effect: 'Allow',
             Sid: '',
-            Principal: {
-              Service: 'ecs-tasks.amazonaws.com',
-            },
+            Principal: { Service: 'ecs-tasks.amazonaws.com' },
           },
         ],
       }),
@@ -110,6 +109,7 @@ export class Cluster extends Construct {
       containerPort: number;
       host: string;
       healthCheckPath: string;
+      ruleConditions?: LbListenerRuleCondition[];
     },
   ) {
     new CloudwatchLogGroup(this, `${name}-loggroup`, {
@@ -165,19 +165,12 @@ export class Cluster extends Construct {
       new LbListenerRule(this, `${name}-rule`, {
         listenerArn: loadBalancerConfig.loadBalancer.lbl.arn,
         priority: loadBalancerConfig.priority,
-        action: [
-          {
-            type: 'forward',
-            targetGroupArn: targetGroup.arn,
-          },
-        ],
+        action: [{ type: 'forward', targetGroupArn: targetGroup.arn }],
 
         condition: [
-          {
-            hostHeader: {
-              values: [loadBalancerConfig.host],
-            },
-          },
+          { hostHeader: { values: [loadBalancerConfig.host] } },
+          // add rule conditions
+          ...(loadBalancerConfig.ruleConditions ?? []),
         ],
       });
     }
@@ -215,9 +208,7 @@ export class Cluster extends Construct {
           : undefined,
       },
       lifecycle: taskDefinitionConfig.dummy
-        ? {
-            ignoreChanges: ['task_definition'],
-          }
+        ? { ignoreChanges: ['task_definition'] }
         : undefined,
     });
 
@@ -251,10 +242,7 @@ export function createContainerDefinitions(
   name: string,
   dockerImage: string,
   dockerTag: string,
-  portMappings: {
-    containerPort: number;
-    hostPort: number;
-  }[],
+  portMappings: { containerPort: number; hostPort: number }[],
   env: Record<string, string | undefined>,
   deployEnv: EnvironmentConfig,
   command?: string[],
diff --git a/constructs/load_balancer.ts b/constructs/load_balancer.ts
index 31c5e5a..6861080 100644
--- a/constructs/load_balancer.ts
+++ b/constructs/load_balancer.ts
@@ -1,7 +1,10 @@
 import { DataAwsAcmCertificate } from '@cdktf/provider-aws/lib/data-aws-acm-certificate';
 import { Lb } from '@cdktf/provider-aws/lib/lb';
 import { LbListener } from '@cdktf/provider-aws/lib/lb-listener';
-import { LbListenerRule } from '@cdktf/provider-aws/lib/lb-listener-rule';
+import {
+  LbListenerRule,
+  LbListenerRuleCondition,
+} from '@cdktf/provider-aws/lib/lb-listener-rule';
 import { SecurityGroup } from '@cdktf/provider-aws/lib/security-group';
 import { VpcSecurityGroupIngressRule } from '@cdktf/provider-aws/lib/vpc-security-group-ingress-rule';
 import { Fn } from 'cdktf';
@@ -24,7 +27,7 @@ export class LoadBalancer extends Construct {
     name: string,
     vpc: Vpc,
     certificate: DataAwsAcmCertificate,
-    isActive: boolean,
+    environment: EnvironmentConfig,
   ) {
     super(scope, `${name}-load-balancer`);
     this.vpc = vpc;
@@ -91,11 +94,7 @@ export class LoadBalancer extends Construct {
       protocol: 'HTTP',
       defaultAction: [
         {
-          redirect: {
-            port: '443',
-            protocol: 'HTTPS',
-            statusCode: 'HTTP_301',
-          },
+          redirect: { port: '443', protocol: 'HTTPS', statusCode: 'HTTP_301' },
           type: 'redirect',
         },
       ],
@@ -105,27 +104,16 @@ export class LoadBalancer extends Construct {
       loadBalancerArn: this.lb.arn,
       port: 443,
       protocol: 'HTTPS',
-      defaultAction: isActive
-        ? [
-            {
-              fixedResponse: {
-                contentType: 'text/plain',
-                statusCode: '503',
-              },
-              type: 'fixed-response',
-            },
-          ]
-        : [
-            {
-              type: 'fixed-response',
-              fixedResponse: {
-                contentType: 'text/plain',
-                messageBody:
-                  'Graasp is currently not available. Contact support',
-                statusCode: '200',
-              },
-            },
-          ],
+      defaultAction: [
+        {
+          redirect: {
+            host: subdomainForEnv('maintenance', environment),
+            protocol: 'HTTPS',
+            statusCode: 'HTTP_302', // temporary redirect
+          },
+          type: 'redirect',
+        },
+      ],
       sslPolicy: 'ELBSecurityPolicy-2016-08',
       certificateArn: certificate.arn,
     });
@@ -142,6 +130,7 @@ export class LoadBalancer extends Construct {
       statusCode?: string;
     },
     env: EnvironmentConfig,
+    ruleConditions?: LbListenerRuleCondition[],
   ) {
     const host = redirectOptions.subDomainTarget
       ? subdomainForEnv(redirectOptions.subDomainTarget, env)
@@ -169,6 +158,7 @@ export class LoadBalancer extends Construct {
             values: [subdomainForEnv(redirectOptions.subDomainOrigin, env)],
           },
         },
+        ...(ruleConditions ?? []),
       ],
     });
   }
diff --git a/main.ts b/main.ts
index d6d73d2..eb83944 100644
--- a/main.ts
+++ b/main.ts
@@ -1,5 +1,6 @@
 import { DataAwsAcmCertificate } from '@cdktf/provider-aws/lib/data-aws-acm-certificate';
 import { DataAwsEcrRepository } from '@cdktf/provider-aws/lib/data-aws-ecr-repository';
+import { LbListenerRuleCondition } from '@cdktf/provider-aws/lib/lb-listener-rule';
 import {
   AwsProvider,
   AwsProviderAssumeRole,
@@ -12,7 +13,10 @@ import { Construct } from 'constructs';
 import { Vpc } from './.gen/modules/vpc';
 import { CONFIG } from './config';
 import { GraaspS3Bucket } from './constructs/bucket';
-import { makeCloudfront } from './constructs/cloudfront';
+import {
+  createMaintenanceFunction,
+  makeCloudfront,
+} from './constructs/cloudfront';
 import { Cluster, createContainerDefinitions } from './constructs/cluster';
 import { GateKeeper } from './constructs/gate_keeper';
 import { LoadBalancer } from './constructs/load_balancer';
@@ -27,12 +31,13 @@ import {
   EnvironmentConfig,
   GraaspWebsiteConfig,
   envDomain,
+  getInfraState,
+  getMaintenanceHeaderPair,
   subdomainForEnv,
+  validateInfraState,
 } from './utils';
 
-const STOPPED_STATE = 'stopped';
-
-const DEFAULT_REGION = AllowedRegion.Francfort;
+const DEFAULT_REGION = AllowedRegion.Frankfurt;
 const CERTIFICATE_REGION = 'us-east-1';
 
 const SHARED_TAGS = { 'terraform-managed': 'true' };
@@ -118,100 +123,118 @@ class GraaspStack extends TerraformStack {
       },
     );
 
-    // get the desired state variable
-    const deploymentState = process.env.DEPLOYMENT_STATE;
-    const isActive = deploymentState !== STOPPED_STATE;
+    // define the maintenance header rule
+    const maintenanceHeaderValues = getMaintenanceHeaderPair(environment);
 
-    const cluster = new Cluster(this, id, vpc, isActive);
+    const maintenanceHeaderRule = maintenanceHeaderValues
+      ? ({
+          httpHeader: {
+            httpHeaderName: maintenanceHeaderValues.name,
+            values: [maintenanceHeaderValues.value],
+          },
+        } satisfies LbListenerRuleCondition)
+      : undefined;
+    const ruleConditions = maintenanceHeaderRule ? [maintenanceHeaderRule] : [];
+
+    const cluster = new Cluster(
+      this,
+      id,
+      vpc,
+      getInfraState(environment).areServicesActive,
+    );
     const loadBalancer = new LoadBalancer(
       this,
       id,
       vpc,
       sslCertificate,
-      isActive,
-    );
-
-    if (isActive) {
-      // ---- Setup redirections in the load-balancer -----
-      // for the go.graasp.org service, redirect to an api endpoint
-      loadBalancer.addListenerRuleForHostRedirect(
-        'shortener',
-        10,
-        {
-          subDomainOrigin: 'go', // requests from go.graasp.org
-          subDomainTarget: 'api', // to api.graasp.org
-          pathRewrite: '/items/short-links/#{path}', // rewrite the path to add the correct api route
-          // optionally keep query params
-          statusCode: 'HTTP_302', // temporary moved
-        },
-        environment,
-      );
-      loadBalancer.addListenerRuleForHostRedirect(
-        'account',
-        11,
-        {
-          subDomainOrigin: 'account', // requests from account.graasp.org
-          subDomainTarget: '', // to graasp.org
-          pathRewrite: '/account/#{path}', // rewrite the path to add the correct api route
-          // optionally keep query params
-          queryRewrite: '#{query}',
-          statusCode: 'HTTP_301', // permanently moved
-        },
-        environment,
-      );
-      loadBalancer.addListenerRuleForHostRedirect(
-        'auth',
-        12,
-        {
-          subDomainOrigin: 'auth', // requests from auth.graasp.org
-          subDomainTarget: '', // to graasp.org
-          pathRewrite: '/auth/#{path}', // rewrite the path to add the correct api route
-          // optionally keep query params
-          queryRewrite: '#{query}',
-          statusCode: 'HTTP_301', // permanently moved
-        },
-        environment,
-      );
-      loadBalancer.addListenerRuleForHostRedirect(
-        'player',
-        13,
-        {
-          subDomainOrigin: 'player', // requests from player.graasp.org
-          subDomainTarget: '', // to graasp.org
-          pathRewrite: '/player/#{path}', // rewrite the path to add the correct api route
-          // optionally keep query params
-          queryRewrite: '#{query}',
-          statusCode: 'HTTP_301', // permanently moved
-        },
-        environment,
-      );
-      loadBalancer.addListenerRuleForHostRedirect(
-        'builder',
-        14,
-        {
-          subDomainOrigin: 'builder', // requests from builder.graasp.org
-          subDomainTarget: '', // to graasp.org
-          pathRewrite: '/builder/#{path}', // rewrite the path to add the correct api route
-          // optionally keep query params
-          queryRewrite: '#{query}',
-          statusCode: 'HTTP_301', // permanently moved
-        },
-        environment,
-      );
-      loadBalancer.addListenerRuleForHostRedirect(
-        'analytics',
-        15,
-        {
-          subDomainOrigin: 'analytics', // requests from analytics.graasp.org
-          subDomainTarget: '', // to graasp.org
-          pathRewrite: '/analytics/#{path}', // rewrite the path to add the correct api route
-          // optionally keep query params
-          queryRewrite: '#{query}',
-          statusCode: 'HTTP_301', // permanently moved
-        },
-        environment,
-      );
-    }
+      environment,
+    );
+
+    // ---- Setup redirections in the load-balancer -----
+    // for the go.graasp.org service, redirect to an api endpoint
+    loadBalancer.addListenerRuleForHostRedirect(
+      'shortener',
+      10,
+      {
+        subDomainOrigin: 'go', // requests from go.graasp.org
+        subDomainTarget: 'api', // to api.graasp.org
+        pathRewrite: '/items/short-links/#{path}', // rewrite the path to add the correct api route
+        // optionally keep query params
+        statusCode: 'HTTP_302', // temporary moved
+      },
+      environment,
+      ruleConditions,
+    );
+    loadBalancer.addListenerRuleForHostRedirect(
+      'account',
+      11,
+      {
+        subDomainOrigin: 'account', // requests from account.graasp.org
+        subDomainTarget: '', // to graasp.org
+        pathRewrite: '/account/#{path}', // rewrite the path to add the correct api route
+        // optionally keep query params
+        queryRewrite: '#{query}',
+        statusCode: 'HTTP_301', // permanently moved
+      },
+      environment,
+      ruleConditions,
+    );
+    loadBalancer.addListenerRuleForHostRedirect(
+      'auth',
+      12,
+      {
+        subDomainOrigin: 'auth', // requests from auth.graasp.org
+        subDomainTarget: '', // to graasp.org
+        pathRewrite: '/auth/#{path}', // rewrite the path to add the correct api route
+        // optionally keep query params
+        queryRewrite: '#{query}',
+        statusCode: 'HTTP_301', // permanently moved
+      },
+      environment,
+      ruleConditions,
+    );
+    loadBalancer.addListenerRuleForHostRedirect(
+      'player',
+      13,
+      {
+        subDomainOrigin: 'player', // requests from player.graasp.org
+        subDomainTarget: '', // to graasp.org
+        pathRewrite: '/player/#{path}', // rewrite the path to add the correct api route
+        // optionally keep query params
+        queryRewrite: '#{query}',
+        statusCode: 'HTTP_301', // permanently moved
+      },
+      environment,
+      ruleConditions,
+    );
+    loadBalancer.addListenerRuleForHostRedirect(
+      'builder',
+      14,
+      {
+        subDomainOrigin: 'builder', // requests from builder.graasp.org
+        subDomainTarget: '', // to graasp.org
+        pathRewrite: '/builder/#{path}', // rewrite the path to add the correct api route
+        // optionally keep query params
+        queryRewrite: '#{query}',
+        statusCode: 'HTTP_301', // permanently moved
+      },
+      environment,
+      ruleConditions,
+    );
+    loadBalancer.addListenerRuleForHostRedirect(
+      'analytics',
+      15,
+      {
+        subDomainOrigin: 'analytics', // requests from analytics.graasp.org
+        subDomainTarget: '', // to graasp.org
+        pathRewrite: '/analytics/#{path}', // rewrite the path to add the correct api route
+        // optionally keep query params
+        queryRewrite: '#{query}',
+        statusCode: 'HTTP_301', // permanently moved
+      },
+      environment,
+      ruleConditions,
+    );
 
     // define security groups allowing ingress trafic from the load-balancer
     const loadBalancerAllowedSecurityGroupInfo = {
@@ -343,7 +366,7 @@ class GraaspStack extends TerraformStack {
         etherpadAllowedSecurityGroupInfo,
       ],
       CONFIG[environment.env].dbConfig.graasp.enableReplication,
-      isActive,
+      getInfraState(environment).isDatabaseActive,
       CONFIG[environment.env].dbConfig.graasp.backupRetentionPeriod,
       undefined,
       gatekeeper.instance.securityGroup,
@@ -480,6 +503,7 @@ class GraaspStack extends TerraformStack {
         port: 80,
         containerPort: BACKEND_PORT,
         healthCheckPath: '/health',
+        ruleConditions,
       },
     );
 
@@ -504,6 +528,7 @@ class GraaspStack extends TerraformStack {
         port: 80,
         containerPort: LIBRARY_PORT,
         healthCheckPath: '/api/status',
+        ruleConditions,
       },
     );
 
@@ -526,6 +551,7 @@ class GraaspStack extends TerraformStack {
         port: 443,
         containerPort: ETHERPAD_PORT,
         healthCheckPath: '/',
+        ruleConditions,
       },
     );
 
@@ -548,6 +574,7 @@ class GraaspStack extends TerraformStack {
         port: 80,
         containerPort: UMAMI_PORT,
         healthCheckPath: '/api/heartbeat',
+        ruleConditions,
       },
     );
 
@@ -643,6 +670,8 @@ class GraaspStack extends TerraformStack {
       `${id}-maintenance`,
       'maintenance',
       maintenanceBucket.websiteConfiguration.websiteEndpoint,
+      // no need for a function association
+      undefined,
       sslCertificateCloudfront,
       environment,
       !!maintenanceBucket.websiteConfiguration,
@@ -656,6 +685,14 @@ class GraaspStack extends TerraformStack {
       client: { corsConfig: [], apexDomain: true },
     };
 
+    // define the maintenance function in a function association
+    const maintenanceFunc = createMaintenanceFunction(
+      this,
+      'maintenance-check-function',
+      environment,
+      maintenanceHeaderValues,
+    );
+
     for (const [website_name, website_config] of Object.entries(websites)) {
       const bucket = new GraaspS3Bucket(
         this,
@@ -671,9 +708,8 @@ class GraaspStack extends TerraformStack {
         this,
         `${id}-${website_name}`,
         website_name,
-        isActive
-          ? bucket.websiteConfiguration.websiteEndpoint
-          : maintenanceBucket.websiteConfiguration.websiteEndpoint,
+        bucket.websiteConfiguration.websiteEndpoint,
+        maintenanceFunc?.arn,
         sslCertificateCloudfront,
         environment,
         !!bucket.websiteConfiguration,
@@ -687,22 +723,28 @@ class GraaspStack extends TerraformStack {
 
 const app = new App();
 
+// get the desired infra state
+const infraState = validateInfraState(process.env.INFRA_STATE);
+
 // Each stack has its own state stored in a pre created S3 Bucket
 new GraaspStack(app, 'graasp-dev', {
   env: Environment.DEV,
   subdomain: 'dev',
   region: DEFAULT_REGION,
+  infraState,
 });
 
 new GraaspStack(app, 'graasp-staging', {
   env: Environment.STAGING,
   subdomain: 'stage',
   region: AllowedRegion.Zurich,
+  infraState,
 });
 
 new GraaspStack(app, 'graasp-prod', {
   env: Environment.PRODUCTION,
   region: AllowedRegion.Zurich,
+  infraState,
 });
 
 app.synth();
diff --git a/utils.ts b/utils.ts
index 4a74f9a..12e121a 100644
--- a/utils.ts
+++ b/utils.ts
@@ -10,15 +10,41 @@ export enum Environment {
   PRODUCTION,
 }
 
-export enum AllowedRegion {
-  Francfort = 'eu-central-1',
-  Zurich = 'eu-central-2',
-}
+export const AllowedRegion = {
+  Frankfurt: 'eu-central-1',
+  Zurich: 'eu-central-2',
+} as const;
+export type AllowedRegionOptions =
+  (typeof AllowedRegion)[keyof typeof AllowedRegion];
+
+const InfraState = {
+  /**
+   * The infrastructure operates in "normal" mode, all services are up, and there is no filtering on requests
+   */
+  Running: 'running',
+  /**
+   * The infrastructure is operating in "restricted" mode, only requests that are performed with specific headers are allowed.
+   * This mode is useful for testing that everything works after a large change.
+   */
+  Restricted: 'restricted',
+  /**
+   * The infrastructure is mostly down, all services are stopped, only the database is still accessible, so migrations can be performed
+   */
+  DBOnly: 'db-only',
+  /**
+   * The infrastructure is completely down, no services are running, the database is turned off.
+   * This is a state that should be used during the night and the weekends to reduce costs on low-usage environnements (i.e. dev)
+   * or, while we do not have new changes in "staging".
+   */
+  Stopped: 'stopped',
+} as const;
+export type InfraStateOptions = (typeof InfraState)[keyof typeof InfraState];
 
 export type EnvironmentConfig = {
   env: Environment;
   subdomain?: string;
-  region: AllowedRegion;
+  region: AllowedRegionOptions;
+  infraState: InfraStateOptions;
 };
 
 export type GraaspWebsiteConfig = {
@@ -39,3 +65,69 @@ export function envDomain(env: EnvironmentConfig) {
     ? `${env.subdomain}.${GRAASP_ROOT_DOMAIN}`
     : `${GRAASP_ROOT_DOMAIN}`;
 }
+
+const VALID_INFRA_STATES = Object.values(InfraState) as string[];
+export function validateInfraState(
+  infraState: string | undefined,
+): InfraStateOptions {
+  // default if nothing is provided
+  if (infraState === undefined) {
+    return InfraState.Running;
+  }
+  // if a state is provided it should match one of the allowed states
+  if (!VALID_INFRA_STATES.includes(infraState)) {
+    throw new Error(
+      `INFRA_STATE should be one of: ${Object.values(InfraState).join(', ')}. Provided: ${infraState}`,
+    );
+  }
+  return infraState as InfraStateOptions;
+}
+
+export function getInfraState(environment: EnvironmentConfig): {
+  isMaintenanceActive: boolean;
+  isDatabaseActive: boolean;
+  areServicesActive: boolean;
+} {
+  const { infraState } = environment;
+  switch (infraState) {
+    case InfraState.Stopped:
+      return {
+        isMaintenanceActive: true,
+        isDatabaseActive: false,
+        areServicesActive: false,
+      };
+    case InfraState.DBOnly:
+      return {
+        isMaintenanceActive: true,
+        isDatabaseActive: true,
+        areServicesActive: false,
+      };
+    case InfraState.Restricted:
+      return {
+        isMaintenanceActive: true,
+        isDatabaseActive: true,
+        areServicesActive: true,
+      };
+    case InfraState.Running:
+    default:
+      return {
+        isMaintenanceActive: false,
+        isDatabaseActive: true,
+        areServicesActive: true,
+      };
+  }
+}
+
+export function getMaintenanceHeaderPair(
+  environment: EnvironmentConfig,
+): { name: string; value: string } | undefined {
+  if (getInfraState(environment).isMaintenanceActive === false) {
+    return undefined;
+  }
+  const name = process.env.MAINTENANCE_HEADER_NAME;
+  const value = process.env.MAINTENANCE_HEADER_SECRET;
+  if (!name || !value) {
+    throw new Error('Expected to have a maintenance header name and value');
+  }
+  return { name, value };
+}


Reviews:
user: login: MatveyK
body: LGTM !
state: APPROVED
author_association: NONE
submitted_at: 2025-03-25T12:49:47Z
user: login: pyphilia
body: LGTM! Thanks for the work 👍 
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-03-25T12:59:05Z

Review comments:
diff_hunk: @@ -9,17 +9,20 @@ on:
         type: environment
         required: true
       state:
-        description: "Expected state, active or hibernate"
+        description: "Expected infrastructure state, running, restricted, db-only or stopped"
path: .github/workflows/infra-start.yml
user: login: pyphilia
body: Remove maybe if it does not give you much info, to prevent desynchronization 
created_at: 2025-03-25T12:36:40Z
author_association: CONTRIBUTOR
diff_hunk: @@ -9,17 +9,20 @@ on:
         type: environment
         required: true
       state:
-        description: "Expected state, active or hibernate"
+        description: "Expected infrastructure state, running, restricted, db-only or stopped"
         type: choice
         options:
-          - active
+          - running
+          - restricted
+          - db-only
           - stopped
         required: false
-        default: active
+        # default to running - only for the manual select
+        default: running
 
 jobs:
   deploy:
-    name: "Deploy infra in ${{ inputs.state || 'active' }} state to ${{ inputs.environment || 'dev' }}"
+    name: "Deploy infra in ${{ inputs.state || 'running' }} state to ${{ inputs.environment || 'dev' }}"
path: .github/workflows/infra-start.yml
user: login: pyphilia
body: ```suggestion
    name: "Deploy infra in ${{ inputs.state || 'running' }} state to ${{ inputs.environment || 'dev' }} environment"
```
created_at: 2025-03-25T12:37:32Z
author_association: CONTRIBUTOR
diff_hunk: @@ -68,6 +68,11 @@ You need to export some variables before running cdktf:
 export AWS_ACCESS_KEY_ID="yourkey"
 export AWS_SECRET_ACCESS_KEY="yoursecret"
 
+# used to defined the state of the deployment
path: README.md
user: login: MatveyK
body: "used to **define**..."
created_at: 2025-03-25T12:38:27Z
author_association: NONE
diff_hunk: @@ -271,6 +276,8 @@ It is possible that after some time deployments will break with an error similar
 
 In this case the fix is usually to update the `@cdktf/provider-aws` dependency. Using `yarn upgrade-interactive` it is easy to do.
 
+If upgrading the npm dependencies does not solve the problem, it might be because the required ranges are incompatible. This can be cause by modules requiring higher ranges, and the pre-built aws provider not being updated to those ranges yet. In this case, look at the requirements for the two modules that are manually added in the `cdktf.json` config file and set them to a previous version that makes the range requirement from the pre-built aws provider happy.
path: README.md
user: login: pyphilia
body: ```suggestion
If upgrading the npm dependencies does not solve the problem, it might be because the required ranges are incompatible. Some modules might require higher ranges, and the pre-built aws provider not being updated to those ranges yet. In this case, look at the requirements for the two modules that are manually added in the `cdktf.json` config file and set them to a previous version that makes the range requirement from the pre-built aws provider happy.
```
created_at: 2025-03-25T12:40:08Z
author_association: CONTRIBUTOR
diff_hunk: @@ -77,3 +76,41 @@ export function makeCloudfront(
     },
   });
 }
+
+export function createMaintenanceFunction(
+  scope: Construct,
+  id: string,
+  headerSecret: { name: string; value: string },
+) {
+  const { name, value } = headerSecret;
+  const cfFunc = new CloudfrontFunction(scope, id, {
+    name: 'maintenance-check',
+    runtime: 'cloudfront-js-2.0',
+    code: Token.asString(`
+exports.handler = async (event, context) => {
+  const headers = event.Records[0].cf.request.headers;
+  const headerName = 'x-maintenance-${name}';
+  const headerSecret = '${value}';
+  if (
+    headers[headerName] &&
+    headers[headerName][0].value === headerSecret
+  ) {
+    return event.Records[0].cf.request;
+  }
+
+  return {
+    status: '302',
+    statusDescription: 'Found',
+    headers: {
+      location: [
+        {
+          key: 'Location',
+          value: 'https://maintenance.graasp.org',
path: constructs/cloudfront.ts
user: login: pyphilia
body: Should this be a variable of some sort?
created_at: 2025-03-25T12:42:02Z
author_association: CONTRIBUTOR
diff_hunk: @@ -39,3 +65,69 @@ export function envDomain(env: EnvironmentConfig) {
     ? `${env.subdomain}.${GRAASP_ROOT_DOMAIN}`
     : `${GRAASP_ROOT_DOMAIN}`;
 }
+
+const VALID_INFRA_STATES = Object.values(InfraState) as string[];
+export function validateInfraState(
+  infraState: string | undefined,
+): InfraStateOptions {
+  // default if nothing is provided
+  if (infraState === undefined) {
+    return InfraState.Running;
+  }
+  // if a state is provided it should match one of the allowed states
+  if (!VALID_INFRA_STATES.includes(infraState)) {
+    throw new Error(
+      `INFRA_STATE should be one of: ${Object.values(InfraState).join(', ')}. Provided: ${infraState}`,
+    );
+  }
+  return infraState as InfraStateOptions;
+}
+
+export function getInfraState(environment: EnvironmentConfig): {
+  isMaintenanceActive: boolean;
+  isDatabaseActive: boolean;
+  areServicesActive: boolean;
+} {
+  const { infraState } = environment;
+  switch (infraState) {
+    case InfraState.Stopped:
+      return {
+        isMaintenanceActive: true,
+        isDatabaseActive: false,
+        areServicesActive: false,
+      };
+    case InfraState.DBOnly:
+      return {
+        isMaintenanceActive: true,
+        isDatabaseActive: true,
+        areServicesActive: false,
+      };
+    case InfraState.Restricted:
+      return {
+        isMaintenanceActive: true,
+        isDatabaseActive: true,
+        areServicesActive: true,
+      };
+    case InfraState.Running:
+    default:
+      return {
+        isMaintenanceActive: false,
+        isDatabaseActive: true,
+        areServicesActive: true,
+      };
+  }
+}
+
+export function getMaintenanceHeaders(
path: utils.ts
user: login: pyphilia
body: Perhaps rename to include `pairs` in the name? This naming makes me think you get many headers, potentially just the values of the headers?
created_at: 2025-03-25T12:47:18Z
author_association: CONTRIBUTOR
diff_hunk: @@ -77,3 +76,41 @@ export function makeCloudfront(
     },
   });
 }
+
+export function createMaintenanceFunction(
path: constructs/cloudfront.ts
user: login: pyphilia
body: Perhaps add comments
created_at: 2025-03-25T12:50:09Z
author_association: CONTRIBUTOR
diff_hunk: @@ -10,15 +10,41 @@ export enum Environment {
   PRODUCTION,
 }
 
-export enum AllowedRegion {
-  Francfort = 'eu-central-1',
-  Zurich = 'eu-central-2',
-}
+export const AllowedRegion = {
+  Francfort: 'eu-central-1',
path: utils.ts
user: login: pyphilia
body: ```suggestion
  Frankfurt: 'eu-central-1',
```
created_at: 2025-03-25T12:51:23Z
author_association: CONTRIBUTOR
diff_hunk: @@ -10,15 +10,41 @@ export enum Environment {
   PRODUCTION,
 }
 
-export enum AllowedRegion {
-  Francfort = 'eu-central-1',
-  Zurich = 'eu-central-2',
-}
+export const AllowedRegion = {
+  Francfort: 'eu-central-1',
+  Zurich: 'eu-central-2',
+} as const;
+export type AllowedRegionOptions =
+  (typeof AllowedRegion)[keyof typeof AllowedRegion];
+
+const InfraState = {
+  /**
+   * The infrastructure operates in "normal" mode, all services are up, and there is not filtering on requests
path: utils.ts
user: login: pyphilia
body: ```suggestion
   * The infrastructure operates in "normal" mode, all services are up, and there is no filtering on requests
```
created_at: 2025-03-25T12:51:44Z
author_association: CONTRIBUTOR
diff_hunk: @@ -10,15 +10,41 @@ export enum Environment {
   PRODUCTION,
 }
 
-export enum AllowedRegion {
-  Francfort = 'eu-central-1',
-  Zurich = 'eu-central-2',
-}
+export const AllowedRegion = {
+  Francfort: 'eu-central-1',
+  Zurich: 'eu-central-2',
+} as const;
+export type AllowedRegionOptions =
+  (typeof AllowedRegion)[keyof typeof AllowedRegion];
+
+const InfraState = {
+  /**
+   * The infrastructure operates in "normal" mode, all services are up, and there is not filtering on requests
+   */
+  Running: 'running',
+  /**
+   * The infrastructure is operating in "restricted" mode, only requests that are performed with specific headers are allowed.
+   * This mode is useful for testing that everything works after a large change.
+   */
+  Restricted: 'restricted',
+  /**
+   * The infrastructure is mostly down, all services are stopped, only the database is still accessible, so migrations can be performed
+   */
+  DBOnly: 'db-only',
+  /**
+   * The infrastructure is completely down, no services are running, the database is turned off.
+   * This is a state that should be used during the night and the weekends to reduce costs on low-usage environnement (dev)
path: utils.ts
user: login: pyphilia
body: ```suggestion
   * This is a state that should be used during the night and the weekends to reduce costs on low-usage environnements (ie. dev)
```
created_at: 2025-03-25T12:52:33Z
author_association: CONTRIBUTOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-03-25T11:16:27Z
body: <!-- terraform cdk action for options with hash 0d855fa9b0c377767ce986776c53ddef -->
### ✅ Successfully planned Terraform CDK Stack 'graasp-dev'



<details><summary>Show Plan</summary>

```shell
graasp-dev  Initializing the backend...
graasp-dev  Successfully configured the backend "s3"! Terraform will automatically
            use this backend unless the backend configuration changes.
graasp-dev  Initializing modules...
graasp-dev  Downloading registry.terraform.io/terraform-aws-modules/rds/aws 6.10.0 for graasp-dev-postgres_db_F1D5DB7A...
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_instance in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_instance
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_instance_role_association in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_instance_role_association
            - graasp-dev-postgres_db_F1D5DB7A.db_option_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_option_group
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_parameter_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_parameter_group
            - graasp-dev-postgres_db_F1D5DB7A.db_subnet_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_subnet_group
graasp-dev  Downloading registry.terraform.io/terraform-aws-modules/vpc/aws 5.19.0 for vpc...
graasp-dev  - vpc in .terraform/modules/vpc
graasp-dev  Initializing provider plugins...
            - Finding hashicorp/aws versions matching ">= 5.59.0, >= 5.62.0, >= 5.79.0, 5.91.0"...
graasp-dev  - Finding hashicorp/random versions matching ">= 3.1.0"...
graasp-dev  - Installing hashicorp/aws v5.91.0...
graasp-dev  - Installed hashicorp/aws v5.91.0 (signed by HashiCorp)
graasp-dev  - Installing hashicorp/random v3.7.1...
graasp-dev  - Installed hashicorp/random v3.7.1 (signed by HashiCorp)
            Terraform has created a lock file .terraform.lock.hcl to record the provider
            selections it made above. Include this file in your version control repository
            so that Terraform can guarantee to make the same selections by default when
            you run "terraform init" in the future.
graasp-dev  Terraform has been successfully initialized!

            You may now begin working with Terraform. Try running "terraform plan" to see
            any changes that are required for your infrastructure. All Terraform commands
            should now work.

            If you ever set or change modules or backend configuration for Terraform,
            rerun this command to reinitialize your working directory. If you forget, other
            commands will detect it and remind you to do so if necessary.
graasp-dev  - Fetching hashicorp/aws 5.91.0 for linux_amd64...
graasp-dev  - Retrieved hashicorp/aws 5.91.0 for linux_amd64 (signed by HashiCorp)
graasp-dev  - Fetching hashicorp/random 3.7.1 for linux_amd64...
graasp-dev  - Retrieved hashicorp/random 3.7.1 for linux_amd64 (signed by HashiCorp)
            - Obtained hashicorp/aws checksums for linux_amd64; All checksums for this platform were already tracked in the lock file
            - Obtained hashicorp/random checksums for linux_amd64; All checksums for this platform were already tracked in the lock file
graasp-dev  Success! Terraform has validated the lock file and found no need for changes.
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.random_id.snapshot_identifier[0]: Refreshing state... [id=SHBibw]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert): Reading...
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert): Read complete after 0s [id=arn:aws:acm:us-east-1:299720865162:certificate/46cb9d1f-aea8-42de-8232-a5b83f1cc7e2]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_redis-loggroup_AFE7CB87 (graasp-dev/redis-loggroup): Refreshing state... [id=/ecs/redis]
            data.aws_ecr_repository.graasp-dev-etherpad-ecr (graasp-dev-etherpad-ecr): Reading...
            aws_s3_bucket.graasp-dev-assets_bucket_8930785E (graasp-dev-assets/bucket): Refreshing state... [id=graasp-dev-assets]
            aws_cloudwatch_log_group.graasp-dev_umami-loggroup_544115BF (graasp-dev/umami-loggroup): Refreshing state... [id=/ecs/umami]
            aws_cloudwatch_log_group.graasp-dev_meilisearch-loggroup_F1AD2775 (graasp-dev/meilisearch-loggroup): Refreshing state... [id=/ecs/meilisearch]
            module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_partition.current: Reading...
            aws_cloudwatch_log_group.graasp-dev_graasp-loggroup_44ECC8C2 (graasp-dev/graasp-loggroup): Refreshing state... [id=/ecs/graasp]
graasp-dev  module.vpc.aws_vpc.this[0]: Refreshing state... [id=vpc-0b312f17d2e08cb6e]
            aws_s3_bucket.graasp-dev-client_bucket_076446C5 (graasp-dev-client/bucket): Refreshing state... [id=graasp-dev-client]
            aws_s3_bucket.graasp-dev-file-items_bucket_12606B30 (graasp-dev-file-items/bucket): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_partition.current: Read complete after 0s [id=aws]
graasp-dev  aws_s3_bucket.graasp-dev-h5p_bucket_B545A43B (graasp-dev-h5p/bucket): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert)-lb: Reading...
graasp-dev  aws_cloudwatch_log_group.graasp-dev_iframely-loggroup_105420D9 (graasp-dev/iframely-loggroup): Refreshing state... [id=/ecs/iframely]
graasp-dev  aws_s3_bucket.graasp-dev-maintenance_bucket_46B8FAD7 (graasp-dev-maintenance/bucket): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_s3_bucket.graasp-dev-apps_bucket_F4170225 (graasp-dev-apps/bucket): Refreshing state... [id=graasp-dev-apps]
graasp-dev  data.aws_ecr_repository.graasp-dev-etherpad-ecr (graasp-dev-etherpad-ecr): Read complete after 1s [id=graasp/etherpad]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_graasp-library-loggroup_FD22B99E (graasp-dev/graasp-library-loggroup): Refreshing state... [id=/ecs/graasp-library]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_etherpad-loggroup_200385B4 (graasp-dev/etherpad-loggroup): Refreshing state... [id=/ecs/etherpad]
graasp-dev  data.aws_ecr_repository.graasp-dev-explore-ecr (graasp-dev-explore-ecr): Reading...
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_iam_policy_document.enhanced_monitoring: Reading...
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_iam_policy_document.enhanced_monitoring: Read complete after 0s [id=76086537]
graasp-dev  aws_ecs_cluster.cluster (cluster): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:cluster/graasp-dev]
graasp-dev  data.aws_ecr_repository.graasp-dev-explore-ecr (graasp-dev-explore-ecr): Read complete after 0s [id=graasp/explore]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_parameter_group.aws_db_parameter_group.this[0]: Refreshing state... [id=graasp-postgres15-20231009123434812500000001]
graasp-dev  aws_iam_role.graasp-dev_ecs-execution-role_A4D135E8 (graasp-dev/ecs-execution-role): Refreshing state... [id=graasp-dev-ecs-execution-role]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert)-lb: Read complete after 1s [id=arn:aws:acm:eu-central-1:299720865162:certificate/af9d071d-3aa1-4583-905d-ec1efd5515d3]
graasp-dev  aws_service_discovery_http_namespace.graasp-dev_namespace_B6F7BA2C (graasp-dev/namespace): Refreshing state... [id=ns-us3rov3ukfoth5ox]
graasp-dev  data.aws_ecr_repository.graasp-dev-ecr (graasp-dev-ecr): Reading...
graasp-dev  aws_rds_instance_state.graasp-dev-postgres_graasp-dev-instance-state_D3812C30 (graasp-dev-postgres/graasp-dev-instance-state): Refreshing state...
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_iam_role.enhanced_monitoring[0]: Refreshing state... [id=graasp-dev-rds-monitoring-role]
graasp-dev  module.vpc.aws_default_route_table.default[0]: Refreshing state... [id=rtb-0de0872c207e953b3]
graasp-dev  module.vpc.aws_default_network_acl.this[0]: Refreshing state... [id=acl-06ce6a79ac9494ac3]
graasp-dev  module.vpc.aws_default_security_group.this[0]: Refreshing state... [id=sg-0fd249cba5ab4c742]
graasp-dev  aws_ecs_task_definition.graasp-dev_iframely_4C5E8E3D (graasp-dev/iframely): Refreshing state... [id=iframely]
graasp-dev  aws_iam_role_policy.graasp-dev_graasp-dev-ecs-execution-role-policies_D65DB830 (graasp-dev/graasp-dev-ecs-execution-role-policies): Refreshing state... [id=graasp-dev-ecs-execution-role:allow-ecr-pull]
graasp-dev  aws_ecs_task_definition.graasp-dev_graasp-library_B38B90C0 (graasp-dev/graasp-library): Refreshing state... [id=graasp-library]
graasp-dev  aws_ecs_task_definition.graasp-dev_redis_E9CE963D (graasp-dev/redis): Refreshing state... [id=redis]
graasp-dev  aws_ecs_task_definition.graasp-dev_meilisearch_38A3D0B6 (graasp-dev/meilisearch): Refreshing state... [id=meilisearch]
graasp-dev  data.aws_ecr_repository.graasp-dev-ecr (graasp-dev-ecr): Read complete after 1s [id=graasp]
graasp-dev  aws_ecs_task_definition.graasp-dev_graasp_54E40EB5 (graasp-dev/graasp): Refreshing state... [id=graasp]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-client_s3-website-configuration_A6D7BA4D (graasp-dev-client/s3-website-configuration): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-client_s3-block-public-access_A8DD5DF0 (graasp-dev-client/s3-block-public-access): Refreshing state... [id=graasp-dev-client]
graasp-dev  data.aws_iam_policy_document.graasp-dev-client_allow_public_access_BCCA7882 (graasp-dev-client/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-client_allow_public_access_BCCA7882 (graasp-dev-client/allow_public_access): Read complete after 0s [id=3742575001]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-client_s3-bucket-ownership_7FA8E504 (graasp-dev-client/s3-bucket-ownership): Refreshing state... [id=graasp-dev-client]
graasp-dev  data.aws_iam_policy_document.graasp-dev-h5p_allow_public_access_04C01E9A (graasp-dev-h5p/allow_public_access): Reading...
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-h5p_s3-block-public-access_2D472005 (graasp-dev-h5p/s3-block-public-access): Refreshing state... [id=graasp-dev-h5p]
            data.aws_iam_policy_document.graasp-dev-h5p_allow_public_access_04C01E9A (graasp-dev-h5p/allow_public_access): Read complete after 0s [id=1897348743]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-h5p_s3-bucket-ownership_418B795B (graasp-dev-h5p/s3-bucket-ownership): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-h5p_s3-website-configuration_5FB93898 (graasp-dev-h5p/s3-website-configuration): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_cors_configuration.graasp-dev-h5p_s3-cors-config_EC778FA8 (graasp-dev-h5p/s3-cors-config): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_security_group.graasp-dev-gatekeeper_graasp-dev-gatekeeper-security-group_92E8E7CC (graasp-dev-gatekeeper/graasp-dev-gatekeeper-security-group): Refreshing state... [id=sg-036836715bbca8a32]
graasp-dev  aws_security_group.graasp-dev-umami-security-group (graasp-dev-umami-security-group): Refreshing state... [id=sg-03d98ff7f2eb798fa]
graasp-dev  aws_security_group.graasp-dev-library-security-group (graasp-dev-library-security-group): Refreshing state... [id=sg-07bae39853af00427]
graasp-dev  aws_security_group.graasp-dev-postgres_graasp-dev-db-security-group_6A637215 (graasp-dev-postgres/graasp-dev-db-security-group): Refreshing state... [id=sg-009f5a0d494264c65]
graasp-dev  aws_security_group.graasp-dev-lb-security-group (graasp-dev-lb-security-group): Refreshing state... [id=sg-0f07f40e7da03b966]
graasp-dev  aws_security_group.graasp-dev-iframely-security-group (graasp-dev-iframely-security-group): Refreshing state... [id=sg-0ca4813c62c9d17a3]
graasp-dev  aws_security_group.graasp-dev-etherpad-security-group (graasp-dev-etherpad-security-group): Refreshing state... [id=sg-0ffb7f564703627af]
graasp-dev  aws_security_group.graasp-dev-redis-security-group (graasp-dev-redis-security-group): Refreshing state... [id=sg-0a7ebce0ecabcd895]
graasp-dev  aws_security_group.graasp-dev-meilisearch-security-group (graasp-dev-meilisearch-security-group): Refreshing state... [id=sg-0b3ce2813b8775eba]
graasp-dev  aws_security_group.graasp-dev-backend-security-group (graasp-dev-backend-security-group): Refreshing state... [id=sg-014f1fd084973fd06]
graasp-dev  module.vpc.aws_subnet.public[0]: Refreshing state... [id=subnet-0596b784e2da6e5c6]
graasp-dev  module.vpc.aws_subnet.public[1]: Refreshing state... [id=subnet-055a0124ce88123b2]
graasp-dev  module.vpc.aws_subnet.public[2]: Refreshing state... [id=subnet-01f44d93731acccb7]
graasp-dev  module.vpc.aws_route_table.public[0]: Refreshing state... [id=rtb-09991359fa2a53c1c]
graasp-dev  module.vpc.aws_internet_gateway.this[0]: Refreshing state... [id=igw-01955c8cc5f6d5181]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-file-items_s3-bucket-ownership_9BB45BB8 (graasp-dev-file-items/s3-bucket-ownership): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-file-items_s3-block-public-access_DD6519C0 (graasp-dev-file-items/s3-block-public-access): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_cors_configuration.graasp-dev-file-items_s3-cors-config_531774F3 (graasp-dev-file-items/s3-cors-config): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-assets_s3-website-configuration_6D1735B5 (graasp-dev-assets/s3-website-configuration): Refreshing state... [id=graasp-dev-assets]
graasp-dev  data.aws_iam_policy_document.graasp-dev-assets_allow_public_access_59580A32 (graasp-dev-assets/allow_public_access): Reading...
            data.aws_iam_policy_document.graasp-dev-assets_allow_public_access_59580A32 (graasp-dev-assets/allow_public_access): Read complete after 0s [id=661570887]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-assets_s3-block-public-access_D15DF7EF (graasp-dev-assets/s3-block-public-access): Refreshing state... [id=graasp-dev-assets]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-assets_s3-bucket-ownership_1BE1C46A (graasp-dev-assets/s3-bucket-ownership): Refreshing state... [id=graasp-dev-assets]
graasp-dev  aws_s3_bucket_policy.graasp-dev-client_s3-policy_71B89D07 (graasp-dev-client/s3-policy): Refreshing state... [id=graasp-dev-client]
            module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_iam_role_policy_attachment.enhanced_monitoring[0]: Refreshing state... [id=graasp-dev-rds-monitoring-role-20231009123438644600000004]
graasp-dev  aws_s3_bucket_policy.graasp-dev-h5p_s3-policy_9DB0282E (graasp-dev-h5p/s3-policy): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  data.aws_iam_policy_document.graasp-dev-apps_allow_public_access_9E010C09 (graasp-dev-apps/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-apps_allow_public_access_9E010C09 (graasp-dev-apps/allow_public_access): Read complete after 0s [id=4070198440]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-apps_s3-bucket-ownership_699CAAD9 (graasp-dev-apps/s3-bucket-ownership): Refreshing state... [id=graasp-dev-apps]
            aws_s3_bucket_website_configuration.graasp-dev-apps_s3-website-configuration_7E3F72D4 (graasp-dev-apps/s3-website-configuration): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-apps_s3-block-public-access_05DA1D21 (graasp-dev-apps/s3-block-public-access): Refreshing state... [id=graasp-dev-apps]
graasp-dev  data.aws_iam_policy_document.graasp-dev-maintenance_allow_public_access_8F6F3848 (graasp-dev-maintenance/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-maintenance_allow_public_access_8F6F3848 (graasp-dev-maintenance/allow_public_access): Read complete after 0s [id=2448502661]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-maintenance_s3-website-configuration_50149944 (graasp-dev-maintenance/s3-website-configuration): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-maintenance_s3-bucket-ownership_1588A828 (graasp-dev-maintenance/s3-bucket-ownership): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-maintenance_s3-block-public-access_C8FD87F8 (graasp-dev-maintenance/s3-block-public-access): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_cloudfront_distribution.graasp-dev-client-cloudfront (graasp-dev-client-cloudfront): Refreshing state... [id=E1ZTGZST8787TH]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-gatekeeper_graasp-dev-gatekeeper-allow-inbound-ssh_1B8A7117 (graasp-dev-gatekeeper/graasp-dev-gatekeeper/graasp-dev-gatekeeper-allow-inbound-ssh): Refreshing state... [id=sgr-0a51d11a638800750]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-gatekeeper_graasp-dev-gatekeeper-allow-all_B66B414C (graasp-dev-gatekeeper/graasp-dev-gatekeeper-allow-all): Refreshing state... [id=sgr-042fe01dcb13dead6]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-library-allow-all (graasp-dev-library-allow-all): Refreshing state... [id=sgr-03cd64d6e8521413a]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-umami-allow-all (graasp-dev-umami-allow-all): Refreshing state... [id=sgr-026fb931c3d9a2d33]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-allow-gatekeeper-on-postgres (graasp-dev-allow-gatekeeper-on-postgres): Refreshing state... [id=sgr-0058c3745753e6995]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-umami_425B5740 (graasp-dev-postgres/graasp-dev-db-allow-umami): Refreshing state... [id=sgr-063ed5e713152b283]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-postgres_graasp-dev-db-allow-all_0D9DEE53 (graasp-dev-postgres/graasp-dev-db-allow-all): Refreshing state... [id=sgr-0199bcbb086d17111]
graasp-dev  aws_cloudfront_distribution.graasp-dev-h5p-cloudfront (graasp-dev-h5p-cloudfront): Refreshing state... [id=E3B7XJV46O4VB4]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-iframely-allow-all (graasp-dev-iframely-allow-all): Refreshing state... [id=sgr-03b6e652d0d98bb05]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-https-ipv6_DC496355 (graasp-dev-load-balancer/allow-https-ipv6): Refreshing state... [id=sgr-023719db02da6a2a8]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-library-allow-load-balancer (graasp-dev-library-allow-load-balancer): Refreshing state... [id=sgr-04e219db366df9a40]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-http-ipv6_91743348 (graasp-dev-load-balancer/allow-http-ipv6): Refreshing state... [id=sgr-084bba5f4b221f189]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-https_0223BC47 (graasp-dev-load-balancer/allow-https): Refreshing state... [id=sgr-0d7110664852fbdc7]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-umami-allow-load-balancer (graasp-dev-umami-allow-load-balancer): Refreshing state... [id=sgr-05a39a274de98821a]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-load-balancer_graasp-dev-allow-all_001EC5EB (graasp-dev-load-balancer/graasp-dev-allow-all): Refreshing state... [id=sgr-08d13e43e33fd5b5a]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-http_0E987E63 (graasp-dev-load-balancer/allow-http): Refreshing state... [id=sgr-0dbd5cad25b6a1a87]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-etherpad-allow-load-balancer (graasp-dev-etherpad-allow-load-balancer): Refreshing state... [id=sgr-06e2e5786d9ade6fb]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-etherpad_A95D382C (graasp-dev-postgres/graasp-dev-db-allow-etherpad): Refreshing state... [id=sgr-0ded857153724c35d]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-etherpad-allow-all (graasp-dev-etherpad-allow-all): Refreshing state... [id=sgr-06470ffe6a0df1219]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-graasp-backend_E8883EF3 (graasp-dev-postgres/graasp-dev-db-allow-graasp-backend): Refreshing state... [id=sgr-007f1bb79fc0de776]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-iframely-allow-graasp-backend (graasp-dev-iframely-allow-graasp-backend): Refreshing state... [id=sgr-0d4d4b4ffd0b49a87]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-backend-allow-load-balancer (graasp-dev-backend-allow-load-balancer): Refreshing state... [id=sgr-0f1f4d5674dff4695]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-backend-allow-all (graasp-dev-backend-allow-all): Refreshing state... [id=sgr-0f70a895b80fd309e]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-redis-allow-graasp-backend (graasp-dev-redis-allow-graasp-backend): Refreshing state... [id=sgr-08d29290d8638ef8f]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-redis-allow-all (graasp-dev-redis-allow-all): Refreshing state... [id=sgr-03673e2379ee73580]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-meilisearch-allow-all (graasp-dev-meilisearch-allow-all): Refreshing state... [id=sgr-0418d7a3309cc5d5e]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-meilisearch-allow-graasp-backend (graasp-dev-meilisearch-allow-graasp-backend): Refreshing state... [id=sgr-0d502c3895f05dc26]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-allow-gatekeeper-on-meilisearch (graasp-dev-allow-gatekeeper-on-meilisearch): Refreshing state... [id=sgr-0959c46cb81a9c68e]
graasp-dev  aws_s3_bucket_policy.graasp-dev-assets_s3-policy_B5DD3F7D (graasp-dev-assets/s3-policy): Refreshing state... [id=graasp-dev-assets]
graasp-dev  aws_s3_bucket_policy.graasp-dev-apps_s3-policy_708B7B00 (graasp-dev-apps/s3-policy): Refreshing state... [id=graasp-dev-apps]
graasp-dev  module.vpc.aws_route.public_internet_gateway[0]: Refreshing state... [id=r-rtb-09991359fa2a53c1c1080289494]
graasp-dev  module.vpc.aws_route_table_association.public[0]: Refreshing state... [id=rtbassoc-0ba3fbc906b89068b]
graasp-dev  module.vpc.aws_route_table_association.public[2]: Refreshing state... [id=rtbassoc-0953114662597b70b]
graasp-dev  module.vpc.aws_route_table_association.public[1]: Refreshing state... [id=rtbassoc-065b7c3d10a5adb5f]
graasp-dev  aws_s3_bucket_policy.graasp-dev-maintenance_s3-policy_DA8583B1 (graasp-dev-maintenance/s3-policy): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_cloudfront_distribution.graasp-dev-assets-cloudfront (graasp-dev-assets-cloudfront): Refreshing state... [id=E1TTPMNH8QPMJP]
graasp-dev  aws_cloudfront_distribution.graasp-dev-maintenance-cloudfront (graasp-dev-maintenance-cloudfront): Refreshing state... [id=EGBVR5KHBTMNX]
graasp-dev  aws_cloudfront_distribution.graasp-dev-apps-cloudfront (graasp-dev-apps-cloudfront): Refreshing state... [id=E354WPS1CZ652D]
            aws_ecs_service.graasp-dev_redis-service_1DBE7C83 (graasp-dev/redis-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/redis]
graasp-dev  aws_lb.graasp-dev-load-balancer_lb_9A06B77C (graasp-dev-load-balancer/lb): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:loadbalancer/app/graasp-dev/2d9df8ffedc22275]
graasp-dev  aws_ecs_service.graasp-dev_iframely-service_8F7B5C1F (graasp-dev/iframely-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/iframely]
graasp-dev  aws_instance.graasp-dev-gatekeeper_graasp-dev-gatekeeper-ec2_A55DD5DA (graasp-dev-gatekeeper/graasp-dev-gatekeeper/graasp-dev-gatekeeper-ec2): Refreshing state... [id=i-0fd04870b794c75b3]
graasp-dev  aws_ecs_service.graasp-dev_meilisearch-service_3A736F80 (graasp-dev/meilisearch-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/meilisearch]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_subnet_group.aws_db_subnet_group.this[0]: Refreshing state... [id=graasp-dev-20231009123833192500000015]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_db_instance.this[0]: Refreshing state... [id=db-3CNANXEZMD2SUYDRIDBIHT6F2M]
graasp-dev  aws_ecs_task_definition.graasp-dev_etherpad_D664EB2D (graasp-dev/etherpad): Refreshing state... [id=etherpad]
graasp-dev  aws_ecs_task_definition.graasp-dev_umami_88984772 (graasp-dev/umami): Refreshing state... [id=umami]
graasp-dev  aws_lb_listener.graasp-dev-load-balancer_lb-listener-http-redirect_309E2C64 (graasp-dev-load-balancer/lb-listener-http-redirect): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/9cc00852f3f90d6a]
graasp-dev  aws_lb_listener.graasp-dev-load-balancer_lb-listener-https_E069C227 (graasp-dev-load-balancer/lb-listener-https): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4]
graasp-dev  aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-account_E8E1BF85 (graasp-dev-load-balancer/graasp-dev-account): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/1aad7a9c99bb4c53]
            aws_lb_target_group.graasp-dev_etherpad-target-group_94F8091C (graasp-dev/etherpad-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/etherpad/69fe8f88d1211cfe]
            aws_lb_target_group.graasp-dev_graasp-library-target-group_47035354 (graasp-dev/graasp-library-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/graasp-library/1f502836d98e92e0]
graasp-dev  aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-shortener_2A4B0FBC (graasp-dev-load-balancer/graasp-dev-shortener): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/a914041c4217dfc0]
            aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-builder_4D040462 (graasp-dev-load-balancer/graasp-dev-builder): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/b38038ecb1aca564]
            aws_lb_target_group.graasp-dev_umami-target-group_02AC6A93 (graasp-dev/umami-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/umami/eb6d060fc17e2e52]
            aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-auth_E1CC888F (graasp-dev-load-balancer/graasp-dev-auth): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/b0c91bbe3f758140]
graasp-dev  aws_lb_target_group.graasp-dev_graasp-target-group_7E05BC31 (graasp-dev/graasp-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/graasp/75b2cf400edd1909]
            aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-player_6D261351 (graasp-dev-load-balancer/graasp-dev-player): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/d50d3f410605b370]
graasp-dev  aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-analytics_431AD7A3 (graasp-dev-load-balancer/graasp-dev-analytics): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/9c8b6257b90b5f6e]
graasp-dev  aws_lb_listener_rule.graasp-dev_graasp-library-rule_AC381C09 (graasp-dev/graasp-library-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/47b6511ce97bab5a]
graasp-dev  aws_ecs_service.graasp-dev_graasp-library-service_35621E15 (graasp-dev/graasp-library-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp-library]
graasp-dev  aws_lb_listener_rule.graasp-dev_graasp-rule_8589AD50 (graasp-dev/graasp-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/5bba1be112990e2f]
graasp-dev  aws_ecs_service.graasp-dev_graasp-service_BD538BD2 (graasp-dev/graasp-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp]
graasp-dev  aws_lb_listener_rule.graasp-dev_etherpad-rule_74CA3679 (graasp-dev/etherpad-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/d95b5f32dc661338]
            aws_ecs_service.graasp-dev_etherpad-service_366B5CFC (graasp-dev/etherpad-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/etherpad]
graasp-dev  aws_lb_listener_rule.graasp-dev_umami-rule_139819E3 (graasp-dev/umami-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/185c679fb423b689]
graasp-dev  aws_ecs_service.graasp-dev_umami-service_6A875906 (graasp-dev/umami-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/umami]
graasp-dev  aws_appautoscaling_target.graasp-dev_graasp-library-service-autoscaling-target_5E0ABD4D (graasp-dev/graasp-library-service-autoscaling-target): Refreshing state... [id=service/graasp-dev/graasp-library]
graasp-dev  aws_appautoscaling_target.graasp-dev_graasp-service-autoscaling-target_517CCDCE (graasp-dev/graasp-service-autoscaling-target): Refreshing state... [id=service/graasp-dev/graasp]
graasp-dev  aws_appautoscaling_policy.graasp-dev_graasp-library-service-autoscaling-policy_E718A88F (graasp-dev/graasp-library-service-autoscaling-policy): Refreshing state... [id=graasp-library]
graasp-dev  aws_appautoscaling_policy.graasp-dev_graasp-service-autoscaling-policy_70C429DA (graasp-dev/graasp-service-autoscaling-policy): Refreshing state... [id=graasp]
graasp-dev  Terraform used the selected providers to generate the following execution
            plan. Resource actions are indicated with the following symbols:
              ~ update in-place

            Terraform will perform the following actions:
graasp-dev  # aws_lb_listener.graasp-dev-load-balancer_lb-listener-https_E069C227 (graasp-dev-load-balancer/lb-listener-https) will be updated in-place
              ~ resource "aws_lb_listener" "graasp-dev-load-balancer_lb-listener-https_E069C227" {
                    id                                                                    = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                    tags                                                                  = {}
                    # (26 unchanged attributes hidden)

                  ~ default_action {
                      ~ type             = "fixed-response" -> "redirect"
                        # (2 unchanged attributes hidden)

                      + redirect {
                          + host        = "maintenance.dev.graasp.org"
                          + path        = "/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_302"
                        }

                        # (1 unchanged block hidden)
                    }

                    # (1 unchanged block hidden)
                }

            Plan: 0 to add, 1 to change, 0 to destroy.

            ─────────────────────────────────────────────────────────────────────────────

            Saved the plan to: plan

            To perform exactly these actions, run the following command to apply:
                terraform apply "plan"


```

</details>
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-25T12:57:19Z
body: <!-- terraform cdk action for options with hash 0d855fa9b0c377767ce986776c53ddef -->
### ✅ Successfully planned Terraform CDK Stack 'graasp-dev'



<details><summary>Show Plan</summary>

```shell
graasp-dev  Initializing the backend...
graasp-dev  Successfully configured the backend "s3"! Terraform will automatically
            use this backend unless the backend configuration changes.
graasp-dev  Initializing modules...
graasp-dev  Downloading registry.terraform.io/terraform-aws-modules/rds/aws 6.10.0 for graasp-dev-postgres_db_F1D5DB7A...
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_instance in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_instance
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_instance_role_association in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_instance_role_association
            - graasp-dev-postgres_db_F1D5DB7A.db_option_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_option_group
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_parameter_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_parameter_group
            - graasp-dev-postgres_db_F1D5DB7A.db_subnet_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_subnet_group
graasp-dev  Downloading registry.terraform.io/terraform-aws-modules/vpc/aws 5.19.0 for vpc...
graasp-dev
graasp-dev  - vpc in .terraform/modules/vpc
graasp-dev  Initializing provider plugins...
graasp-dev  - Finding hashicorp/aws versions matching ">= 5.59.0, >= 5.62.0, >= 5.79.0, 5.91.0"...
graasp-dev  - Finding hashicorp/random versions matching ">= 3.1.0"...
graasp-dev  - Installing hashicorp/aws v5.91.0...
graasp-dev  - Installed hashicorp/aws v5.91.0 (signed by HashiCorp)
graasp-dev  - Installing hashicorp/random v3.7.1...
graasp-dev  - Installed hashicorp/random v3.7.1 (signed by HashiCorp)
            Terraform has created a lock file .terraform.lock.hcl to record the provider
            selections it made above. Include this file in your version control repository
            so that Terraform can guarantee to make the same selections by default when
            you run "terraform init" in the future.
graasp-dev  Terraform has been successfully initialized!

            You may now begin working with Terraform. Try running "terraform plan" to see
            any changes that are required for your infrastructure. All Terraform commands
            should now work.

            If you ever set or change modules or backend configuration for Terraform,
            rerun this command to reinitialize your working directory. If you forget, other
            commands will detect it and remind you to do so if necessary.
graasp-dev  - Fetching hashicorp/aws 5.91.0 for linux_amd64...
graasp-dev  - Retrieved hashicorp/aws 5.91.0 for linux_amd64 (signed by HashiCorp)
graasp-dev  - Fetching hashicorp/random 3.7.1 for linux_amd64...
graasp-dev  - Retrieved hashicorp/random 3.7.1 for linux_amd64 (signed by HashiCorp)
            - Obtained hashicorp/aws checksums for linux_amd64; All checksums for this platform were already tracked in the lock file
            - Obtained hashicorp/random checksums for linux_amd64; All checksums for this platform were already tracked in the lock file
graasp-dev  Success! Terraform has validated the lock file and found no need for changes.
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.random_id.snapshot_identifier[0]: Refreshing state... [id=SHBibw]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert): Reading...
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert): Read complete after 1s [id=arn:aws:acm:us-east-1:299720865162:certificate/46cb9d1f-aea8-42de-8232-a5b83f1cc7e2]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_umami-loggroup_544115BF (graasp-dev/umami-loggroup): Refreshing state... [id=/ecs/umami]
            data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert)-lb: Reading...
            module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_iam_policy_document.enhanced_monitoring: Reading...
            data.aws_ecr_repository.graasp-dev-etherpad-ecr (graasp-dev-etherpad-ecr): Reading...
            module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_partition.current: Reading...
            aws_cloudwatch_log_group.graasp-dev_meilisearch-loggroup_F1AD2775 (graasp-dev/meilisearch-loggroup): Refreshing state... [id=/ecs/meilisearch]
graasp-dev  aws_s3_bucket.graasp-dev-client_bucket_076446C5 (graasp-dev-client/bucket): Refreshing state... [id=graasp-dev-client]
            aws_s3_bucket.graasp-dev-apps_bucket_F4170225 (graasp-dev-apps/bucket): Refreshing state... [id=graasp-dev-apps]
            aws_s3_bucket.graasp-dev-h5p_bucket_B545A43B (graasp-dev-h5p/bucket): Refreshing state... [id=graasp-dev-h5p]
            module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_iam_policy_document.enhanced_monitoring: Read complete after 0s [id=76086537]
            aws_cloudfront_function.maintenance-check-function: Refreshing state... [id=maintenance-check]
            module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_partition.current: Read complete after 0s [id=aws]
            data.aws_ecr_repository.graasp-dev-ecr (graasp-dev-ecr): Reading...
graasp-dev  aws_s3_bucket.graasp-dev-assets_bucket_8930785E (graasp-dev-assets/bucket): Refreshing state... [id=graasp-dev-assets]
graasp-dev  module.vpc.aws_vpc.this[0]: Refreshing state... [id=vpc-0b312f17d2e08cb6e]
graasp-dev  data.aws_ecr_repository.graasp-dev-explore-ecr (graasp-dev-explore-ecr): Reading...
graasp-dev  aws_service_discovery_http_namespace.graasp-dev_namespace_B6F7BA2C (graasp-dev/namespace): Refreshing state... [id=ns-us3rov3ukfoth5ox]
graasp-dev  data.aws_ecr_repository.graasp-dev-etherpad-ecr (graasp-dev-etherpad-ecr): Read complete after 2s [id=graasp/etherpad]
graasp-dev  aws_iam_role.graasp-dev_ecs-execution-role_A4D135E8 (graasp-dev/ecs-execution-role): Refreshing state... [id=graasp-dev-ecs-execution-role]
graasp-dev  data.aws_ecr_repository.graasp-dev-ecr (graasp-dev-ecr): Read complete after 2s [id=graasp]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_graasp-library-loggroup_FD22B99E (graasp-dev/graasp-library-loggroup): Refreshing state... [id=/ecs/graasp-library]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert)-lb: Read complete after 2s [id=arn:aws:acm:eu-central-1:299720865162:certificate/af9d071d-3aa1-4583-905d-ec1efd5515d3]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_etherpad-loggroup_200385B4 (graasp-dev/etherpad-loggroup): Refreshing state... [id=/ecs/etherpad]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_redis-loggroup_AFE7CB87 (graasp-dev/redis-loggroup): Refreshing state... [id=/ecs/redis]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_iframely-loggroup_105420D9 (graasp-dev/iframely-loggroup): Refreshing state... [id=/ecs/iframely]
graasp-dev  data.aws_ecr_repository.graasp-dev-explore-ecr (graasp-dev-explore-ecr): Read complete after 1s [id=graasp/explore]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_parameter_group.aws_db_parameter_group.this[0]: Refreshing state... [id=graasp-postgres15-20231009123434812500000001]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_graasp-loggroup_44ECC8C2 (graasp-dev/graasp-loggroup): Refreshing state... [id=/ecs/graasp]
graasp-dev  aws_rds_instance_state.graasp-dev-postgres_graasp-dev-instance-state_D3812C30 (graasp-dev-postgres/graasp-dev-instance-state): Refreshing state...
graasp-dev  aws_s3_bucket.graasp-dev-maintenance_bucket_46B8FAD7 (graasp-dev-maintenance/bucket): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_ecs_cluster.cluster (cluster): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:cluster/graasp-dev]
graasp-dev  aws_s3_bucket.graasp-dev-file-items_bucket_12606B30 (graasp-dev-file-items/bucket): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_iam_role.enhanced_monitoring[0]: Refreshing state... [id=graasp-dev-rds-monitoring-role]
graasp-dev  aws_iam_role_policy.graasp-dev_graasp-dev-ecs-execution-role-policies_D65DB830 (graasp-dev/graasp-dev-ecs-execution-role-policies): Refreshing state... [id=graasp-dev-ecs-execution-role:allow-ecr-pull]
graasp-dev  aws_ecs_task_definition.graasp-dev_graasp_54E40EB5 (graasp-dev/graasp): Refreshing state... [id=graasp]
graasp-dev  aws_ecs_task_definition.graasp-dev_graasp-library_B38B90C0 (graasp-dev/graasp-library): Refreshing state... [id=graasp-library]
graasp-dev  aws_ecs_task_definition.graasp-dev_meilisearch_38A3D0B6 (graasp-dev/meilisearch): Refreshing state... [id=meilisearch]
graasp-dev  aws_ecs_task_definition.graasp-dev_iframely_4C5E8E3D (graasp-dev/iframely): Refreshing state... [id=iframely]
graasp-dev  aws_ecs_task_definition.graasp-dev_redis_E9CE963D (graasp-dev/redis): Refreshing state... [id=redis]
graasp-dev  data.aws_iam_policy_document.graasp-dev-assets_allow_public_access_59580A32 (graasp-dev-assets/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-assets_allow_public_access_59580A32 (graasp-dev-assets/allow_public_access): Read complete after 0s [id=661570887]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-assets_s3-website-configuration_6D1735B5 (graasp-dev-assets/s3-website-configuration): Refreshing state... [id=graasp-dev-assets]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-assets_s3-bucket-ownership_1BE1C46A (graasp-dev-assets/s3-bucket-ownership): Refreshing state... [id=graasp-dev-assets]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-assets_s3-block-public-access_D15DF7EF (graasp-dev-assets/s3-block-public-access): Refreshing state... [id=graasp-dev-assets]
graasp-dev  data.aws_iam_policy_document.graasp-dev-client_allow_public_access_BCCA7882 (graasp-dev-client/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-client_allow_public_access_BCCA7882 (graasp-dev-client/allow_public_access): Read complete after 0s [id=3742575001]
            aws_s3_bucket_public_access_block.graasp-dev-client_s3-block-public-access_A8DD5DF0 (graasp-dev-client/s3-block-public-access): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-client_s3-bucket-ownership_7FA8E504 (graasp-dev-client/s3-bucket-ownership): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-client_s3-website-configuration_A6D7BA4D (graasp-dev-client/s3-website-configuration): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-h5p_s3-website-configuration_5FB93898 (graasp-dev-h5p/s3-website-configuration): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  data.aws_iam_policy_document.graasp-dev-h5p_allow_public_access_04C01E9A (graasp-dev-h5p/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-h5p_allow_public_access_04C01E9A (graasp-dev-h5p/allow_public_access): Read complete after 0s [id=1897348743]
            aws_s3_bucket_cors_configuration.graasp-dev-h5p_s3-cors-config_EC778FA8 (graasp-dev-h5p/s3-cors-config): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-h5p_s3-bucket-ownership_418B795B (graasp-dev-h5p/s3-bucket-ownership): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-h5p_s3-block-public-access_2D472005 (graasp-dev-h5p/s3-block-public-access): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  data.aws_iam_policy_document.graasp-dev-apps_allow_public_access_9E010C09 (graasp-dev-apps/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-apps_allow_public_access_9E010C09 (graasp-dev-apps/allow_public_access): Read complete after 0s [id=4070198440]
            aws_s3_bucket_website_configuration.graasp-dev-apps_s3-website-configuration_7E3F72D4 (graasp-dev-apps/s3-website-configuration): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-apps_s3-block-public-access_05DA1D21 (graasp-dev-apps/s3-block-public-access): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-apps_s3-bucket-ownership_699CAAD9 (graasp-dev-apps/s3-bucket-ownership): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_s3_bucket_policy.graasp-dev-assets_s3-policy_B5DD3F7D (graasp-dev-assets/s3-policy): Refreshing state... [id=graasp-dev-assets]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_iam_role_policy_attachment.enhanced_monitoring[0]: Refreshing state... [id=graasp-dev-rds-monitoring-role-20231009123438644600000004]
graasp-dev  aws_s3_bucket_policy.graasp-dev-client_s3-policy_71B89D07 (graasp-dev-client/s3-policy): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_policy.graasp-dev-h5p_s3-policy_9DB0282E (graasp-dev-h5p/s3-policy): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_policy.graasp-dev-apps_s3-policy_708B7B00 (graasp-dev-apps/s3-policy): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_cloudfront_distribution.graasp-dev-assets-cloudfront (graasp-dev-assets-cloudfront): Refreshing state... [id=E1TTPMNH8QPMJP]
graasp-dev  module.vpc.aws_default_route_table.default[0]: Refreshing state... [id=rtb-0de0872c207e953b3]
graasp-dev  module.vpc.aws_default_network_acl.this[0]: Refreshing state... [id=acl-06ce6a79ac9494ac3]
graasp-dev  module.vpc.aws_default_security_group.this[0]: Refreshing state... [id=sg-0fd249cba5ab4c742]
graasp-dev  aws_cloudfront_distribution.graasp-dev-client-cloudfront (graasp-dev-client-cloudfront): Refreshing state... [id=E1ZTGZST8787TH]
graasp-dev  module.vpc.aws_internet_gateway.this[0]: Refreshing state... [id=igw-01955c8cc5f6d5181]
graasp-dev  aws_security_group.graasp-dev-iframely-security-group (graasp-dev-iframely-security-group): Refreshing state... [id=sg-0ca4813c62c9d17a3]
graasp-dev  module.vpc.aws_subnet.public[2]: Refreshing state... [id=subnet-01f44d93731acccb7]
graasp-dev  module.vpc.aws_subnet.public[0]: Refreshing state... [id=subnet-0596b784e2da6e5c6]
graasp-dev  module.vpc.aws_subnet.public[1]: Refreshing state... [id=subnet-055a0124ce88123b2]
graasp-dev  module.vpc.aws_route_table.public[0]: Refreshing state... [id=rtb-09991359fa2a53c1c]
graasp-dev  aws_security_group.graasp-dev-redis-security-group (graasp-dev-redis-security-group): Refreshing state... [id=sg-0a7ebce0ecabcd895]
graasp-dev  aws_security_group.graasp-dev-etherpad-security-group (graasp-dev-etherpad-security-group): Refreshing state... [id=sg-0ffb7f564703627af]
graasp-dev  aws_security_group.graasp-dev-backend-security-group (graasp-dev-backend-security-group): Refreshing state... [id=sg-014f1fd084973fd06]
graasp-dev  aws_security_group.graasp-dev-postgres_graasp-dev-db-security-group_6A637215 (graasp-dev-postgres/graasp-dev-db-security-group): Refreshing state... [id=sg-009f5a0d494264c65]
graasp-dev  aws_security_group.graasp-dev-meilisearch-security-group (graasp-dev-meilisearch-security-group): Refreshing state... [id=sg-0b3ce2813b8775eba]
graasp-dev  aws_security_group.graasp-dev-umami-security-group (graasp-dev-umami-security-group): Refreshing state... [id=sg-03d98ff7f2eb798fa]
graasp-dev  aws_security_group.graasp-dev-lb-security-group (graasp-dev-lb-security-group): Refreshing state... [id=sg-0f07f40e7da03b966]
graasp-dev  aws_security_group.graasp-dev-gatekeeper_graasp-dev-gatekeeper-security-group_92E8E7CC (graasp-dev-gatekeeper/graasp-dev-gatekeeper-security-group): Refreshing state... [id=sg-036836715bbca8a32]
graasp-dev  aws_security_group.graasp-dev-library-security-group (graasp-dev-library-security-group): Refreshing state... [id=sg-07bae39853af00427]
graasp-dev  aws_cloudfront_distribution.graasp-dev-h5p-cloudfront (graasp-dev-h5p-cloudfront): Refreshing state... [id=E3B7XJV46O4VB4]
graasp-dev  aws_cloudfront_distribution.graasp-dev-apps-cloudfront (graasp-dev-apps-cloudfront): Refreshing state... [id=E354WPS1CZ652D]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-maintenance_s3-bucket-ownership_1588A828 (graasp-dev-maintenance/s3-bucket-ownership): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-maintenance_s3-website-configuration_50149944 (graasp-dev-maintenance/s3-website-configuration): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  data.aws_iam_policy_document.graasp-dev-maintenance_allow_public_access_8F6F3848 (graasp-dev-maintenance/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-maintenance_allow_public_access_8F6F3848 (graasp-dev-maintenance/allow_public_access): Read complete after 0s [id=2448502661]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-maintenance_s3-block-public-access_C8FD87F8 (graasp-dev-maintenance/s3-block-public-access): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-iframely-allow-all (graasp-dev-iframely-allow-all): Refreshing state... [id=sgr-03b6e652d0d98bb05]
graasp-dev  module.vpc.aws_route.public_internet_gateway[0]: Refreshing state... [id=r-rtb-09991359fa2a53c1c1080289494]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-redis-allow-all (graasp-dev-redis-allow-all): Refreshing state... [id=sgr-03673e2379ee73580]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-file-items_s3-bucket-ownership_9BB45BB8 (graasp-dev-file-items/s3-bucket-ownership): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-file-items_s3-block-public-access_DD6519C0 (graasp-dev-file-items/s3-block-public-access): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_cors_configuration.graasp-dev-file-items_s3-cors-config_531774F3 (graasp-dev-file-items/s3-cors-config): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-etherpad-allow-all (graasp-dev-etherpad-allow-all): Refreshing state... [id=sgr-06470ffe6a0df1219]
            aws_vpc_security_group_egress_rule.graasp-dev-postgres_graasp-dev-db-allow-all_0D9DEE53 (graasp-dev-postgres/graasp-dev-db-allow-all): Refreshing state... [id=sgr-0199bcbb086d17111]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-etherpad_A95D382C (graasp-dev-postgres/graasp-dev-db-allow-etherpad): Refreshing state... [id=sgr-0ded857153724c35d]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-meilisearch-allow-all (graasp-dev-meilisearch-allow-all): Refreshing state... [id=sgr-0418d7a3309cc5d5e]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-umami_425B5740 (graasp-dev-postgres/graasp-dev-db-allow-umami): Refreshing state... [id=sgr-063ed5e713152b283]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-umami-allow-all (graasp-dev-umami-allow-all): Refreshing state... [id=sgr-026fb931c3d9a2d33]
graasp-dev  aws_s3_bucket_policy.graasp-dev-maintenance_s3-policy_DA8583B1 (graasp-dev-maintenance/s3-policy): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-umami-allow-load-balancer (graasp-dev-umami-allow-load-balancer): Refreshing state... [id=sgr-05a39a274de98821a]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-etherpad-allow-load-balancer (graasp-dev-etherpad-allow-load-balancer): Refreshing state... [id=sgr-06e2e5786d9ade6fb]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-http-ipv6_91743348 (graasp-dev-load-balancer/allow-http-ipv6): Refreshing state... [id=sgr-084bba5f4b221f189]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-http_0E987E63 (graasp-dev-load-balancer/allow-http): Refreshing state... [id=sgr-0dbd5cad25b6a1a87]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-https-ipv6_DC496355 (graasp-dev-load-balancer/allow-https-ipv6): Refreshing state... [id=sgr-023719db02da6a2a8]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-https_0223BC47 (graasp-dev-load-balancer/allow-https): Refreshing state... [id=sgr-0d7110664852fbdc7]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-load-balancer_graasp-dev-allow-all_001EC5EB (graasp-dev-load-balancer/graasp-dev-allow-all): Refreshing state... [id=sgr-08d13e43e33fd5b5a]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-gatekeeper_graasp-dev-gatekeeper-allow-all_B66B414C (graasp-dev-gatekeeper/graasp-dev-gatekeeper-allow-all): Refreshing state... [id=sgr-042fe01dcb13dead6]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-allow-gatekeeper-on-postgres (graasp-dev-allow-gatekeeper-on-postgres): Refreshing state... [id=sgr-0058c3745753e6995]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-allow-gatekeeper-on-meilisearch (graasp-dev-allow-gatekeeper-on-meilisearch): Refreshing state... [id=sgr-0959c46cb81a9c68e]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-gatekeeper_graasp-dev-gatekeeper-allow-inbound-ssh_1B8A7117 (graasp-dev-gatekeeper/graasp-dev-gatekeeper/graasp-dev-gatekeeper-allow-inbound-ssh): Refreshing state... [id=sgr-0a51d11a638800750]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-library-allow-all (graasp-dev-library-allow-all): Refreshing state... [id=sgr-03cd64d6e8521413a]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-library-allow-load-balancer (graasp-dev-library-allow-load-balancer): Refreshing state... [id=sgr-04e219db366df9a40]
graasp-dev  module.vpc.aws_route_table_association.public[1]: Refreshing state... [id=rtbassoc-065b7c3d10a5adb5f]
graasp-dev  module.vpc.aws_route_table_association.public[2]: Refreshing state... [id=rtbassoc-0953114662597b70b]
graasp-dev  module.vpc.aws_route_table_association.public[0]: Refreshing state... [id=rtbassoc-0ba3fbc906b89068b]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-graasp-backend_E8883EF3 (graasp-dev-postgres/graasp-dev-db-allow-graasp-backend): Refreshing state... [id=sgr-007f1bb79fc0de776]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-redis-allow-graasp-backend (graasp-dev-redis-allow-graasp-backend): Refreshing state... [id=sgr-08d29290d8638ef8f]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-backend-allow-all (graasp-dev-backend-allow-all): Refreshing state... [id=sgr-0f70a895b80fd309e]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-meilisearch-allow-graasp-backend (graasp-dev-meilisearch-allow-graasp-backend): Refreshing state... [id=sgr-0d502c3895f05dc26]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-backend-allow-load-balancer (graasp-dev-backend-allow-load-balancer): Refreshing state... [id=sgr-0f1f4d5674dff4695]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-iframely-allow-graasp-backend (graasp-dev-iframely-allow-graasp-backend): Refreshing state... [id=sgr-0d4d4b4ffd0b49a87]
graasp-dev  aws_cloudfront_distribution.graasp-dev-maintenance-cloudfront (graasp-dev-maintenance-cloudfront): Refreshing state... [id=EGBVR5KHBTMNX]
graasp-dev  aws_ecs_service.graasp-dev_redis-service_1DBE7C83 (graasp-dev/redis-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/redis]
graasp-dev  aws_lb.graasp-dev-load-balancer_lb_9A06B77C (graasp-dev-load-balancer/lb): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:loadbalancer/app/graasp-dev/2d9df8ffedc22275]
graasp-dev  aws_ecs_service.graasp-dev_iframely-service_8F7B5C1F (graasp-dev/iframely-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/iframely]
graasp-dev  aws_ecs_service.graasp-dev_meilisearch-service_3A736F80 (graasp-dev/meilisearch-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/meilisearch]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_subnet_group.aws_db_subnet_group.this[0]: Refreshing state... [id=graasp-dev-20231009123833192500000015]
graasp-dev  aws_instance.graasp-dev-gatekeeper_graasp-dev-gatekeeper-ec2_A55DD5DA (graasp-dev-gatekeeper/graasp-dev-gatekeeper/graasp-dev-gatekeeper-ec2): Refreshing state... [id=i-0fd04870b794c75b3]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_db_instance.this[0]: Refreshing state... [id=db-3CNANXEZMD2SUYDRIDBIHT6F2M]
graasp-dev  aws_ecs_task_definition.graasp-dev_etherpad_D664EB2D (graasp-dev/etherpad): Refreshing state... [id=etherpad]
graasp-dev  aws_ecs_task_definition.graasp-dev_umami_88984772 (graasp-dev/umami): Refreshing state... [id=umami]
graasp-dev  aws_lb_listener.graasp-dev-load-balancer_lb-listener-http-redirect_309E2C64 (graasp-dev-load-balancer/lb-listener-http-redirect): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/9cc00852f3f90d6a]
graasp-dev  aws_lb_listener.graasp-dev-load-balancer_lb-listener-https_E069C227 (graasp-dev-load-balancer/lb-listener-https): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4]
graasp-dev  aws_lb_target_group.graasp-dev_umami-target-group_02AC6A93 (graasp-dev/umami-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/umami/eb6d060fc17e2e52]
            aws_lb_target_group.graasp-dev_graasp-library-target-group_47035354 (graasp-dev/graasp-library-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/graasp-library/1f502836d98e92e0]
graasp-dev  aws_lb_target_group.graasp-dev_etherpad-target-group_94F8091C (graasp-dev/etherpad-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/etherpad/69fe8f88d1211cfe]
            aws_lb_target_group.graasp-dev_graasp-target-group_7E05BC31 (graasp-dev/graasp-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/graasp/75b2cf400edd1909]
graasp-dev  aws_ecs_service.graasp-dev_graasp-library-service_35621E15 (graasp-dev/graasp-library-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp-library]
            aws_lb_listener_rule.graasp-dev_graasp-library-rule_AC381C09 (graasp-dev/graasp-library-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/47b6511ce97bab5a]
graasp-dev  aws_ecs_service.graasp-dev_etherpad-service_366B5CFC (graasp-dev/etherpad-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/etherpad]
            aws_ecs_service.graasp-dev_graasp-service_BD538BD2 (graasp-dev/graasp-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp]
            aws_lb_listener_rule.graasp-dev_etherpad-rule_74CA3679 (graasp-dev/etherpad-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/d95b5f32dc661338]
            aws_lb_listener_rule.graasp-dev_graasp-rule_8589AD50 (graasp-dev/graasp-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/5bba1be112990e2f]
graasp-dev  aws_lb_listener_rule.graasp-dev_umami-rule_139819E3 (graasp-dev/umami-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/185c679fb423b689]
graasp-dev  aws_ecs_service.graasp-dev_umami-service_6A875906 (graasp-dev/umami-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/umami]
graasp-dev  aws_appautoscaling_target.graasp-dev_graasp-library-service-autoscaling-target_5E0ABD4D (graasp-dev/graasp-library-service-autoscaling-target): Refreshing state... [id=service/graasp-dev/graasp-library]
graasp-dev  aws_appautoscaling_target.graasp-dev_graasp-service-autoscaling-target_517CCDCE (graasp-dev/graasp-service-autoscaling-target): Refreshing state... [id=service/graasp-dev/graasp]
graasp-dev  aws_appautoscaling_policy.graasp-dev_graasp-library-service-autoscaling-policy_E718A88F (graasp-dev/graasp-library-service-autoscaling-policy): Refreshing state... [id=graasp-library]
graasp-dev  aws_appautoscaling_policy.graasp-dev_graasp-service-autoscaling-policy_70C429DA (graasp-dev/graasp-service-autoscaling-policy): Refreshing state... [id=graasp]
graasp-dev  Terraform used the selected providers to generate the following execution
            plan. Resource actions are indicated with the following symbols:
              + create
              ~ update in-place
              - destroy

            Terraform will perform the following actions:
graasp-dev  # aws_cloudfront_distribution.graasp-dev-apps-cloudfront (graasp-dev-apps-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-apps-cloudfront" {
                    id                              = "E354WPS1CZ652D"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-assets-cloudfront (graasp-dev-assets-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-assets-cloudfront" {
                    id                              = "E1TTPMNH8QPMJP"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-client-cloudfront (graasp-dev-client-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-client-cloudfront" {
                    id                              = "E1ZTGZST8787TH"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-h5p-cloudfront (graasp-dev-h5p-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-h5p-cloudfront" {
                    id                              = "E3B7XJV46O4VB4"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_function.maintenance-check-function will be destroyed
              # (because aws_cloudfront_function.maintenance-check-function is not in configuration)
              - resource "aws_cloudfront_function" "maintenance-check-function" {
                  - arn             = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                  - code            = <<-EOT
                        exports.handler = async (event, context) => {
                          const headers = event.Records[0].cf.request.headers;
                          const headerName = 'x-maintenance-6oA6nStGidBOs0nyWSt9ZqLgbdXquA';
                          const headerSecret = 'dj0H0YsIawMGA55Ydc0HViJ4Zbwig3';
                          if (
                            headers[headerName] &&
                            headers[headerName][0].value === headerSecret
                          ) {
                            return event.Records[0].cf.request;
                          }

                          return {
                            status: '302',
                            statusDescription: 'Found',
                            headers: {
                              location: [
                                {
                                  key: 'Location',
                                  value: 'https://maintenance.graasp.org',
                                },
                              ],
                            },
                          };
                        };
                    EOT -> null
                  - etag            = "ETVPDKIKX0DER" -> null
                  - id              = "maintenance-check" -> null
                  - live_stage_etag = "ETVPDKIKX0DER" -> null
                  - name            = "maintenance-check" -> null
                  - publish         = true -> null
                  - runtime         = "cloudfront-js-2.0" -> null
                  - status          = "UNASSOCIATED" -> null
                    # (1 unchanged attribute hidden)
                }

              # aws_ecs_service.graasp-dev_etherpad-service_366B5CFC (graasp-dev/etherpad-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_etherpad-service_366B5CFC" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/etherpad"
                    name                               = "etherpad"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_graasp-library-service_35621E15 (graasp-dev/graasp-library-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_graasp-library-service_35621E15" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp-library"
                    name                               = "graasp-library"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_graasp-service_BD538BD2 (graasp-dev/graasp-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_graasp-service_BD538BD2" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp"
                    name                               = "graasp"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_iframely-service_8F7B5C1F (graasp-dev/iframely-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_iframely-service_8F7B5C1F" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/iframely"
                    name                               = "iframely"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (4 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_meilisearch-service_3A736F80 (graasp-dev/meilisearch-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_meilisearch-service_3A736F80" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/meilisearch"
                    name                               = "meilisearch"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (4 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_redis-service_1DBE7C83 (graasp-dev/redis-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_redis-service_1DBE7C83" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/redis"
                    name                               = "redis"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (4 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_umami-service_6A875906 (graasp-dev/umami-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_umami-service_6A875906" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/umami"
                    name                               = "umami"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-account_E8E1BF85 (graasp-dev-load-balancer/graasp-dev-account) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-account_E8E1BF85" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 11
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "dev.graasp.org"
                          + path        = "/account/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_301"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "account.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-analytics_431AD7A3 (graasp-dev-load-balancer/graasp-dev-analytics) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-analytics_431AD7A3" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 15
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "dev.graasp.org"
                          + path        = "/analytics/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_301"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "analytics.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-auth_E1CC888F (graasp-dev-load-balancer/graasp-dev-auth) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-auth_E1CC888F" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 12
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "dev.graasp.org"
                          + path        = "/auth/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_301"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "auth.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-builder_4D040462 (graasp-dev-load-balancer/graasp-dev-builder) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-builder_4D040462" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 14
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "dev.graasp.org"
                          + path        = "/builder/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_301"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "builder.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-player_6D261351 (graasp-dev-load-balancer/graasp-dev-player) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-player_6D261351" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 13
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "dev.graasp.org"
                          + path        = "/player/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_301"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "player.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-shortener_2A4B0FBC (graasp-dev-load-balancer/graasp-dev-shortener) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-shortener_2A4B0FBC" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 10
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "api.dev.graasp.org"
                          + path        = "/items/short-links/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_302"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "go.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev_etherpad-rule_74CA3679 (graasp-dev/etherpad-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_etherpad-rule_74CA3679" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/d95b5f32dc661338"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_graasp-library-rule_AC381C09 (graasp-dev/graasp-library-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_graasp-library-rule_AC381C09" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/47b6511ce97bab5a"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_graasp-rule_8589AD50 (graasp-dev/graasp-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_graasp-rule_8589AD50" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/5bba1be112990e2f"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_umami-rule_139819E3 (graasp-dev/umami-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_umami-rule_139819E3" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/185c679fb423b689"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

            Plan: 6 to add, 15 to change, 1 to destroy.

            ─────────────────────────────────────────────────────────────────────────────

            Saved the plan to: plan

            To perform exactly these actions, run the following command to apply:
                terraform apply "plan"


```

</details>
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-25T13:06:24Z
body: <!-- terraform cdk action for options with hash 0d855fa9b0c377767ce986776c53ddef -->
### ✅ Successfully planned Terraform CDK Stack 'graasp-dev'



<details><summary>Show Plan</summary>

```shell
graasp-dev  Initializing the backend...
graasp-dev  Successfully configured the backend "s3"! Terraform will automatically
            use this backend unless the backend configuration changes.
graasp-dev  Initializing modules...
graasp-dev  Downloading registry.terraform.io/terraform-aws-modules/rds/aws 6.10.0 for graasp-dev-postgres_db_F1D5DB7A...
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_instance in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_instance
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_instance_role_association in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_instance_role_association
            - graasp-dev-postgres_db_F1D5DB7A.db_option_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_option_group
            - graasp-dev-postgres_db_F1D5DB7A.db_parameter_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_parameter_group
            - graasp-dev-postgres_db_F1D5DB7A.db_subnet_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_subnet_group
graasp-dev  Downloading registry.terraform.io/terraform-aws-modules/vpc/aws 5.19.0 for vpc...
graasp-dev  - vpc in .terraform/modules/vpc
graasp-dev  Initializing provider plugins...
            - Finding hashicorp/random versions matching ">= 3.1.0"...
graasp-dev  - Finding hashicorp/aws versions matching ">= 5.59.0, >= 5.62.0, >= 5.79.0, 5.91.0"...
graasp-dev  - Installing hashicorp/random v3.7.1...
graasp-dev  - Installed hashicorp/random v3.7.1 (signed by HashiCorp)
graasp-dev  - Installing hashicorp/aws v5.91.0...
graasp-dev  - Installed hashicorp/aws v5.91.0 (signed by HashiCorp)
            Terraform has created a lock file .terraform.lock.hcl to record the provider
            selections it made above. Include this file in your version control repository
            so that Terraform can guarantee to make the same selections by default when
            you run "terraform init" in the future.
graasp-dev  Terraform has been successfully initialized!

            You may now begin working with Terraform. Try running "terraform plan" to see
            any changes that are required for your infrastructure. All Terraform commands
            should now work.

            If you ever set or change modules or backend configuration for Terraform,
            rerun this command to reinitialize your working directory. If you forget, other
            commands will detect it and remind you to do so if necessary.
graasp-dev  - Fetching hashicorp/aws 5.91.0 for linux_amd64...
graasp-dev  - Retrieved hashicorp/aws 5.91.0 for linux_amd64 (signed by HashiCorp)
graasp-dev  - Fetching hashicorp/random 3.7.1 for linux_amd64...
graasp-dev  - Retrieved hashicorp/random 3.7.1 for linux_amd64 (signed by HashiCorp)
            - Obtained hashicorp/random checksums for linux_amd64; All checksums for this platform were already tracked in the lock file
            - Obtained hashicorp/aws checksums for linux_amd64; All checksums for this platform were already tracked in the lock file
graasp-dev  Success! Terraform has validated the lock file and found no need for changes.
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.random_id.snapshot_identifier[0]: Refreshing state... [id=SHBibw]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert): Reading...
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert)-lb: Reading...
graasp-dev  aws_cloudwatch_log_group.graasp-dev_umami-loggroup_544115BF (graasp-dev/umami-loggroup): Refreshing state... [id=/ecs/umami]
            data.aws_ecr_repository.graasp-dev-etherpad-ecr (graasp-dev-etherpad-ecr): Reading...
            module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_partition.current: Reading...
            module.graasp-dev-postgres_db_F1D5DB7A.module.db_parameter_group.aws_db_parameter_group.this[0]: Refreshing state... [id=graasp-postgres15-20231009123434812500000001]
graasp-dev  aws_s3_bucket.graasp-dev-assets_bucket_8930785E (graasp-dev-assets/bucket): Refreshing state... [id=graasp-dev-assets]
            module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_partition.current: Read complete after 1s [id=aws]
            aws_cloudfront_function.maintenance-check-function: Refreshing state... [id=maintenance-check]
            aws_ecs_cluster.cluster (cluster): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:cluster/graasp-dev]
            aws_iam_role.graasp-dev_ecs-execution-role_A4D135E8 (graasp-dev/ecs-execution-role): Refreshing state... [id=graasp-dev-ecs-execution-role]
            aws_s3_bucket.graasp-dev-maintenance_bucket_46B8FAD7 (graasp-dev-maintenance/bucket): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert): Read complete after 1s [id=arn:aws:acm:us-east-1:299720865162:certificate/46cb9d1f-aea8-42de-8232-a5b83f1cc7e2]
graasp-dev  data.aws_ecr_repository.graasp-dev-explore-ecr (graasp-dev-explore-ecr): Reading...
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_iam_policy_document.enhanced_monitoring: Reading...
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_iam_policy_document.enhanced_monitoring: Read complete after 0s [id=76086537]
graasp-dev  aws_s3_bucket.graasp-dev-file-items_bucket_12606B30 (graasp-dev-file-items/bucket): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket.graasp-dev-client_bucket_076446C5 (graasp-dev-client/bucket): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_etherpad-loggroup_200385B4 (graasp-dev/etherpad-loggroup): Refreshing state... [id=/ecs/etherpad]
graasp-dev  data.aws_ecr_repository.graasp-dev-etherpad-ecr (graasp-dev-etherpad-ecr): Read complete after 2s [id=graasp/etherpad]
graasp-dev  aws_s3_bucket.graasp-dev-h5p_bucket_B545A43B (graasp-dev-h5p/bucket): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  data.aws_ecr_repository.graasp-dev-explore-ecr (graasp-dev-explore-ecr): Read complete after 1s [id=graasp/explore]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_redis-loggroup_AFE7CB87 (graasp-dev/redis-loggroup): Refreshing state... [id=/ecs/redis]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_meilisearch-loggroup_F1AD2775 (graasp-dev/meilisearch-loggroup): Refreshing state... [id=/ecs/meilisearch]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert)-lb: Read complete after 2s [id=arn:aws:acm:eu-central-1:299720865162:certificate/af9d071d-3aa1-4583-905d-ec1efd5515d3]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_iframely-loggroup_105420D9 (graasp-dev/iframely-loggroup): Refreshing state... [id=/ecs/iframely]
graasp-dev  aws_service_discovery_http_namespace.graasp-dev_namespace_B6F7BA2C (graasp-dev/namespace): Refreshing state... [id=ns-us3rov3ukfoth5ox]
graasp-dev  data.aws_ecr_repository.graasp-dev-ecr (graasp-dev-ecr): Reading...
graasp-dev  module.vpc.aws_vpc.this[0]: Refreshing state... [id=vpc-0b312f17d2e08cb6e]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_graasp-library-loggroup_FD22B99E (graasp-dev/graasp-library-loggroup): Refreshing state... [id=/ecs/graasp-library]
graasp-dev  aws_s3_bucket.graasp-dev-apps_bucket_F4170225 (graasp-dev-apps/bucket): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_graasp-loggroup_44ECC8C2 (graasp-dev/graasp-loggroup): Refreshing state... [id=/ecs/graasp]
graasp-dev  aws_rds_instance_state.graasp-dev-postgres_graasp-dev-instance-state_D3812C30 (graasp-dev-postgres/graasp-dev-instance-state): Refreshing state...
graasp-dev  data.aws_ecr_repository.graasp-dev-ecr (graasp-dev-ecr): Read complete after 1s [id=graasp]
graasp-dev  aws_ecs_task_definition.graasp-dev_meilisearch_38A3D0B6 (graasp-dev/meilisearch): Refreshing state... [id=meilisearch]
graasp-dev  aws_ecs_task_definition.graasp-dev_graasp_54E40EB5 (graasp-dev/graasp): Refreshing state... [id=graasp]
graasp-dev  aws_ecs_task_definition.graasp-dev_iframely_4C5E8E3D (graasp-dev/iframely): Refreshing state... [id=iframely]
graasp-dev  aws_ecs_task_definition.graasp-dev_redis_E9CE963D (graasp-dev/redis): Refreshing state... [id=redis]
graasp-dev  aws_iam_role_policy.graasp-dev_graasp-dev-ecs-execution-role-policies_D65DB830 (graasp-dev/graasp-dev-ecs-execution-role-policies): Refreshing state... [id=graasp-dev-ecs-execution-role:allow-ecr-pull]
graasp-dev  aws_ecs_task_definition.graasp-dev_graasp-library_B38B90C0 (graasp-dev/graasp-library): Refreshing state... [id=graasp-library]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_iam_role.enhanced_monitoring[0]: Refreshing state... [id=graasp-dev-rds-monitoring-role]
graasp-dev  data.aws_iam_policy_document.graasp-dev-maintenance_allow_public_access_8F6F3848 (graasp-dev-maintenance/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-maintenance_allow_public_access_8F6F3848 (graasp-dev-maintenance/allow_public_access): Read complete after 0s [id=2448502661]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-maintenance_s3-bucket-ownership_1588A828 (graasp-dev-maintenance/s3-bucket-ownership): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-maintenance_s3-block-public-access_C8FD87F8 (graasp-dev-maintenance/s3-block-public-access): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-maintenance_s3-website-configuration_50149944 (graasp-dev-maintenance/s3-website-configuration): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_s3_bucket_policy.graasp-dev-maintenance_s3-policy_DA8583B1 (graasp-dev-maintenance/s3-policy): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  data.aws_iam_policy_document.graasp-dev-assets_allow_public_access_59580A32 (graasp-dev-assets/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-assets_allow_public_access_59580A32 (graasp-dev-assets/allow_public_access): Read complete after 0s [id=661570887]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-assets_s3-website-configuration_6D1735B5 (graasp-dev-assets/s3-website-configuration): Refreshing state... [id=graasp-dev-assets]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-assets_s3-bucket-ownership_1BE1C46A (graasp-dev-assets/s3-bucket-ownership): Refreshing state... [id=graasp-dev-assets]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-assets_s3-block-public-access_D15DF7EF (graasp-dev-assets/s3-block-public-access): Refreshing state... [id=graasp-dev-assets]
graasp-dev  aws_s3_bucket_policy.graasp-dev-assets_s3-policy_B5DD3F7D (graasp-dev-assets/s3-policy): Refreshing state... [id=graasp-dev-assets]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_iam_role_policy_attachment.enhanced_monitoring[0]: Refreshing state... [id=graasp-dev-rds-monitoring-role-20231009123438644600000004]
graasp-dev  aws_s3_bucket_cors_configuration.graasp-dev-file-items_s3-cors-config_531774F3 (graasp-dev-file-items/s3-cors-config): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-file-items_s3-block-public-access_DD6519C0 (graasp-dev-file-items/s3-block-public-access): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-file-items_s3-bucket-ownership_9BB45BB8 (graasp-dev-file-items/s3-bucket-ownership): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-client_s3-website-configuration_A6D7BA4D (graasp-dev-client/s3-website-configuration): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-client_s3-block-public-access_A8DD5DF0 (graasp-dev-client/s3-block-public-access): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-client_s3-bucket-ownership_7FA8E504 (graasp-dev-client/s3-bucket-ownership): Refreshing state... [id=graasp-dev-client]
graasp-dev  data.aws_iam_policy_document.graasp-dev-client_allow_public_access_BCCA7882 (graasp-dev-client/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-client_allow_public_access_BCCA7882 (graasp-dev-client/allow_public_access): Read complete after 0s [id=3742575001]
graasp-dev  aws_cloudfront_distribution.graasp-dev-maintenance-cloudfront (graasp-dev-maintenance-cloudfront): Refreshing state... [id=EGBVR5KHBTMNX]
graasp-dev  aws_cloudfront_distribution.graasp-dev-assets-cloudfront (graasp-dev-assets-cloudfront): Refreshing state... [id=E1TTPMNH8QPMJP]
graasp-dev  aws_s3_bucket_policy.graasp-dev-client_s3-policy_71B89D07 (graasp-dev-client/s3-policy): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-h5p_s3-website-configuration_5FB93898 (graasp-dev-h5p/s3-website-configuration): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-h5p_s3-block-public-access_2D472005 (graasp-dev-h5p/s3-block-public-access): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-h5p_s3-bucket-ownership_418B795B (graasp-dev-h5p/s3-bucket-ownership): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  data.aws_iam_policy_document.graasp-dev-h5p_allow_public_access_04C01E9A (graasp-dev-h5p/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-h5p_allow_public_access_04C01E9A (graasp-dev-h5p/allow_public_access): Read complete after 0s [id=1897348743]
graasp-dev  aws_s3_bucket_cors_configuration.graasp-dev-h5p_s3-cors-config_EC778FA8 (graasp-dev-h5p/s3-cors-config): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  module.vpc.aws_default_security_group.this[0]: Refreshing state... [id=sg-0fd249cba5ab4c742]
graasp-dev  module.vpc.aws_default_network_acl.this[0]: Refreshing state... [id=acl-06ce6a79ac9494ac3]
            module.vpc.aws_default_route_table.default[0]: Refreshing state... [id=rtb-0de0872c207e953b3]
graasp-dev  aws_s3_bucket_policy.graasp-dev-h5p_s3-policy_9DB0282E (graasp-dev-h5p/s3-policy): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_security_group.graasp-dev-lb-security-group (graasp-dev-lb-security-group): Refreshing state... [id=sg-0f07f40e7da03b966]
graasp-dev  aws_security_group.graasp-dev-redis-security-group (graasp-dev-redis-security-group): Refreshing state... [id=sg-0a7ebce0ecabcd895]
graasp-dev  aws_security_group.graasp-dev-backend-security-group (graasp-dev-backend-security-group): Refreshing state... [id=sg-014f1fd084973fd06]
graasp-dev  aws_security_group.graasp-dev-meilisearch-security-group (graasp-dev-meilisearch-security-group): Refreshing state... [id=sg-0b3ce2813b8775eba]
graasp-dev  aws_security_group.graasp-dev-postgres_graasp-dev-db-security-group_6A637215 (graasp-dev-postgres/graasp-dev-db-security-group): Refreshing state... [id=sg-009f5a0d494264c65]
graasp-dev  aws_security_group.graasp-dev-iframely-security-group (graasp-dev-iframely-security-group): Refreshing state... [id=sg-0ca4813c62c9d17a3]
graasp-dev  aws_cloudfront_distribution.graasp-dev-client-cloudfront (graasp-dev-client-cloudfront): Refreshing state... [id=E1ZTGZST8787TH]
graasp-dev  aws_security_group.graasp-dev-library-security-group (graasp-dev-library-security-group): Refreshing state... [id=sg-07bae39853af00427]
graasp-dev  aws_security_group.graasp-dev-umami-security-group (graasp-dev-umami-security-group): Refreshing state... [id=sg-03d98ff7f2eb798fa]
graasp-dev  aws_security_group.graasp-dev-gatekeeper_graasp-dev-gatekeeper-security-group_92E8E7CC (graasp-dev-gatekeeper/graasp-dev-gatekeeper-security-group): Refreshing state... [id=sg-036836715bbca8a32]
graasp-dev  aws_security_group.graasp-dev-etherpad-security-group (graasp-dev-etherpad-security-group): Refreshing state... [id=sg-0ffb7f564703627af]
graasp-dev  module.vpc.aws_route_table.public[0]: Refreshing state... [id=rtb-09991359fa2a53c1c]
graasp-dev  module.vpc.aws_internet_gateway.this[0]: Refreshing state... [id=igw-01955c8cc5f6d5181]
graasp-dev  module.vpc.aws_subnet.public[2]: Refreshing state... [id=subnet-01f44d93731acccb7]
graasp-dev  module.vpc.aws_subnet.public[0]: Refreshing state... [id=subnet-0596b784e2da6e5c6]
graasp-dev  module.vpc.aws_subnet.public[1]: Refreshing state... [id=subnet-055a0124ce88123b2]
graasp-dev  aws_cloudfront_distribution.graasp-dev-h5p-cloudfront (graasp-dev-h5p-cloudfront): Refreshing state... [id=E3B7XJV46O4VB4]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-apps_s3-website-configuration_7E3F72D4 (graasp-dev-apps/s3-website-configuration): Refreshing state... [id=graasp-dev-apps]
graasp-dev  data.aws_iam_policy_document.graasp-dev-apps_allow_public_access_9E010C09 (graasp-dev-apps/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-apps_allow_public_access_9E010C09 (graasp-dev-apps/allow_public_access): Read complete after 1s [id=4070198440]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-apps_s3-bucket-ownership_699CAAD9 (graasp-dev-apps/s3-bucket-ownership): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-apps_s3-block-public-access_05DA1D21 (graasp-dev-apps/s3-block-public-access): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-load-balancer_graasp-dev-allow-all_001EC5EB (graasp-dev-load-balancer/graasp-dev-allow-all): Refreshing state... [id=sgr-08d13e43e33fd5b5a]
            aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-https_0223BC47 (graasp-dev-load-balancer/allow-https): Refreshing state... [id=sgr-0d7110664852fbdc7]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-https-ipv6_DC496355 (graasp-dev-load-balancer/allow-https-ipv6): Refreshing state... [id=sgr-023719db02da6a2a8]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-http_0E987E63 (graasp-dev-load-balancer/allow-http): Refreshing state... [id=sgr-0dbd5cad25b6a1a87]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-http-ipv6_91743348 (graasp-dev-load-balancer/allow-http-ipv6): Refreshing state... [id=sgr-084bba5f4b221f189]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-redis-allow-all (graasp-dev-redis-allow-all): Refreshing state... [id=sgr-03673e2379ee73580]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-backend-allow-all (graasp-dev-backend-allow-all): Refreshing state... [id=sgr-0f70a895b80fd309e]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-redis-allow-graasp-backend (graasp-dev-redis-allow-graasp-backend): Refreshing state... [id=sgr-08d29290d8638ef8f]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-backend-allow-load-balancer (graasp-dev-backend-allow-load-balancer): Refreshing state... [id=sgr-0f1f4d5674dff4695]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-meilisearch-allow-all (graasp-dev-meilisearch-allow-all): Refreshing state... [id=sgr-0418d7a3309cc5d5e]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-meilisearch-allow-graasp-backend (graasp-dev-meilisearch-allow-graasp-backend): Refreshing state... [id=sgr-0d502c3895f05dc26]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-postgres_graasp-dev-db-allow-all_0D9DEE53 (graasp-dev-postgres/graasp-dev-db-allow-all): Refreshing state... [id=sgr-0199bcbb086d17111]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-graasp-backend_E8883EF3 (graasp-dev-postgres/graasp-dev-db-allow-graasp-backend): Refreshing state... [id=sgr-007f1bb79fc0de776]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-iframely-allow-graasp-backend (graasp-dev-iframely-allow-graasp-backend): Refreshing state... [id=sgr-0d4d4b4ffd0b49a87]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-iframely-allow-all (graasp-dev-iframely-allow-all): Refreshing state... [id=sgr-03b6e652d0d98bb05]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-library-allow-all (graasp-dev-library-allow-all): Refreshing state... [id=sgr-03cd64d6e8521413a]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-library-allow-load-balancer (graasp-dev-library-allow-load-balancer): Refreshing state... [id=sgr-04e219db366df9a40]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-umami_425B5740 (graasp-dev-postgres/graasp-dev-db-allow-umami): Refreshing state... [id=sgr-063ed5e713152b283]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-umami-allow-load-balancer (graasp-dev-umami-allow-load-balancer): Refreshing state... [id=sgr-05a39a274de98821a]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-umami-allow-all (graasp-dev-umami-allow-all): Refreshing state... [id=sgr-026fb931c3d9a2d33]
graasp-dev  aws_s3_bucket_policy.graasp-dev-apps_s3-policy_708B7B00 (graasp-dev-apps/s3-policy): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-gatekeeper_graasp-dev-gatekeeper-allow-inbound-ssh_1B8A7117 (graasp-dev-gatekeeper/graasp-dev-gatekeeper/graasp-dev-gatekeeper-allow-inbound-ssh): Refreshing state... [id=sgr-0a51d11a638800750]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-allow-gatekeeper-on-meilisearch (graasp-dev-allow-gatekeeper-on-meilisearch): Refreshing state... [id=sgr-0959c46cb81a9c68e]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-allow-gatekeeper-on-postgres (graasp-dev-allow-gatekeeper-on-postgres): Refreshing state... [id=sgr-0058c3745753e6995]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-gatekeeper_graasp-dev-gatekeeper-allow-all_B66B414C (graasp-dev-gatekeeper/graasp-dev-gatekeeper-allow-all): Refreshing state... [id=sgr-042fe01dcb13dead6]
graasp-dev  module.vpc.aws_route.public_internet_gateway[0]: Refreshing state... [id=r-rtb-09991359fa2a53c1c1080289494]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-etherpad_A95D382C (graasp-dev-postgres/graasp-dev-db-allow-etherpad): Refreshing state... [id=sgr-0ded857153724c35d]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-etherpad-allow-all (graasp-dev-etherpad-allow-all): Refreshing state... [id=sgr-06470ffe6a0df1219]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-etherpad-allow-load-balancer (graasp-dev-etherpad-allow-load-balancer): Refreshing state... [id=sgr-06e2e5786d9ade6fb]
graasp-dev  module.vpc.aws_route_table_association.public[1]: Refreshing state... [id=rtbassoc-065b7c3d10a5adb5f]
graasp-dev  module.vpc.aws_route_table_association.public[2]: Refreshing state... [id=rtbassoc-0953114662597b70b]
graasp-dev  module.vpc.aws_route_table_association.public[0]: Refreshing state... [id=rtbassoc-0ba3fbc906b89068b]
graasp-dev  aws_cloudfront_distribution.graasp-dev-apps-cloudfront (graasp-dev-apps-cloudfront): Refreshing state... [id=E354WPS1CZ652D]
graasp-dev  aws_ecs_service.graasp-dev_iframely-service_8F7B5C1F (graasp-dev/iframely-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/iframely]
graasp-dev  aws_lb.graasp-dev-load-balancer_lb_9A06B77C (graasp-dev-load-balancer/lb): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:loadbalancer/app/graasp-dev/2d9df8ffedc22275]
graasp-dev  aws_ecs_service.graasp-dev_meilisearch-service_3A736F80 (graasp-dev/meilisearch-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/meilisearch]
graasp-dev  aws_ecs_service.graasp-dev_redis-service_1DBE7C83 (graasp-dev/redis-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/redis]
graasp-dev  aws_instance.graasp-dev-gatekeeper_graasp-dev-gatekeeper-ec2_A55DD5DA (graasp-dev-gatekeeper/graasp-dev-gatekeeper/graasp-dev-gatekeeper-ec2): Refreshing state... [id=i-0fd04870b794c75b3]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_subnet_group.aws_db_subnet_group.this[0]: Refreshing state... [id=graasp-dev-20231009123833192500000015]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_db_instance.this[0]: Refreshing state... [id=db-3CNANXEZMD2SUYDRIDBIHT6F2M]
graasp-dev  aws_ecs_task_definition.graasp-dev_umami_88984772 (graasp-dev/umami): Refreshing state... [id=umami]
graasp-dev  aws_ecs_task_definition.graasp-dev_etherpad_D664EB2D (graasp-dev/etherpad): Refreshing state... [id=etherpad]
graasp-dev  aws_lb_listener.graasp-dev-load-balancer_lb-listener-http-redirect_309E2C64 (graasp-dev-load-balancer/lb-listener-http-redirect): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/9cc00852f3f90d6a]
graasp-dev  aws_lb_listener.graasp-dev-load-balancer_lb-listener-https_E069C227 (graasp-dev-load-balancer/lb-listener-https): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4]
graasp-dev  aws_lb_target_group.graasp-dev_umami-target-group_02AC6A93 (graasp-dev/umami-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/umami/eb6d060fc17e2e52]
graasp-dev  aws_lb_target_group.graasp-dev_graasp-target-group_7E05BC31 (graasp-dev/graasp-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/graasp/75b2cf400edd1909]
            aws_lb_target_group.graasp-dev_graasp-library-target-group_47035354 (graasp-dev/graasp-library-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/graasp-library/1f502836d98e92e0]
graasp-dev  aws_lb_target_group.graasp-dev_etherpad-target-group_94F8091C (graasp-dev/etherpad-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/etherpad/69fe8f88d1211cfe]
graasp-dev  aws_lb_listener_rule.graasp-dev_umami-rule_139819E3 (graasp-dev/umami-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/185c679fb423b689]
graasp-dev  aws_ecs_service.graasp-dev_umami-service_6A875906 (graasp-dev/umami-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/umami]
graasp-dev  aws_lb_listener_rule.graasp-dev_graasp-library-rule_AC381C09 (graasp-dev/graasp-library-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/47b6511ce97bab5a]
graasp-dev  aws_ecs_service.graasp-dev_graasp-library-service_35621E15 (graasp-dev/graasp-library-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp-library]
graasp-dev  aws_lb_listener_rule.graasp-dev_etherpad-rule_74CA3679 (graasp-dev/etherpad-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/d95b5f32dc661338]
graasp-dev  aws_ecs_service.graasp-dev_etherpad-service_366B5CFC (graasp-dev/etherpad-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/etherpad]
graasp-dev  aws_lb_listener_rule.graasp-dev_graasp-rule_8589AD50 (graasp-dev/graasp-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/5bba1be112990e2f]
graasp-dev  aws_ecs_service.graasp-dev_graasp-service_BD538BD2 (graasp-dev/graasp-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp]
graasp-dev  aws_appautoscaling_target.graasp-dev_graasp-library-service-autoscaling-target_5E0ABD4D (graasp-dev/graasp-library-service-autoscaling-target): Refreshing state... [id=service/graasp-dev/graasp-library]
graasp-dev  aws_appautoscaling_target.graasp-dev_graasp-service-autoscaling-target_517CCDCE (graasp-dev/graasp-service-autoscaling-target): Refreshing state... [id=service/graasp-dev/graasp]
graasp-dev  aws_appautoscaling_policy.graasp-dev_graasp-service-autoscaling-policy_70C429DA (graasp-dev/graasp-service-autoscaling-policy): Refreshing state... [id=graasp]
graasp-dev  aws_appautoscaling_policy.graasp-dev_graasp-library-service-autoscaling-policy_E718A88F (graasp-dev/graasp-library-service-autoscaling-policy): Refreshing state... [id=graasp-library]
graasp-dev  Terraform used the selected providers to generate the following execution
            plan. Resource actions are indicated with the following symbols:
              + create
              ~ update in-place
              - destroy

            Terraform will perform the following actions:
graasp-dev  # aws_cloudfront_distribution.graasp-dev-apps-cloudfront (graasp-dev-apps-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-apps-cloudfront" {
                    id                              = "E354WPS1CZ652D"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-assets-cloudfront (graasp-dev-assets-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-assets-cloudfront" {
                    id                              = "E1TTPMNH8QPMJP"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-client-cloudfront (graasp-dev-client-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-client-cloudfront" {
                    id                              = "E1ZTGZST8787TH"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-h5p-cloudfront (graasp-dev-h5p-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-h5p-cloudfront" {
                    id                              = "E3B7XJV46O4VB4"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_function.maintenance-check-function will be destroyed
              # (because aws_cloudfront_function.maintenance-check-function is not in configuration)
              - resource "aws_cloudfront_function" "maintenance-check-function" {
                  - arn             = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                  - code            = <<-EOT
                        exports.handler = async (event, context) => {
                          const headers = event.Records[0].cf.request.headers;
                          const headerName = 'x-maintenance-6oA6nStGidBOs0nyWSt9ZqLgbdXquA';
                          const headerSecret = 'dj0H0YsIawMGA55Ydc0HViJ4Zbwig3';
                          if (
                            headers[headerName] &&
                            headers[headerName][0].value === headerSecret
                          ) {
                            return event.Records[0].cf.request;
                          }

                          return {
                            status: '302',
                            statusDescription: 'Found',
                            headers: {
                              location: [
                                {
                                  key: 'Location',
                                  value: 'https://maintenance.graasp.org',
                                },
                              ],
                            },
                          };
                        };
                    EOT -> null
                  - etag            = "ETVPDKIKX0DER" -> null
                  - id              = "maintenance-check" -> null
                  - live_stage_etag = "ETVPDKIKX0DER" -> null
                  - name            = "maintenance-check" -> null
                  - publish         = true -> null
                  - runtime         = "cloudfront-js-2.0" -> null
                  - status          = "UNASSOCIATED" -> null
                    # (1 unchanged attribute hidden)
                }

              # aws_ecs_service.graasp-dev_etherpad-service_366B5CFC (graasp-dev/etherpad-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_etherpad-service_366B5CFC" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/etherpad"
                    name                               = "etherpad"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_graasp-library-service_35621E15 (graasp-dev/graasp-library-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_graasp-library-service_35621E15" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp-library"
                    name                               = "graasp-library"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_graasp-service_BD538BD2 (graasp-dev/graasp-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_graasp-service_BD538BD2" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp"
                    name                               = "graasp"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_iframely-service_8F7B5C1F (graasp-dev/iframely-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_iframely-service_8F7B5C1F" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/iframely"
                    name                               = "iframely"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (4 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_meilisearch-service_3A736F80 (graasp-dev/meilisearch-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_meilisearch-service_3A736F80" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/meilisearch"
                    name                               = "meilisearch"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (4 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_redis-service_1DBE7C83 (graasp-dev/redis-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_redis-service_1DBE7C83" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/redis"
                    name                               = "redis"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (4 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_umami-service_6A875906 (graasp-dev/umami-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_umami-service_6A875906" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/umami"
                    name                               = "umami"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-account_E8E1BF85 (graasp-dev-load-balancer/graasp-dev-account) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-account_E8E1BF85" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 11
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "dev.graasp.org"
                          + path        = "/account/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_301"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "account.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-analytics_431AD7A3 (graasp-dev-load-balancer/graasp-dev-analytics) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-analytics_431AD7A3" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 15
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "dev.graasp.org"
                          + path        = "/analytics/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_301"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "analytics.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-auth_E1CC888F (graasp-dev-load-balancer/graasp-dev-auth) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-auth_E1CC888F" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 12
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "dev.graasp.org"
                          + path        = "/auth/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_301"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "auth.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-builder_4D040462 (graasp-dev-load-balancer/graasp-dev-builder) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-builder_4D040462" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 14
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "dev.graasp.org"
                          + path        = "/builder/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_301"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "builder.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-player_6D261351 (graasp-dev-load-balancer/graasp-dev-player) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-player_6D261351" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 13
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "dev.graasp.org"
                          + path        = "/player/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_301"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "player.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-shortener_2A4B0FBC (graasp-dev-load-balancer/graasp-dev-shortener) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-shortener_2A4B0FBC" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 10
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "api.dev.graasp.org"
                          + path        = "/items/short-links/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_302"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "go.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev_etherpad-rule_74CA3679 (graasp-dev/etherpad-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_etherpad-rule_74CA3679" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/d95b5f32dc661338"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_graasp-library-rule_AC381C09 (graasp-dev/graasp-library-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_graasp-library-rule_AC381C09" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/47b6511ce97bab5a"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_graasp-rule_8589AD50 (graasp-dev/graasp-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_graasp-rule_8589AD50" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/5bba1be112990e2f"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_umami-rule_139819E3 (graasp-dev/umami-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_umami-rule_139819E3" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/185c679fb423b689"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

            Plan: 6 to add, 15 to change, 1 to destroy.

            ─────────────────────────────────────────────────────────────────────────────

            Saved the plan to: plan

            To perform exactly these actions, run the following command to apply:
                terraform apply "plan"


```

</details>
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-25T13:13:57Z
body: <!-- terraform cdk action for options with hash 0d855fa9b0c377767ce986776c53ddef -->
### ✅ Successfully planned Terraform CDK Stack 'graasp-dev'



<details><summary>Show Plan</summary>

```shell
graasp-dev  Initializing the backend...
graasp-dev  Successfully configured the backend "s3"! Terraform will automatically
            use this backend unless the backend configuration changes.
graasp-dev  Initializing modules...
graasp-dev  Downloading registry.terraform.io/terraform-aws-modules/rds/aws 6.10.0 for graasp-dev-postgres_db_F1D5DB7A...
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_instance in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_instance
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_instance_role_association in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_instance_role_association
            - graasp-dev-postgres_db_F1D5DB7A.db_option_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_option_group
            - graasp-dev-postgres_db_F1D5DB7A.db_parameter_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_parameter_group
            - graasp-dev-postgres_db_F1D5DB7A.db_subnet_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_subnet_group
graasp-dev
graasp-dev  Downloading registry.terraform.io/terraform-aws-modules/vpc/aws 5.19.0 for vpc...
graasp-dev
graasp-dev  - vpc in .terraform/modules/vpc
graasp-dev  Initializing provider plugins...
graasp-dev  - Finding hashicorp/aws versions matching ">= 5.59.0, >= 5.62.0, >= 5.79.0, 5.91.0"...
graasp-dev  - Finding hashicorp/random versions matching ">= 3.1.0"...
graasp-dev  - Installing hashicorp/aws v5.91.0...
graasp-dev  - Installed hashicorp/aws v5.91.0 (signed by HashiCorp)
graasp-dev  - Installing hashicorp/random v3.7.1...
graasp-dev  - Installed hashicorp/random v3.7.1 (signed by HashiCorp)
            Terraform has created a lock file .terraform.lock.hcl to record the provider
            selections it made above. Include this file in your version control repository
            so that Terraform can guarantee to make the same selections by default when
            you run "terraform init" in the future.
graasp-dev  Terraform has been successfully initialized!

            You may now begin working with Terraform. Try running "terraform plan" to see
            any changes that are required for your infrastructure. All Terraform commands
            should now work.

            If you ever set or change modules or backend configuration for Terraform,
            rerun this command to reinitialize your working directory. If you forget, other
            commands will detect it and remind you to do so if necessary.
graasp-dev  - Fetching hashicorp/aws 5.91.0 for linux_amd64...
graasp-dev  - Retrieved hashicorp/aws 5.91.0 for linux_amd64 (signed by HashiCorp)
graasp-dev  - Fetching hashicorp/random 3.7.1 for linux_amd64...
graasp-dev  - Retrieved hashicorp/random 3.7.1 for linux_amd64 (signed by HashiCorp)
            - Obtained hashicorp/aws checksums for linux_amd64; All checksums for this platform were already tracked in the lock file
            - Obtained hashicorp/random checksums for linux_amd64; All checksums for this platform were already tracked in the lock file
graasp-dev  Success! Terraform has validated the lock file and found no need for changes.
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.random_id.snapshot_identifier[0]: Refreshing state... [id=SHBibw]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert): Reading...
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_partition.current: Reading...
            data.aws_ecr_repository.graasp-dev-etherpad-ecr (graasp-dev-etherpad-ecr): Reading...
            aws_cloudwatch_log_group.graasp-dev_graasp-loggroup_44ECC8C2 (graasp-dev/graasp-loggroup): Refreshing state... [id=/ecs/graasp]
            data.aws_ecr_repository.graasp-dev-explore-ecr (graasp-dev-explore-ecr): Reading...
            aws_ecs_cluster.cluster (cluster): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:cluster/graasp-dev]
            aws_cloudwatch_log_group.graasp-dev_graasp-library-loggroup_FD22B99E (graasp-dev/graasp-library-loggroup): Refreshing state... [id=/ecs/graasp-library]
            aws_iam_role.graasp-dev_ecs-execution-role_A4D135E8 (graasp-dev/ecs-execution-role): Refreshing state... [id=graasp-dev-ecs-execution-role]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_partition.current: Read complete after 0s [id=aws]
            aws_cloudfront_function.maintenance-check-function: Refreshing state... [id=maintenance-check]
            aws_s3_bucket.graasp-dev-assets_bucket_8930785E (graasp-dev-assets/bucket): Refreshing state... [id=graasp-dev-assets]
            module.graasp-dev-postgres_db_F1D5DB7A.module.db_parameter_group.aws_db_parameter_group.this[0]: Refreshing state... [id=graasp-postgres15-20231009123434812500000001]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert): Read complete after 1s [id=arn:aws:acm:us-east-1:299720865162:certificate/46cb9d1f-aea8-42de-8232-a5b83f1cc7e2]
graasp-dev  aws_s3_bucket.graasp-dev-maintenance_bucket_46B8FAD7 (graasp-dev-maintenance/bucket): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_service_discovery_http_namespace.graasp-dev_namespace_B6F7BA2C (graasp-dev/namespace): Refreshing state... [id=ns-us3rov3ukfoth5ox]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert)-lb: Reading...
graasp-dev  aws_s3_bucket.graasp-dev-h5p_bucket_B545A43B (graasp-dev-h5p/bucket): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_etherpad-loggroup_200385B4 (graasp-dev/etherpad-loggroup): Refreshing state... [id=/ecs/etherpad]
graasp-dev  data.aws_ecr_repository.graasp-dev-etherpad-ecr (graasp-dev-etherpad-ecr): Read complete after 1s [id=graasp/etherpad]
graasp-dev  data.aws_ecr_repository.graasp-dev-explore-ecr (graasp-dev-explore-ecr): Read complete after 1s [id=graasp/explore]
            aws_cloudwatch_log_group.graasp-dev_meilisearch-loggroup_F1AD2775 (graasp-dev/meilisearch-loggroup): Refreshing state... [id=/ecs/meilisearch]
            module.vpc.aws_vpc.this[0]: Refreshing state... [id=vpc-0b312f17d2e08cb6e]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_iam_policy_document.enhanced_monitoring: Reading...
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_iam_policy_document.enhanced_monitoring: Read complete after 0s [id=76086537]
graasp-dev  aws_s3_bucket.graasp-dev-apps_bucket_F4170225 (graasp-dev-apps/bucket): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_s3_bucket.graasp-dev-client_bucket_076446C5 (graasp-dev-client/bucket): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_iframely-loggroup_105420D9 (graasp-dev/iframely-loggroup): Refreshing state... [id=/ecs/iframely]
graasp-dev  aws_rds_instance_state.graasp-dev-postgres_graasp-dev-instance-state_D3812C30 (graasp-dev-postgres/graasp-dev-instance-state): Refreshing state...
graasp-dev  aws_cloudwatch_log_group.graasp-dev_umami-loggroup_544115BF (graasp-dev/umami-loggroup): Refreshing state... [id=/ecs/umami]
graasp-dev  aws_s3_bucket.graasp-dev-file-items_bucket_12606B30 (graasp-dev-file-items/bucket): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  data.aws_ecr_repository.graasp-dev-ecr (graasp-dev-ecr): Reading...
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert)-lb: Read complete after 1s [id=arn:aws:acm:eu-central-1:299720865162:certificate/af9d071d-3aa1-4583-905d-ec1efd5515d3]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_redis-loggroup_AFE7CB87 (graasp-dev/redis-loggroup): Refreshing state... [id=/ecs/redis]
graasp-dev  aws_iam_role_policy.graasp-dev_graasp-dev-ecs-execution-role-policies_D65DB830 (graasp-dev/graasp-dev-ecs-execution-role-policies): Refreshing state... [id=graasp-dev-ecs-execution-role:allow-ecr-pull]
graasp-dev  aws_ecs_task_definition.graasp-dev_graasp-library_B38B90C0 (graasp-dev/graasp-library): Refreshing state... [id=graasp-library]
graasp-dev  aws_ecs_task_definition.graasp-dev_meilisearch_38A3D0B6 (graasp-dev/meilisearch): Refreshing state... [id=meilisearch]
graasp-dev  aws_ecs_task_definition.graasp-dev_iframely_4C5E8E3D (graasp-dev/iframely): Refreshing state... [id=iframely]
graasp-dev  aws_ecs_task_definition.graasp-dev_graasp_54E40EB5 (graasp-dev/graasp): Refreshing state... [id=graasp]
graasp-dev  data.aws_ecr_repository.graasp-dev-ecr (graasp-dev-ecr): Read complete after 0s [id=graasp]
graasp-dev  aws_ecs_task_definition.graasp-dev_redis_E9CE963D (graasp-dev/redis): Refreshing state... [id=redis]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_iam_role.enhanced_monitoring[0]: Refreshing state... [id=graasp-dev-rds-monitoring-role]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-assets_s3-block-public-access_D15DF7EF (graasp-dev-assets/s3-block-public-access): Refreshing state... [id=graasp-dev-assets]
graasp-dev  data.aws_iam_policy_document.graasp-dev-assets_allow_public_access_59580A32 (graasp-dev-assets/allow_public_access): Reading...
            data.aws_iam_policy_document.graasp-dev-assets_allow_public_access_59580A32 (graasp-dev-assets/allow_public_access): Read complete after 0s [id=661570887]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-assets_s3-website-configuration_6D1735B5 (graasp-dev-assets/s3-website-configuration): Refreshing state... [id=graasp-dev-assets]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-assets_s3-bucket-ownership_1BE1C46A (graasp-dev-assets/s3-bucket-ownership): Refreshing state... [id=graasp-dev-assets]
graasp-dev  aws_s3_bucket_policy.graasp-dev-assets_s3-policy_B5DD3F7D (graasp-dev-assets/s3-policy): Refreshing state... [id=graasp-dev-assets]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_iam_role_policy_attachment.enhanced_monitoring[0]: Refreshing state... [id=graasp-dev-rds-monitoring-role-20231009123438644600000004]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-maintenance_s3-bucket-ownership_1588A828 (graasp-dev-maintenance/s3-bucket-ownership): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-maintenance_s3-website-configuration_50149944 (graasp-dev-maintenance/s3-website-configuration): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  data.aws_iam_policy_document.graasp-dev-maintenance_allow_public_access_8F6F3848 (graasp-dev-maintenance/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-maintenance_allow_public_access_8F6F3848 (graasp-dev-maintenance/allow_public_access): Read complete after 0s [id=2448502661]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-maintenance_s3-block-public-access_C8FD87F8 (graasp-dev-maintenance/s3-block-public-access): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_s3_bucket_policy.graasp-dev-maintenance_s3-policy_DA8583B1 (graasp-dev-maintenance/s3-policy): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  module.vpc.aws_default_security_group.this[0]: Refreshing state... [id=sg-0fd249cba5ab4c742]
graasp-dev  module.vpc.aws_default_route_table.default[0]: Refreshing state... [id=rtb-0de0872c207e953b3]
graasp-dev  module.vpc.aws_default_network_acl.this[0]: Refreshing state... [id=acl-06ce6a79ac9494ac3]
graasp-dev  aws_security_group.graasp-dev-library-security-group (graasp-dev-library-security-group): Refreshing state... [id=sg-07bae39853af00427]
graasp-dev  aws_security_group.graasp-dev-postgres_graasp-dev-db-security-group_6A637215 (graasp-dev-postgres/graasp-dev-db-security-group): Refreshing state... [id=sg-009f5a0d494264c65]
graasp-dev  aws_security_group.graasp-dev-etherpad-security-group (graasp-dev-etherpad-security-group): Refreshing state... [id=sg-0ffb7f564703627af]
graasp-dev  aws_security_group.graasp-dev-iframely-security-group (graasp-dev-iframely-security-group): Refreshing state... [id=sg-0ca4813c62c9d17a3]
graasp-dev  aws_security_group.graasp-dev-backend-security-group (graasp-dev-backend-security-group): Refreshing state... [id=sg-014f1fd084973fd06]
graasp-dev  aws_security_group.graasp-dev-lb-security-group (graasp-dev-lb-security-group): Refreshing state... [id=sg-0f07f40e7da03b966]
graasp-dev  aws_security_group.graasp-dev-gatekeeper_graasp-dev-gatekeeper-security-group_92E8E7CC (graasp-dev-gatekeeper/graasp-dev-gatekeeper-security-group): Refreshing state... [id=sg-036836715bbca8a32]
graasp-dev  aws_security_group.graasp-dev-umami-security-group (graasp-dev-umami-security-group): Refreshing state... [id=sg-03d98ff7f2eb798fa]
graasp-dev  aws_security_group.graasp-dev-meilisearch-security-group (graasp-dev-meilisearch-security-group): Refreshing state... [id=sg-0b3ce2813b8775eba]
graasp-dev  aws_security_group.graasp-dev-redis-security-group (graasp-dev-redis-security-group): Refreshing state... [id=sg-0a7ebce0ecabcd895]
graasp-dev  aws_cloudfront_distribution.graasp-dev-assets-cloudfront (graasp-dev-assets-cloudfront): Refreshing state... [id=E1TTPMNH8QPMJP]
graasp-dev  module.vpc.aws_subnet.public[1]: Refreshing state... [id=subnet-055a0124ce88123b2]
graasp-dev  module.vpc.aws_subnet.public[2]: Refreshing state... [id=subnet-01f44d93731acccb7]
graasp-dev  module.vpc.aws_subnet.public[0]: Refreshing state... [id=subnet-0596b784e2da6e5c6]
graasp-dev  module.vpc.aws_route_table.public[0]: Refreshing state... [id=rtb-09991359fa2a53c1c]
graasp-dev  module.vpc.aws_internet_gateway.this[0]: Refreshing state... [id=igw-01955c8cc5f6d5181]
graasp-dev  data.aws_iam_policy_document.graasp-dev-h5p_allow_public_access_04C01E9A (graasp-dev-h5p/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-h5p_allow_public_access_04C01E9A (graasp-dev-h5p/allow_public_access): Read complete after 0s [id=1897348743]
graasp-dev  aws_s3_bucket_cors_configuration.graasp-dev-h5p_s3-cors-config_EC778FA8 (graasp-dev-h5p/s3-cors-config): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-h5p_s3-block-public-access_2D472005 (graasp-dev-h5p/s3-block-public-access): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-h5p_s3-website-configuration_5FB93898 (graasp-dev-h5p/s3-website-configuration): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-h5p_s3-bucket-ownership_418B795B (graasp-dev-h5p/s3-bucket-ownership): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-client_s3-bucket-ownership_7FA8E504 (graasp-dev-client/s3-bucket-ownership): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_cloudfront_distribution.graasp-dev-maintenance-cloudfront (graasp-dev-maintenance-cloudfront): Refreshing state... [id=EGBVR5KHBTMNX]
graasp-dev  data.aws_iam_policy_document.graasp-dev-client_allow_public_access_BCCA7882 (graasp-dev-client/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-client_allow_public_access_BCCA7882 (graasp-dev-client/allow_public_access): Read complete after 0s [id=3742575001]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-client_s3-website-configuration_A6D7BA4D (graasp-dev-client/s3-website-configuration): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-client_s3-block-public-access_A8DD5DF0 (graasp-dev-client/s3-block-public-access): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-apps_s3-block-public-access_05DA1D21 (graasp-dev-apps/s3-block-public-access): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-apps_s3-bucket-ownership_699CAAD9 (graasp-dev-apps/s3-bucket-ownership): Refreshing state... [id=graasp-dev-apps]
graasp-dev  data.aws_iam_policy_document.graasp-dev-apps_allow_public_access_9E010C09 (graasp-dev-apps/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-apps_allow_public_access_9E010C09 (graasp-dev-apps/allow_public_access): Read complete after 0s [id=4070198440]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-apps_s3-website-configuration_7E3F72D4 (graasp-dev-apps/s3-website-configuration): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-postgres_graasp-dev-db-allow-all_0D9DEE53 (graasp-dev-postgres/graasp-dev-db-allow-all): Refreshing state... [id=sgr-0199bcbb086d17111]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-library-allow-all (graasp-dev-library-allow-all): Refreshing state... [id=sgr-03cd64d6e8521413a]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-etherpad-allow-all (graasp-dev-etherpad-allow-all): Refreshing state... [id=sgr-06470ffe6a0df1219]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-etherpad_A95D382C (graasp-dev-postgres/graasp-dev-db-allow-etherpad): Refreshing state... [id=sgr-0ded857153724c35d]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-iframely-allow-all (graasp-dev-iframely-allow-all): Refreshing state... [id=sgr-03b6e652d0d98bb05]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-backend-allow-all (graasp-dev-backend-allow-all): Refreshing state... [id=sgr-0f70a895b80fd309e]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-graasp-backend_E8883EF3 (graasp-dev-postgres/graasp-dev-db-allow-graasp-backend): Refreshing state... [id=sgr-007f1bb79fc0de776]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-iframely-allow-graasp-backend (graasp-dev-iframely-allow-graasp-backend): Refreshing state... [id=sgr-0d4d4b4ffd0b49a87]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-etherpad-allow-load-balancer (graasp-dev-etherpad-allow-load-balancer): Refreshing state... [id=sgr-06e2e5786d9ade6fb]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-backend-allow-load-balancer (graasp-dev-backend-allow-load-balancer): Refreshing state... [id=sgr-0f1f4d5674dff4695]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-http-ipv6_91743348 (graasp-dev-load-balancer/allow-http-ipv6): Refreshing state... [id=sgr-084bba5f4b221f189]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-https_0223BC47 (graasp-dev-load-balancer/allow-https): Refreshing state... [id=sgr-0d7110664852fbdc7]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-http_0E987E63 (graasp-dev-load-balancer/allow-http): Refreshing state... [id=sgr-0dbd5cad25b6a1a87]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-library-allow-load-balancer (graasp-dev-library-allow-load-balancer): Refreshing state... [id=sgr-04e219db366df9a40]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-load-balancer_graasp-dev-allow-all_001EC5EB (graasp-dev-load-balancer/graasp-dev-allow-all): Refreshing state... [id=sgr-08d13e43e33fd5b5a]
            aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-https-ipv6_DC496355 (graasp-dev-load-balancer/allow-https-ipv6): Refreshing state... [id=sgr-023719db02da6a2a8]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-gatekeeper_graasp-dev-gatekeeper-allow-all_B66B414C (graasp-dev-gatekeeper/graasp-dev-gatekeeper-allow-all): Refreshing state... [id=sgr-042fe01dcb13dead6]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-allow-gatekeeper-on-postgres (graasp-dev-allow-gatekeeper-on-postgres): Refreshing state... [id=sgr-0058c3745753e6995]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-gatekeeper_graasp-dev-gatekeeper-allow-inbound-ssh_1B8A7117 (graasp-dev-gatekeeper/graasp-dev-gatekeeper/graasp-dev-gatekeeper-allow-inbound-ssh): Refreshing state... [id=sgr-0a51d11a638800750]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-umami-allow-all (graasp-dev-umami-allow-all): Refreshing state... [id=sgr-026fb931c3d9a2d33]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-umami-allow-load-balancer (graasp-dev-umami-allow-load-balancer): Refreshing state... [id=sgr-05a39a274de98821a]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-umami_425B5740 (graasp-dev-postgres/graasp-dev-db-allow-umami): Refreshing state... [id=sgr-063ed5e713152b283]
graasp-dev  aws_s3_bucket_policy.graasp-dev-h5p_s3-policy_9DB0282E (graasp-dev-h5p/s3-policy): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-meilisearch-allow-graasp-backend (graasp-dev-meilisearch-allow-graasp-backend): Refreshing state... [id=sgr-0d502c3895f05dc26]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-allow-gatekeeper-on-meilisearch (graasp-dev-allow-gatekeeper-on-meilisearch): Refreshing state... [id=sgr-0959c46cb81a9c68e]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-meilisearch-allow-all (graasp-dev-meilisearch-allow-all): Refreshing state... [id=sgr-0418d7a3309cc5d5e]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-redis-allow-all (graasp-dev-redis-allow-all): Refreshing state... [id=sgr-03673e2379ee73580]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-redis-allow-graasp-backend (graasp-dev-redis-allow-graasp-backend): Refreshing state... [id=sgr-08d29290d8638ef8f]
graasp-dev  aws_s3_bucket_policy.graasp-dev-client_s3-policy_71B89D07 (graasp-dev-client/s3-policy): Refreshing state... [id=graasp-dev-client]
graasp-dev  module.vpc.aws_route_table_association.public[2]: Refreshing state... [id=rtbassoc-0953114662597b70b]
graasp-dev  module.vpc.aws_route_table_association.public[0]: Refreshing state... [id=rtbassoc-0ba3fbc906b89068b]
graasp-dev  module.vpc.aws_route_table_association.public[1]: Refreshing state... [id=rtbassoc-065b7c3d10a5adb5f]
graasp-dev  module.vpc.aws_route.public_internet_gateway[0]: Refreshing state... [id=r-rtb-09991359fa2a53c1c1080289494]
graasp-dev  aws_s3_bucket_cors_configuration.graasp-dev-file-items_s3-cors-config_531774F3 (graasp-dev-file-items/s3-cors-config): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-file-items_s3-bucket-ownership_9BB45BB8 (graasp-dev-file-items/s3-bucket-ownership): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-file-items_s3-block-public-access_DD6519C0 (graasp-dev-file-items/s3-block-public-access): Refreshing state... [id=graasp-dev-file-items]
            aws_s3_bucket_policy.graasp-dev-apps_s3-policy_708B7B00 (graasp-dev-apps/s3-policy): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_cloudfront_distribution.graasp-dev-h5p-cloudfront (graasp-dev-h5p-cloudfront): Refreshing state... [id=E3B7XJV46O4VB4]
graasp-dev  aws_cloudfront_distribution.graasp-dev-client-cloudfront (graasp-dev-client-cloudfront): Refreshing state... [id=E1ZTGZST8787TH]
graasp-dev  aws_cloudfront_distribution.graasp-dev-apps-cloudfront (graasp-dev-apps-cloudfront): Refreshing state... [id=E354WPS1CZ652D]
graasp-dev  aws_ecs_service.graasp-dev_meilisearch-service_3A736F80 (graasp-dev/meilisearch-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/meilisearch]
graasp-dev  aws_ecs_service.graasp-dev_iframely-service_8F7B5C1F (graasp-dev/iframely-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/iframely]
graasp-dev  aws_lb.graasp-dev-load-balancer_lb_9A06B77C (graasp-dev-load-balancer/lb): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:loadbalancer/app/graasp-dev/2d9df8ffedc22275]
graasp-dev  aws_ecs_service.graasp-dev_redis-service_1DBE7C83 (graasp-dev/redis-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/redis]
graasp-dev  aws_instance.graasp-dev-gatekeeper_graasp-dev-gatekeeper-ec2_A55DD5DA (graasp-dev-gatekeeper/graasp-dev-gatekeeper/graasp-dev-gatekeeper-ec2): Refreshing state... [id=i-0fd04870b794c75b3]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_subnet_group.aws_db_subnet_group.this[0]: Refreshing state... [id=graasp-dev-20231009123833192500000015]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_db_instance.this[0]: Refreshing state... [id=db-3CNANXEZMD2SUYDRIDBIHT6F2M]
graasp-dev  aws_ecs_task_definition.graasp-dev_umami_88984772 (graasp-dev/umami): Refreshing state... [id=umami]
graasp-dev  aws_ecs_task_definition.graasp-dev_etherpad_D664EB2D (graasp-dev/etherpad): Refreshing state... [id=etherpad]
graasp-dev  aws_lb_listener.graasp-dev-load-balancer_lb-listener-http-redirect_309E2C64 (graasp-dev-load-balancer/lb-listener-http-redirect): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/9cc00852f3f90d6a]
graasp-dev  aws_lb_listener.graasp-dev-load-balancer_lb-listener-https_E069C227 (graasp-dev-load-balancer/lb-listener-https): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4]
graasp-dev  aws_lb_target_group.graasp-dev_etherpad-target-group_94F8091C (graasp-dev/etherpad-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/etherpad/69fe8f88d1211cfe]
graasp-dev  aws_lb_target_group.graasp-dev_graasp-library-target-group_47035354 (graasp-dev/graasp-library-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/graasp-library/1f502836d98e92e0]
            aws_lb_target_group.graasp-dev_umami-target-group_02AC6A93 (graasp-dev/umami-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/umami/eb6d060fc17e2e52]
graasp-dev  aws_lb_target_group.graasp-dev_graasp-target-group_7E05BC31 (graasp-dev/graasp-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/graasp/75b2cf400edd1909]
graasp-dev  aws_lb_listener_rule.graasp-dev_graasp-library-rule_AC381C09 (graasp-dev/graasp-library-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/47b6511ce97bab5a]
graasp-dev  aws_ecs_service.graasp-dev_graasp-library-service_35621E15 (graasp-dev/graasp-library-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp-library]
graasp-dev  aws_lb_listener_rule.graasp-dev_umami-rule_139819E3 (graasp-dev/umami-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/185c679fb423b689]
graasp-dev  aws_ecs_service.graasp-dev_umami-service_6A875906 (graasp-dev/umami-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/umami]
graasp-dev  aws_ecs_service.graasp-dev_etherpad-service_366B5CFC (graasp-dev/etherpad-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/etherpad]
graasp-dev  aws_lb_listener_rule.graasp-dev_etherpad-rule_74CA3679 (graasp-dev/etherpad-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/d95b5f32dc661338]
graasp-dev  aws_lb_listener_rule.graasp-dev_graasp-rule_8589AD50 (graasp-dev/graasp-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/5bba1be112990e2f]
graasp-dev  aws_ecs_service.graasp-dev_graasp-service_BD538BD2 (graasp-dev/graasp-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp]
graasp-dev  aws_appautoscaling_target.graasp-dev_graasp-library-service-autoscaling-target_5E0ABD4D (graasp-dev/graasp-library-service-autoscaling-target): Refreshing state... [id=service/graasp-dev/graasp-library]
graasp-dev  aws_appautoscaling_target.graasp-dev_graasp-service-autoscaling-target_517CCDCE (graasp-dev/graasp-service-autoscaling-target): Refreshing state... [id=service/graasp-dev/graasp]
graasp-dev  aws_appautoscaling_policy.graasp-dev_graasp-service-autoscaling-policy_70C429DA (graasp-dev/graasp-service-autoscaling-policy): Refreshing state... [id=graasp]
graasp-dev  aws_appautoscaling_policy.graasp-dev_graasp-library-service-autoscaling-policy_E718A88F (graasp-dev/graasp-library-service-autoscaling-policy): Refreshing state... [id=graasp-library]
graasp-dev  Terraform used the selected providers to generate the following execution
            plan. Resource actions are indicated with the following symbols:
              + create
              ~ update in-place
              - destroy

            Terraform will perform the following actions:

              # aws_cloudfront_distribution.graasp-dev-apps-cloudfront (graasp-dev-apps-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-apps-cloudfront" {
                    id                              = "E354WPS1CZ652D"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-assets-cloudfront (graasp-dev-assets-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-assets-cloudfront" {
                    id                              = "E1TTPMNH8QPMJP"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-client-cloudfront (graasp-dev-client-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-client-cloudfront" {
                    id                              = "E1ZTGZST8787TH"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-h5p-cloudfront (graasp-dev-h5p-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-h5p-cloudfront" {
                    id                              = "E3B7XJV46O4VB4"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_function.maintenance-check-function will be destroyed
              # (because aws_cloudfront_function.maintenance-check-function is not in configuration)
              - resource "aws_cloudfront_function" "maintenance-check-function" {
                  - arn             = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                  - code            = <<-EOT
                        exports.handler = async (event, context) => {
                          const headers = event.Records[0].cf.request.headers;
                          const headerName = 'x-maintenance-6oA6nStGidBOs0nyWSt9ZqLgbdXquA';
                          const headerSecret = 'dj0H0YsIawMGA55Ydc0HViJ4Zbwig3';
                          if (
                            headers[headerName] &&
                            headers[headerName][0].value === headerSecret
                          ) {
                            return event.Records[0].cf.request;
                          }

                          return {
                            status: '302',
                            statusDescription: 'Found',
                            headers: {
                              location: [
                                {
                                  key: 'Location',
                                  value: 'https://maintenance.graasp.org',
                                },
                              ],
                            },
                          };
                        };
                    EOT -> null
                  - etag            = "ETVPDKIKX0DER" -> null
                  - id              = "maintenance-check" -> null
                  - live_stage_etag = "ETVPDKIKX0DER" -> null
                  - name            = "maintenance-check" -> null
                  - publish         = true -> null
                  - runtime         = "cloudfront-js-2.0" -> null
                  - status          = "UNASSOCIATED" -> null
                    # (1 unchanged attribute hidden)
                }
graasp-dev  # aws_ecs_service.graasp-dev_etherpad-service_366B5CFC (graasp-dev/etherpad-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_etherpad-service_366B5CFC" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/etherpad"
                    name                               = "etherpad"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_graasp-library-service_35621E15 (graasp-dev/graasp-library-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_graasp-library-service_35621E15" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp-library"
                    name                               = "graasp-library"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_graasp-service_BD538BD2 (graasp-dev/graasp-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_graasp-service_BD538BD2" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp"
                    name                               = "graasp"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_iframely-service_8F7B5C1F (graasp-dev/iframely-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_iframely-service_8F7B5C1F" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/iframely"
                    name                               = "iframely"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (4 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_meilisearch-service_3A736F80 (graasp-dev/meilisearch-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_meilisearch-service_3A736F80" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/meilisearch"
                    name                               = "meilisearch"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (4 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_redis-service_1DBE7C83 (graasp-dev/redis-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_redis-service_1DBE7C83" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/redis"
                    name                               = "redis"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (4 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_umami-service_6A875906 (graasp-dev/umami-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_umami-service_6A875906" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/umami"
                    name                               = "umami"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-account_E8E1BF85 (graasp-dev-load-balancer/graasp-dev-account) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-account_E8E1BF85" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 11
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "dev.graasp.org"
                          + path        = "/account/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_301"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "account.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-analytics_431AD7A3 (graasp-dev-load-balancer/graasp-dev-analytics) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-analytics_431AD7A3" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 15
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "dev.graasp.org"
                          + path        = "/analytics/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_301"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "analytics.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-auth_E1CC888F (graasp-dev-load-balancer/graasp-dev-auth) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-auth_E1CC888F" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 12
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "dev.graasp.org"
                          + path        = "/auth/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_301"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "auth.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-builder_4D040462 (graasp-dev-load-balancer/graasp-dev-builder) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-builder_4D040462" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 14
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "dev.graasp.org"
                          + path        = "/builder/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_301"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "builder.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-player_6D261351 (graasp-dev-load-balancer/graasp-dev-player) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-player_6D261351" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 13
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "dev.graasp.org"
                          + path        = "/player/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_301"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "player.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-shortener_2A4B0FBC (graasp-dev-load-balancer/graasp-dev-shortener) will be created
              + resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-shortener_2A4B0FBC" {
                  + arn          = (known after apply)
                  + id           = (known after apply)
                  + listener_arn = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4"
                  + priority     = 10
                  + tags_all     = {
                      + "terraform-managed" = "true"
                    }

                  + action {
                      + order = (known after apply)
                      + type  = "redirect"

                      + redirect {
                          + host        = "api.dev.graasp.org"
                          + path        = "/items/short-links/#{path}"
                          + port        = "#{port}"
                          + protocol    = "HTTPS"
                          + query       = "#{query}"
                          + status_code = "HTTP_302"
                        }
                    }

                  + condition {
                      + host_header {
                          + values = [
                              + "go.dev.graasp.org",
                            ]
                        }
                    }
                }

              # aws_lb_listener_rule.graasp-dev_etherpad-rule_74CA3679 (graasp-dev/etherpad-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_etherpad-rule_74CA3679" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/d95b5f32dc661338"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_graasp-library-rule_AC381C09 (graasp-dev/graasp-library-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_graasp-library-rule_AC381C09" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/47b6511ce97bab5a"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_graasp-rule_8589AD50 (graasp-dev/graasp-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_graasp-rule_8589AD50" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/5bba1be112990e2f"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_umami-rule_139819E3 (graasp-dev/umami-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_umami-rule_139819E3" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/185c679fb423b689"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

            Plan: 6 to add, 15 to change, 1 to destroy.

            ─────────────────────────────────────────────────────────────────────────────

            Saved the plan to: plan

            To perform exactly these actions, run the following command to apply:
                terraform apply "plan"


```

</details>
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-25T13:26:52Z
body: <!-- terraform cdk action for options with hash 0d855fa9b0c377767ce986776c53ddef -->
### ✅ Successfully planned Terraform CDK Stack 'graasp-dev'



<details><summary>Show Plan</summary>

```shell
graasp-dev  Initializing the backend...
graasp-dev  Successfully configured the backend "s3"! Terraform will automatically
            use this backend unless the backend configuration changes.
graasp-dev  Initializing modules...
graasp-dev  Downloading registry.terraform.io/terraform-aws-modules/rds/aws 6.10.0 for graasp-dev-postgres_db_F1D5DB7A...
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_instance in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_instance
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_instance_role_association in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_instance_role_association
            - graasp-dev-postgres_db_F1D5DB7A.db_option_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_option_group
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_parameter_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_parameter_group
            - graasp-dev-postgres_db_F1D5DB7A.db_subnet_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_subnet_group
graasp-dev  Downloading registry.terraform.io/terraform-aws-modules/vpc/aws 5.19.0 for vpc...
graasp-dev  - vpc in .terraform/modules/vpc
graasp-dev  Initializing provider plugins...
graasp-dev  - Finding hashicorp/aws versions matching ">= 5.59.0, >= 5.62.0, >= 5.79.0, 5.91.0"...
graasp-dev  - Finding hashicorp/random versions matching ">= 3.1.0"...
graasp-dev  - Installing hashicorp/aws v5.91.0...
graasp-dev  - Installed hashicorp/aws v5.91.0 (signed by HashiCorp)
graasp-dev  - Installing hashicorp/random v3.7.1...
graasp-dev  - Installed hashicorp/random v3.7.1 (signed by HashiCorp)
            Terraform has created a lock file .terraform.lock.hcl to record the provider
            selections it made above. Include this file in your version control repository
            so that Terraform can guarantee to make the same selections by default when
            you run "terraform init" in the future.
graasp-dev  Terraform has been successfully initialized!

            You may now begin working with Terraform. Try running "terraform plan" to see
            any changes that are required for your infrastructure. All Terraform commands
            should now work.

            If you ever set or change modules or backend configuration for Terraform,
            rerun this command to reinitialize your working directory. If you forget, other
            commands will detect it and remind you to do so if necessary.
graasp-dev  - Fetching hashicorp/aws 5.91.0 for linux_amd64...
graasp-dev  - Retrieved hashicorp/aws 5.91.0 for linux_amd64 (signed by HashiCorp)
graasp-dev  - Fetching hashicorp/random 3.7.1 for linux_amd64...
graasp-dev  - Retrieved hashicorp/random 3.7.1 for linux_amd64 (signed by HashiCorp)
            - Obtained hashicorp/aws checksums for linux_amd64; All checksums for this platform were already tracked in the lock file
            - Obtained hashicorp/random checksums for linux_amd64; All checksums for this platform were already tracked in the lock file
graasp-dev  Success! Terraform has validated the lock file and found no need for changes.
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.random_id.snapshot_identifier[0]: Refreshing state... [id=SHBibw]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert): Reading...
graasp-dev  data.aws_ecr_repository.graasp-dev-explore-ecr (graasp-dev-explore-ecr): Reading...
            aws_cloudwatch_log_group.graasp-dev_etherpad-loggroup_200385B4 (graasp-dev/etherpad-loggroup): Refreshing state... [id=/ecs/etherpad]
            module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_partition.current: Reading...
            module.graasp-dev-postgres_db_F1D5DB7A.module.db_parameter_group.aws_db_parameter_group.this[0]: Refreshing state... [id=graasp-postgres15-20231009123434812500000001]
graasp-dev  aws_s3_bucket.graasp-dev-assets_bucket_8930785E (graasp-dev-assets/bucket): Refreshing state... [id=graasp-dev-assets]
            module.vpc.aws_vpc.this[0]: Refreshing state... [id=vpc-0b312f17d2e08cb6e]
            aws_cloudwatch_log_group.graasp-dev_redis-loggroup_AFE7CB87 (graasp-dev/redis-loggroup): Refreshing state... [id=/ecs/redis]
            module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_partition.current: Read complete after 0s [id=aws]
            aws_cloudfront_function.maintenance-check-function: Refreshing state... [id=maintenance-check]
            aws_cloudwatch_log_group.graasp-dev_meilisearch-loggroup_F1AD2775 (graasp-dev/meilisearch-loggroup): Refreshing state... [id=/ecs/meilisearch]
            aws_cloudwatch_log_group.graasp-dev_umami-loggroup_544115BF (graasp-dev/umami-loggroup): Refreshing state... [id=/ecs/umami]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert): Read complete after 1s [id=arn:aws:acm:us-east-1:299720865162:certificate/46cb9d1f-aea8-42de-8232-a5b83f1cc7e2]
graasp-dev  aws_iam_role.graasp-dev_ecs-execution-role_A4D135E8 (graasp-dev/ecs-execution-role): Refreshing state... [id=graasp-dev-ecs-execution-role]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_graasp-loggroup_44ECC8C2 (graasp-dev/graasp-loggroup): Refreshing state... [id=/ecs/graasp]
graasp-dev  aws_ecs_cluster.cluster (cluster): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:cluster/graasp-dev]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_graasp-library-loggroup_FD22B99E (graasp-dev/graasp-library-loggroup): Refreshing state... [id=/ecs/graasp-library]
            aws_s3_bucket.graasp-dev-apps_bucket_F4170225 (graasp-dev-apps/bucket): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_rds_instance_state.graasp-dev-postgres_graasp-dev-instance-state_D3812C30 (graasp-dev-postgres/graasp-dev-instance-state): Refreshing state...
            aws_s3_bucket.graasp-dev-maintenance_bucket_46B8FAD7 (graasp-dev-maintenance/bucket): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  data.aws_ecr_repository.graasp-dev-explore-ecr (graasp-dev-explore-ecr): Read complete after 1s [id=graasp/explore]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert)-lb: Reading...
graasp-dev  aws_s3_bucket.graasp-dev-file-items_bucket_12606B30 (graasp-dev-file-items/bucket): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket.graasp-dev-h5p_bucket_B545A43B (graasp-dev-h5p/bucket): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_service_discovery_http_namespace.graasp-dev_namespace_B6F7BA2C (graasp-dev/namespace): Refreshing state... [id=ns-us3rov3ukfoth5ox]
graasp-dev  data.aws_ecr_repository.graasp-dev-ecr (graasp-dev-ecr): Reading...
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_iam_policy_document.enhanced_monitoring: Reading...
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_iam_policy_document.enhanced_monitoring: Read complete after 0s [id=76086537]
            data.aws_ecr_repository.graasp-dev-etherpad-ecr (graasp-dev-etherpad-ecr): Reading...
graasp-dev  aws_s3_bucket.graasp-dev-client_bucket_076446C5 (graasp-dev-client/bucket): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_iframely-loggroup_105420D9 (graasp-dev/iframely-loggroup): Refreshing state... [id=/ecs/iframely]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert)-lb: Read complete after 1s [id=arn:aws:acm:eu-central-1:299720865162:certificate/af9d071d-3aa1-4583-905d-ec1efd5515d3]
graasp-dev  aws_ecs_task_definition.graasp-dev_graasp-library_B38B90C0 (graasp-dev/graasp-library): Refreshing state... [id=graasp-library]
graasp-dev  data.aws_ecr_repository.graasp-dev-ecr (graasp-dev-ecr): Read complete after 1s [id=graasp]
graasp-dev  aws_iam_role_policy.graasp-dev_graasp-dev-ecs-execution-role-policies_D65DB830 (graasp-dev/graasp-dev-ecs-execution-role-policies): Refreshing state... [id=graasp-dev-ecs-execution-role:allow-ecr-pull]
graasp-dev  aws_ecs_task_definition.graasp-dev_iframely_4C5E8E3D (graasp-dev/iframely): Refreshing state... [id=iframely]
graasp-dev  aws_ecs_task_definition.graasp-dev_meilisearch_38A3D0B6 (graasp-dev/meilisearch): Refreshing state... [id=meilisearch]
graasp-dev  aws_ecs_task_definition.graasp-dev_graasp_54E40EB5 (graasp-dev/graasp): Refreshing state... [id=graasp]
graasp-dev  data.aws_ecr_repository.graasp-dev-etherpad-ecr (graasp-dev-etherpad-ecr): Read complete after 0s [id=graasp/etherpad]
graasp-dev  aws_ecs_task_definition.graasp-dev_redis_E9CE963D (graasp-dev/redis): Refreshing state... [id=redis]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_iam_role.enhanced_monitoring[0]: Refreshing state... [id=graasp-dev-rds-monitoring-role]
graasp-dev  module.vpc.aws_default_network_acl.this[0]: Refreshing state... [id=acl-06ce6a79ac9494ac3]
graasp-dev  module.vpc.aws_default_security_group.this[0]: Refreshing state... [id=sg-0fd249cba5ab4c742]
graasp-dev  module.vpc.aws_default_route_table.default[0]: Refreshing state... [id=rtb-0de0872c207e953b3]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-assets_s3-block-public-access_D15DF7EF (graasp-dev-assets/s3-block-public-access): Refreshing state... [id=graasp-dev-assets]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-assets_s3-website-configuration_6D1735B5 (graasp-dev-assets/s3-website-configuration): Refreshing state... [id=graasp-dev-assets]
graasp-dev  data.aws_iam_policy_document.graasp-dev-assets_allow_public_access_59580A32 (graasp-dev-assets/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-assets_allow_public_access_59580A32 (graasp-dev-assets/allow_public_access): Read complete after 0s [id=661570887]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-assets_s3-bucket-ownership_1BE1C46A (graasp-dev-assets/s3-bucket-ownership): Refreshing state... [id=graasp-dev-assets]
graasp-dev  aws_security_group.graasp-dev-meilisearch-security-group (graasp-dev-meilisearch-security-group): Refreshing state... [id=sg-0b3ce2813b8775eba]
graasp-dev  aws_security_group.graasp-dev-iframely-security-group (graasp-dev-iframely-security-group): Refreshing state... [id=sg-0ca4813c62c9d17a3]
graasp-dev  aws_security_group.graasp-dev-backend-security-group (graasp-dev-backend-security-group): Refreshing state... [id=sg-014f1fd084973fd06]
graasp-dev  aws_security_group.graasp-dev-redis-security-group (graasp-dev-redis-security-group): Refreshing state... [id=sg-0a7ebce0ecabcd895]
graasp-dev  aws_security_group.graasp-dev-gatekeeper_graasp-dev-gatekeeper-security-group_92E8E7CC (graasp-dev-gatekeeper/graasp-dev-gatekeeper-security-group): Refreshing state... [id=sg-036836715bbca8a32]
graasp-dev  aws_security_group.graasp-dev-etherpad-security-group (graasp-dev-etherpad-security-group): Refreshing state... [id=sg-0ffb7f564703627af]
graasp-dev  aws_security_group.graasp-dev-umami-security-group (graasp-dev-umami-security-group): Refreshing state... [id=sg-03d98ff7f2eb798fa]
graasp-dev  aws_security_group.graasp-dev-postgres_graasp-dev-db-security-group_6A637215 (graasp-dev-postgres/graasp-dev-db-security-group): Refreshing state... [id=sg-009f5a0d494264c65]
graasp-dev  aws_security_group.graasp-dev-library-security-group (graasp-dev-library-security-group): Refreshing state... [id=sg-07bae39853af00427]
graasp-dev  aws_security_group.graasp-dev-lb-security-group (graasp-dev-lb-security-group): Refreshing state... [id=sg-0f07f40e7da03b966]
graasp-dev  module.vpc.aws_route_table.public[0]: Refreshing state... [id=rtb-09991359fa2a53c1c]
graasp-dev  module.vpc.aws_internet_gateway.this[0]: Refreshing state... [id=igw-01955c8cc5f6d5181]
graasp-dev  module.vpc.aws_subnet.public[0]: Refreshing state... [id=subnet-0596b784e2da6e5c6]
            module.vpc.aws_subnet.public[1]: Refreshing state... [id=subnet-055a0124ce88123b2]
graasp-dev  module.vpc.aws_subnet.public[2]: Refreshing state... [id=subnet-01f44d93731acccb7]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_iam_role_policy_attachment.enhanced_monitoring[0]: Refreshing state... [id=graasp-dev-rds-monitoring-role-20231009123438644600000004]
graasp-dev  aws_s3_bucket_policy.graasp-dev-assets_s3-policy_B5DD3F7D (graasp-dev-assets/s3-policy): Refreshing state... [id=graasp-dev-assets]
graasp-dev  aws_cloudfront_distribution.graasp-dev-assets-cloudfront (graasp-dev-assets-cloudfront): Refreshing state... [id=E1TTPMNH8QPMJP]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-meilisearch-allow-all (graasp-dev-meilisearch-allow-all): Refreshing state... [id=sgr-0418d7a3309cc5d5e]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-apps_s3-bucket-ownership_699CAAD9 (graasp-dev-apps/s3-bucket-ownership): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-apps_s3-website-configuration_7E3F72D4 (graasp-dev-apps/s3-website-configuration): Refreshing state... [id=graasp-dev-apps]
graasp-dev  data.aws_iam_policy_document.graasp-dev-apps_allow_public_access_9E010C09 (graasp-dev-apps/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-apps_allow_public_access_9E010C09 (graasp-dev-apps/allow_public_access): Read complete after 0s [id=4070198440]
            aws_s3_bucket_public_access_block.graasp-dev-apps_s3-block-public-access_05DA1D21 (graasp-dev-apps/s3-block-public-access): Refreshing state... [id=graasp-dev-apps]
            aws_s3_bucket_ownership_controls.graasp-dev-maintenance_s3-bucket-ownership_1588A828 (graasp-dev-maintenance/s3-bucket-ownership): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  data.aws_iam_policy_document.graasp-dev-maintenance_allow_public_access_8F6F3848 (graasp-dev-maintenance/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-maintenance_allow_public_access_8F6F3848 (graasp-dev-maintenance/allow_public_access): Read complete after 0s [id=2448502661]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-maintenance_s3-website-configuration_50149944 (graasp-dev-maintenance/s3-website-configuration): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-maintenance_s3-block-public-access_C8FD87F8 (graasp-dev-maintenance/s3-block-public-access): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-iframely-allow-all (graasp-dev-iframely-allow-all): Refreshing state... [id=sgr-03b6e652d0d98bb05]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-iframely-allow-graasp-backend (graasp-dev-iframely-allow-graasp-backend): Refreshing state... [id=sgr-0d4d4b4ffd0b49a87]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-backend-allow-all (graasp-dev-backend-allow-all): Refreshing state... [id=sgr-0f70a895b80fd309e]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-meilisearch-allow-graasp-backend (graasp-dev-meilisearch-allow-graasp-backend): Refreshing state... [id=sgr-0d502c3895f05dc26]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-redis-allow-graasp-backend (graasp-dev-redis-allow-graasp-backend): Refreshing state... [id=sgr-08d29290d8638ef8f]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-redis-allow-all (graasp-dev-redis-allow-all): Refreshing state... [id=sgr-03673e2379ee73580]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-gatekeeper_graasp-dev-gatekeeper-allow-inbound-ssh_1B8A7117 (graasp-dev-gatekeeper/graasp-dev-gatekeeper/graasp-dev-gatekeeper-allow-inbound-ssh): Refreshing state... [id=sgr-0a51d11a638800750]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-allow-gatekeeper-on-meilisearch (graasp-dev-allow-gatekeeper-on-meilisearch): Refreshing state... [id=sgr-0959c46cb81a9c68e]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-gatekeeper_graasp-dev-gatekeeper-allow-all_B66B414C (graasp-dev-gatekeeper/graasp-dev-gatekeeper-allow-all): Refreshing state... [id=sgr-042fe01dcb13dead6]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-umami-allow-all (graasp-dev-umami-allow-all): Refreshing state... [id=sgr-026fb931c3d9a2d33]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-etherpad-allow-all (graasp-dev-etherpad-allow-all): Refreshing state... [id=sgr-06470ffe6a0df1219]
graasp-dev  aws_s3_bucket_cors_configuration.graasp-dev-file-items_s3-cors-config_531774F3 (graasp-dev-file-items/s3-cors-config): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-file-items_s3-block-public-access_DD6519C0 (graasp-dev-file-items/s3-block-public-access): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-file-items_s3-bucket-ownership_9BB45BB8 (graasp-dev-file-items/s3-bucket-ownership): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-etherpad_A95D382C (graasp-dev-postgres/graasp-dev-db-allow-etherpad): Refreshing state... [id=sgr-0ded857153724c35d]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-graasp-backend_E8883EF3 (graasp-dev-postgres/graasp-dev-db-allow-graasp-backend): Refreshing state... [id=sgr-007f1bb79fc0de776]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-postgres_graasp-dev-db-allow-all_0D9DEE53 (graasp-dev-postgres/graasp-dev-db-allow-all): Refreshing state... [id=sgr-0199bcbb086d17111]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-umami_425B5740 (graasp-dev-postgres/graasp-dev-db-allow-umami): Refreshing state... [id=sgr-063ed5e713152b283]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-allow-gatekeeper-on-postgres (graasp-dev-allow-gatekeeper-on-postgres): Refreshing state... [id=sgr-0058c3745753e6995]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-h5p_s3-bucket-ownership_418B795B (graasp-dev-h5p/s3-bucket-ownership): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-h5p_s3-block-public-access_2D472005 (graasp-dev-h5p/s3-block-public-access): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-h5p_s3-website-configuration_5FB93898 (graasp-dev-h5p/s3-website-configuration): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  data.aws_iam_policy_document.graasp-dev-h5p_allow_public_access_04C01E9A (graasp-dev-h5p/allow_public_access): Reading...
graasp-dev  aws_s3_bucket_cors_configuration.graasp-dev-h5p_s3-cors-config_EC778FA8 (graasp-dev-h5p/s3-cors-config): Refreshing state... [id=graasp-dev-h5p]
            data.aws_iam_policy_document.graasp-dev-h5p_allow_public_access_04C01E9A (graasp-dev-h5p/allow_public_access): Read complete after 0s [id=1897348743]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-library-allow-all (graasp-dev-library-allow-all): Refreshing state... [id=sgr-03cd64d6e8521413a]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-https-ipv6_DC496355 (graasp-dev-load-balancer/allow-https-ipv6): Refreshing state... [id=sgr-023719db02da6a2a8]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-etherpad-allow-load-balancer (graasp-dev-etherpad-allow-load-balancer): Refreshing state... [id=sgr-06e2e5786d9ade6fb]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-http-ipv6_91743348 (graasp-dev-load-balancer/allow-http-ipv6): Refreshing state... [id=sgr-084bba5f4b221f189]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-load-balancer_graasp-dev-allow-all_001EC5EB (graasp-dev-load-balancer/graasp-dev-allow-all): Refreshing state... [id=sgr-08d13e43e33fd5b5a]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-umami-allow-load-balancer (graasp-dev-umami-allow-load-balancer): Refreshing state... [id=sgr-05a39a274de98821a]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-backend-allow-load-balancer (graasp-dev-backend-allow-load-balancer): Refreshing state... [id=sgr-0f1f4d5674dff4695]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-library-allow-load-balancer (graasp-dev-library-allow-load-balancer): Refreshing state... [id=sgr-04e219db366df9a40]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-https_0223BC47 (graasp-dev-load-balancer/allow-https): Refreshing state... [id=sgr-0d7110664852fbdc7]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-http_0E987E63 (graasp-dev-load-balancer/allow-http): Refreshing state... [id=sgr-0dbd5cad25b6a1a87]
graasp-dev  module.vpc.aws_route.public_internet_gateway[0]: Refreshing state... [id=r-rtb-09991359fa2a53c1c1080289494]
graasp-dev  aws_s3_bucket_policy.graasp-dev-apps_s3-policy_708B7B00 (graasp-dev-apps/s3-policy): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_s3_bucket_policy.graasp-dev-maintenance_s3-policy_DA8583B1 (graasp-dev-maintenance/s3-policy): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  module.vpc.aws_route_table_association.public[0]: Refreshing state... [id=rtbassoc-0ba3fbc906b89068b]
graasp-dev  module.vpc.aws_route_table_association.public[1]: Refreshing state... [id=rtbassoc-065b7c3d10a5adb5f]
graasp-dev  module.vpc.aws_route_table_association.public[2]: Refreshing state... [id=rtbassoc-0953114662597b70b]
graasp-dev  data.aws_iam_policy_document.graasp-dev-client_allow_public_access_BCCA7882 (graasp-dev-client/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-client_allow_public_access_BCCA7882 (graasp-dev-client/allow_public_access): Read complete after 0s [id=3742575001]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-client_s3-bucket-ownership_7FA8E504 (graasp-dev-client/s3-bucket-ownership): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_cloudfront_distribution.graasp-dev-apps-cloudfront (graasp-dev-apps-cloudfront): Refreshing state... [id=E354WPS1CZ652D]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-client_s3-website-configuration_A6D7BA4D (graasp-dev-client/s3-website-configuration): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-client_s3-block-public-access_A8DD5DF0 (graasp-dev-client/s3-block-public-access): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_cloudfront_distribution.graasp-dev-maintenance-cloudfront (graasp-dev-maintenance-cloudfront): Refreshing state... [id=EGBVR5KHBTMNX]
graasp-dev  aws_s3_bucket_policy.graasp-dev-h5p_s3-policy_9DB0282E (graasp-dev-h5p/s3-policy): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_ecs_service.graasp-dev_redis-service_1DBE7C83 (graasp-dev/redis-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/redis]
graasp-dev  aws_ecs_service.graasp-dev_meilisearch-service_3A736F80 (graasp-dev/meilisearch-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/meilisearch]
graasp-dev  aws_lb.graasp-dev-load-balancer_lb_9A06B77C (graasp-dev-load-balancer/lb): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:loadbalancer/app/graasp-dev/2d9df8ffedc22275]
graasp-dev  aws_instance.graasp-dev-gatekeeper_graasp-dev-gatekeeper-ec2_A55DD5DA (graasp-dev-gatekeeper/graasp-dev-gatekeeper/graasp-dev-gatekeeper-ec2): Refreshing state... [id=i-0fd04870b794c75b3]
graasp-dev  aws_ecs_service.graasp-dev_iframely-service_8F7B5C1F (graasp-dev/iframely-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/iframely]
graasp-dev  aws_s3_bucket_policy.graasp-dev-client_s3-policy_71B89D07 (graasp-dev-client/s3-policy): Refreshing state... [id=graasp-dev-client]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_subnet_group.aws_db_subnet_group.this[0]: Refreshing state... [id=graasp-dev-20231009123833192500000015]
graasp-dev  aws_cloudfront_distribution.graasp-dev-h5p-cloudfront (graasp-dev-h5p-cloudfront): Refreshing state... [id=E3B7XJV46O4VB4]
graasp-dev  aws_cloudfront_distribution.graasp-dev-client-cloudfront (graasp-dev-client-cloudfront): Refreshing state... [id=E1ZTGZST8787TH]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_db_instance.this[0]: Refreshing state... [id=db-3CNANXEZMD2SUYDRIDBIHT6F2M]
graasp-dev  aws_ecs_task_definition.graasp-dev_umami_88984772 (graasp-dev/umami): Refreshing state... [id=umami]
graasp-dev  aws_ecs_task_definition.graasp-dev_etherpad_D664EB2D (graasp-dev/etherpad): Refreshing state... [id=etherpad]
graasp-dev  aws_lb_listener.graasp-dev-load-balancer_lb-listener-http-redirect_309E2C64 (graasp-dev-load-balancer/lb-listener-http-redirect): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/9cc00852f3f90d6a]
graasp-dev  aws_lb_listener.graasp-dev-load-balancer_lb-listener-https_E069C227 (graasp-dev-load-balancer/lb-listener-https): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4]
graasp-dev  aws_lb_target_group.graasp-dev_graasp-target-group_7E05BC31 (graasp-dev/graasp-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/graasp/75b2cf400edd1909]
            aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-player_6D261351 (graasp-dev-load-balancer/graasp-dev-player): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/617ffd86187ebe3e]
            aws_lb_target_group.graasp-dev_umami-target-group_02AC6A93 (graasp-dev/umami-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/umami/eb6d060fc17e2e52]
graasp-dev  aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-analytics_431AD7A3 (graasp-dev-load-balancer/graasp-dev-analytics): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/e9c555b8848a3ea8]
            aws_lb_target_group.graasp-dev_graasp-library-target-group_47035354 (graasp-dev/graasp-library-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/graasp-library/1f502836d98e92e0]
            aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-account_E8E1BF85 (graasp-dev-load-balancer/graasp-dev-account): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/7047635807922e71]
graasp-dev  aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-auth_E1CC888F (graasp-dev-load-balancer/graasp-dev-auth): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/0a2139fff741478b]
graasp-dev  aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-builder_4D040462 (graasp-dev-load-balancer/graasp-dev-builder): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/b4dbd2a5e0f69d57]
            aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-shortener_2A4B0FBC (graasp-dev-load-balancer/graasp-dev-shortener): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/df78a886adbeef6c]
graasp-dev  aws_lb_target_group.graasp-dev_etherpad-target-group_94F8091C (graasp-dev/etherpad-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/etherpad/69fe8f88d1211cfe]
graasp-dev  aws_lb_listener_rule.graasp-dev_graasp-library-rule_AC381C09 (graasp-dev/graasp-library-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/47b6511ce97bab5a]
graasp-dev  aws_ecs_service.graasp-dev_graasp-library-service_35621E15 (graasp-dev/graasp-library-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp-library]
graasp-dev  aws_lb_listener_rule.graasp-dev_graasp-rule_8589AD50 (graasp-dev/graasp-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/5bba1be112990e2f]
graasp-dev  aws_ecs_service.graasp-dev_graasp-service_BD538BD2 (graasp-dev/graasp-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp]
graasp-dev  aws_lb_listener_rule.graasp-dev_umami-rule_139819E3 (graasp-dev/umami-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/185c679fb423b689]
graasp-dev  aws_ecs_service.graasp-dev_umami-service_6A875906 (graasp-dev/umami-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/umami]
graasp-dev  aws_lb_listener_rule.graasp-dev_etherpad-rule_74CA3679 (graasp-dev/etherpad-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/d95b5f32dc661338]
graasp-dev  aws_ecs_service.graasp-dev_etherpad-service_366B5CFC (graasp-dev/etherpad-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/etherpad]
            aws_appautoscaling_target.graasp-dev_graasp-library-service-autoscaling-target_5E0ABD4D (graasp-dev/graasp-library-service-autoscaling-target): Refreshing state... [id=service/graasp-dev/graasp-library]
graasp-dev  aws_appautoscaling_target.graasp-dev_graasp-service-autoscaling-target_517CCDCE (graasp-dev/graasp-service-autoscaling-target): Refreshing state... [id=service/graasp-dev/graasp]
graasp-dev  aws_appautoscaling_policy.graasp-dev_graasp-library-service-autoscaling-policy_E718A88F (graasp-dev/graasp-library-service-autoscaling-policy): Refreshing state... [id=graasp-library]
graasp-dev  aws_appautoscaling_policy.graasp-dev_graasp-service-autoscaling-policy_70C429DA (graasp-dev/graasp-service-autoscaling-policy): Refreshing state... [id=graasp]
graasp-dev  Note: Objects have changed outside of Terraform

            Terraform detected the following changes made outside of Terraform since the
            last "terraform apply" which may have affected this plan:

              # module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_db_instance.this[0] has changed
              ~ resource "aws_db_instance" "this" {
                    id                                    = "db-3CNANXEZMD2SUYDRIDBIHT6F2M"
                  ~ status                                = "available" -> "stopped"
                    tags                                  = {}
                    # (72 unchanged attributes hidden)

                    # (1 unchanged block hidden)
                }


            Unless you have made equivalent changes to your configuration, or ignored the
            relevant attributes using ignore_changes, the following plan may include
            actions to undo or respond to these changes.

            ─────────────────────────────────────────────────────────────────────────────

            Terraform used the selected providers to generate the following execution
            plan. Resource actions are indicated with the following symbols:
              ~ update in-place
              - destroy

            Terraform will perform the following actions:

              # aws_cloudfront_distribution.graasp-dev-apps-cloudfront (graasp-dev-apps-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-apps-cloudfront" {
                    id                              = "E354WPS1CZ652D"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-assets-cloudfront (graasp-dev-assets-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-assets-cloudfront" {
                    id                              = "E1TTPMNH8QPMJP"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-client-cloudfront (graasp-dev-client-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-client-cloudfront" {
                    id                              = "E1ZTGZST8787TH"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-h5p-cloudfront (graasp-dev-h5p-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-h5p-cloudfront" {
                    id                              = "E3B7XJV46O4VB4"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_function.maintenance-check-function will be destroyed
              # (because aws_cloudfront_function.maintenance-check-function is not in configuration)
              - resource "aws_cloudfront_function" "maintenance-check-function" {
                  - arn                          = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                  - code                         = <<-EOT
                        function handler = (event) => {
                          const headers = event.request.headers;
                          const headerName = 'x-maintenance-6oA6nStGidBOs0nyWSt9ZqLgbdXquA';
                          const headerSecret = 'dj0H0YsIawMGA55Ydc0HViJ4Zbwig3';
                          if (
                            headers[headerName] &&
                            headers[headerName][0].value === headerSecret
                          ) {
                            return event.request;
                          }

                          return {
                            statusCode: 302,
                            statusDescription: 'Found',
                            headers: {
                              'location': {value: 'maintenance.dev.graasp.org'},
                            },
                          };
                        };
                    EOT -> null
                  - etag                         = "E3UN6WX5RRO2AG" -> null
                  - id                           = "maintenance-check" -> null
                  - key_value_store_associations = [] -> null
                  - live_stage_etag              = "E3UN6WX5RRO2AG" -> null
                  - name                         = "maintenance-check" -> null
                  - publish                      = true -> null
                  - runtime                      = "cloudfront-js-2.0" -> null
                  - status                       = "IN_PROGRESS" -> null
                    # (1 unchanged attribute hidden)
                }

              # aws_ecs_service.graasp-dev_etherpad-service_366B5CFC (graasp-dev/etherpad-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_etherpad-service_366B5CFC" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/etherpad"
                    name                               = "etherpad"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_graasp-library-service_35621E15 (graasp-dev/graasp-library-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_graasp-library-service_35621E15" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp-library"
                    name                               = "graasp-library"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_graasp-service_BD538BD2 (graasp-dev/graasp-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_graasp-service_BD538BD2" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp"
                    name                               = "graasp"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_iframely-service_8F7B5C1F (graasp-dev/iframely-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_iframely-service_8F7B5C1F" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/iframely"
                    name                               = "iframely"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (4 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_meilisearch-service_3A736F80 (graasp-dev/meilisearch-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_meilisearch-service_3A736F80" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/meilisearch"
                    name                               = "meilisearch"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (4 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_redis-service_1DBE7C83 (graasp-dev/redis-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_redis-service_1DBE7C83" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/redis"
                    name                               = "redis"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (4 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_umami-service_6A875906 (graasp-dev/umami-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_umami-service_6A875906" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/umami"
                    name                               = "umami"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-account_E8E1BF85 (graasp-dev-load-balancer/graasp-dev-account) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-account_E8E1BF85" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/7047635807922e71"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-analytics_431AD7A3 (graasp-dev-load-balancer/graasp-dev-analytics) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-analytics_431AD7A3" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/e9c555b8848a3ea8"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-auth_E1CC888F (graasp-dev-load-balancer/graasp-dev-auth) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-auth_E1CC888F" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/0a2139fff741478b"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-builder_4D040462 (graasp-dev-load-balancer/graasp-dev-builder) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-builder_4D040462" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/b4dbd2a5e0f69d57"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-player_6D261351 (graasp-dev-load-balancer/graasp-dev-player) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-player_6D261351" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/617ffd86187ebe3e"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-shortener_2A4B0FBC (graasp-dev-load-balancer/graasp-dev-shortener) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-shortener_2A4B0FBC" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/df78a886adbeef6c"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_etherpad-rule_74CA3679 (graasp-dev/etherpad-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_etherpad-rule_74CA3679" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/d95b5f32dc661338"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_graasp-library-rule_AC381C09 (graasp-dev/graasp-library-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_graasp-library-rule_AC381C09" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/47b6511ce97bab5a"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_graasp-rule_8589AD50 (graasp-dev/graasp-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_graasp-rule_8589AD50" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/5bba1be112990e2f"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_umami-rule_139819E3 (graasp-dev/umami-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_umami-rule_139819E3" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/185c679fb423b689"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_rds_instance_state.graasp-dev-postgres_graasp-dev-instance-state_D3812C30 (graasp-dev-postgres/graasp-dev-instance-state) will be updated in-place
              ~ resource "aws_rds_instance_state" "graasp-dev-postgres_graasp-dev-instance-state_D3812C30" {
                  ~ state      = "stopped" -> "available"
                    # (1 unchanged attribute hidden)
                }

            Plan: 0 to add, 22 to change, 1 to destroy.

            ─────────────────────────────────────────────────────────────────────────────

            Saved the plan to: plan

            To perform exactly these actions, run the following command to apply:
                terraform apply "plan"


```

</details>
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-25T13:33:08Z
body: <!-- terraform cdk action for options with hash 0d855fa9b0c377767ce986776c53ddef -->
### ✅ Successfully planned Terraform CDK Stack 'graasp-dev'



<details><summary>Show Plan</summary>

```shell
graasp-dev  Initializing the backend...
graasp-dev  Successfully configured the backend "s3"! Terraform will automatically
            use this backend unless the backend configuration changes.
graasp-dev  Initializing modules...
graasp-dev  Downloading registry.terraform.io/terraform-aws-modules/rds/aws 6.10.0 for graasp-dev-postgres_db_F1D5DB7A...
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_instance in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_instance
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_instance_role_association in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_instance_role_association
            - graasp-dev-postgres_db_F1D5DB7A.db_option_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_option_group
            - graasp-dev-postgres_db_F1D5DB7A.db_parameter_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_parameter_group
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_subnet_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_subnet_group
graasp-dev  Downloading registry.terraform.io/terraform-aws-modules/vpc/aws 5.19.0 for vpc...
graasp-dev  - vpc in .terraform/modules/vpc
graasp-dev  Initializing provider plugins...
            - Finding hashicorp/random versions matching ">= 3.1.0"...
graasp-dev  - Finding hashicorp/aws versions matching ">= 5.59.0, >= 5.62.0, >= 5.79.0, 5.91.0"...
graasp-dev  - Installing hashicorp/aws v5.91.0...
graasp-dev  - Installed hashicorp/aws v5.91.0 (signed by HashiCorp)
graasp-dev  - Installing hashicorp/random v3.7.1...
graasp-dev  - Installed hashicorp/random v3.7.1 (signed by HashiCorp)
            Terraform has created a lock file .terraform.lock.hcl to record the provider
            selections it made above. Include this file in your version control repository
            so that Terraform can guarantee to make the same selections by default when
            you run "terraform init" in the future.
graasp-dev  Terraform has been successfully initialized!

            You may now begin working with Terraform. Try running "terraform plan" to see
            any changes that are required for your infrastructure. All Terraform commands
            should now work.

            If you ever set or change modules or backend configuration for Terraform,
            rerun this command to reinitialize your working directory. If you forget, other
            commands will detect it and remind you to do so if necessary.
graasp-dev  - Fetching hashicorp/aws 5.91.0 for linux_amd64...
graasp-dev  - Retrieved hashicorp/aws 5.91.0 for linux_amd64 (signed by HashiCorp)
graasp-dev  - Fetching hashicorp/random 3.7.1 for linux_amd64...
graasp-dev  - Retrieved hashicorp/random 3.7.1 for linux_amd64 (signed by HashiCorp)
            - Obtained hashicorp/aws checksums for linux_amd64; All checksums for this platform were already tracked in the lock file
            - Obtained hashicorp/random checksums for linux_amd64; All checksums for this platform were already tracked in the lock file
graasp-dev  Success! Terraform has validated the lock file and found no need for changes.
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.random_id.snapshot_identifier[0]: Refreshing state... [id=SHBibw]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert): Reading...
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert): Read complete after 0s [id=arn:aws:acm:us-east-1:299720865162:certificate/46cb9d1f-aea8-42de-8232-a5b83f1cc7e2]
graasp-dev  data.aws_ecr_repository.graasp-dev-explore-ecr (graasp-dev-explore-ecr): Reading...
            module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_iam_policy_document.enhanced_monitoring: Reading...
            aws_cloudwatch_log_group.graasp-dev_umami-loggroup_544115BF (graasp-dev/umami-loggroup): Refreshing state... [id=/ecs/umami]
            aws_cloudwatch_log_group.graasp-dev_redis-loggroup_AFE7CB87 (graasp-dev/redis-loggroup): Refreshing state... [id=/ecs/redis]
            module.graasp-dev-postgres_db_F1D5DB7A.module.db_parameter_group.aws_db_parameter_group.this[0]: Refreshing state... [id=graasp-postgres15-20231009123434812500000001]
            aws_cloudwatch_log_group.graasp-dev_graasp-library-loggroup_FD22B99E (graasp-dev/graasp-library-loggroup): Refreshing state... [id=/ecs/graasp-library]
            aws_ecs_cluster.cluster (cluster): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:cluster/graasp-dev]
            aws_cloudwatch_log_group.graasp-dev_etherpad-loggroup_200385B4 (graasp-dev/etherpad-loggroup): Refreshing state... [id=/ecs/etherpad]
graasp-dev  aws_s3_bucket.graasp-dev-assets_bucket_8930785E (graasp-dev-assets/bucket): Refreshing state... [id=graasp-dev-assets]
            aws_cloudfront_function.maintenance-check-function: Refreshing state... [id=maintenance-check]
            module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_iam_policy_document.enhanced_monitoring: Read complete after 0s [id=76086537]
graasp-dev  aws_service_discovery_http_namespace.graasp-dev_namespace_B6F7BA2C (graasp-dev/namespace): Refreshing state... [id=ns-us3rov3ukfoth5ox]
graasp-dev  aws_s3_bucket.graasp-dev-h5p_bucket_B545A43B (graasp-dev-h5p/bucket): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket.graasp-dev-apps_bucket_F4170225 (graasp-dev-apps/bucket): Refreshing state... [id=graasp-dev-apps]
graasp-dev  module.vpc.aws_vpc.this[0]: Refreshing state... [id=vpc-0b312f17d2e08cb6e]
graasp-dev  data.aws_ecr_repository.graasp-dev-ecr (graasp-dev-ecr): Reading...
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert)-lb: Reading...
graasp-dev  aws_s3_bucket.graasp-dev-maintenance_bucket_46B8FAD7 (graasp-dev-maintenance/bucket): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  data.aws_ecr_repository.graasp-dev-etherpad-ecr (graasp-dev-etherpad-ecr): Reading...
graasp-dev  aws_iam_role.graasp-dev_ecs-execution-role_A4D135E8 (graasp-dev/ecs-execution-role): Refreshing state... [id=graasp-dev-ecs-execution-role]
graasp-dev  data.aws_ecr_repository.graasp-dev-explore-ecr (graasp-dev-explore-ecr): Read complete after 1s [id=graasp/explore]
            aws_cloudwatch_log_group.graasp-dev_iframely-loggroup_105420D9 (graasp-dev/iframely-loggroup): Refreshing state... [id=/ecs/iframely]
graasp-dev  data.aws_ecr_repository.graasp-dev-etherpad-ecr (graasp-dev-etherpad-ecr): Read complete after 1s [id=graasp/etherpad]
graasp-dev  aws_rds_instance_state.graasp-dev-postgres_graasp-dev-instance-state_D3812C30 (graasp-dev-postgres/graasp-dev-instance-state): Refreshing state...
graasp-dev  aws_cloudwatch_log_group.graasp-dev_graasp-loggroup_44ECC8C2 (graasp-dev/graasp-loggroup): Refreshing state... [id=/ecs/graasp]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_meilisearch-loggroup_F1AD2775 (graasp-dev/meilisearch-loggroup): Refreshing state... [id=/ecs/meilisearch]
graasp-dev  data.aws_ecr_repository.graasp-dev-ecr (graasp-dev-ecr): Read complete after 1s [id=graasp]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_partition.current: Reading...
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_partition.current: Read complete after 0s [id=aws]
graasp-dev  aws_s3_bucket.graasp-dev-client_bucket_076446C5 (graasp-dev-client/bucket): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket.graasp-dev-file-items_bucket_12606B30 (graasp-dev-file-items/bucket): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_iam_role.enhanced_monitoring[0]: Refreshing state... [id=graasp-dev-rds-monitoring-role]
graasp-dev  aws_ecs_task_definition.graasp-dev_iframely_4C5E8E3D (graasp-dev/iframely): Refreshing state... [id=iframely]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert)-lb: Read complete after 1s [id=arn:aws:acm:eu-central-1:299720865162:certificate/af9d071d-3aa1-4583-905d-ec1efd5515d3]
graasp-dev  aws_ecs_task_definition.graasp-dev_graasp_54E40EB5 (graasp-dev/graasp): Refreshing state... [id=graasp]
graasp-dev  aws_ecs_task_definition.graasp-dev_meilisearch_38A3D0B6 (graasp-dev/meilisearch): Refreshing state... [id=meilisearch]
graasp-dev  aws_iam_role_policy.graasp-dev_graasp-dev-ecs-execution-role-policies_D65DB830 (graasp-dev/graasp-dev-ecs-execution-role-policies): Refreshing state... [id=graasp-dev-ecs-execution-role:allow-ecr-pull]
graasp-dev  aws_ecs_task_definition.graasp-dev_graasp-library_B38B90C0 (graasp-dev/graasp-library): Refreshing state... [id=graasp-library]
graasp-dev  aws_ecs_task_definition.graasp-dev_redis_E9CE963D (graasp-dev/redis): Refreshing state... [id=redis]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_iam_role_policy_attachment.enhanced_monitoring[0]: Refreshing state... [id=graasp-dev-rds-monitoring-role-20231009123438644600000004]
graasp-dev  data.aws_iam_policy_document.graasp-dev-assets_allow_public_access_59580A32 (graasp-dev-assets/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-assets_allow_public_access_59580A32 (graasp-dev-assets/allow_public_access): Read complete after 0s [id=661570887]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-assets_s3-block-public-access_D15DF7EF (graasp-dev-assets/s3-block-public-access): Refreshing state... [id=graasp-dev-assets]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-assets_s3-website-configuration_6D1735B5 (graasp-dev-assets/s3-website-configuration): Refreshing state... [id=graasp-dev-assets]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-assets_s3-bucket-ownership_1BE1C46A (graasp-dev-assets/s3-bucket-ownership): Refreshing state... [id=graasp-dev-assets]
graasp-dev  aws_s3_bucket_policy.graasp-dev-assets_s3-policy_B5DD3F7D (graasp-dev-assets/s3-policy): Refreshing state... [id=graasp-dev-assets]
graasp-dev  module.vpc.aws_default_security_group.this[0]: Refreshing state... [id=sg-0fd249cba5ab4c742]
graasp-dev  module.vpc.aws_default_network_acl.this[0]: Refreshing state... [id=acl-06ce6a79ac9494ac3]
graasp-dev  module.vpc.aws_default_route_table.default[0]: Refreshing state... [id=rtb-0de0872c207e953b3]
graasp-dev  aws_security_group.graasp-dev-meilisearch-security-group (graasp-dev-meilisearch-security-group): Refreshing state... [id=sg-0b3ce2813b8775eba]
graasp-dev  aws_security_group.graasp-dev-redis-security-group (graasp-dev-redis-security-group): Refreshing state... [id=sg-0a7ebce0ecabcd895]
graasp-dev  aws_security_group.graasp-dev-etherpad-security-group (graasp-dev-etherpad-security-group): Refreshing state... [id=sg-0ffb7f564703627af]
graasp-dev  aws_security_group.graasp-dev-postgres_graasp-dev-db-security-group_6A637215 (graasp-dev-postgres/graasp-dev-db-security-group): Refreshing state... [id=sg-009f5a0d494264c65]
graasp-dev  aws_security_group.graasp-dev-library-security-group (graasp-dev-library-security-group): Refreshing state... [id=sg-07bae39853af00427]
graasp-dev  aws_security_group.graasp-dev-backend-security-group (graasp-dev-backend-security-group): Refreshing state... [id=sg-014f1fd084973fd06]
graasp-dev  aws_security_group.graasp-dev-iframely-security-group (graasp-dev-iframely-security-group): Refreshing state... [id=sg-0ca4813c62c9d17a3]
graasp-dev  aws_security_group.graasp-dev-gatekeeper_graasp-dev-gatekeeper-security-group_92E8E7CC (graasp-dev-gatekeeper/graasp-dev-gatekeeper-security-group): Refreshing state... [id=sg-036836715bbca8a32]
graasp-dev  aws_security_group.graasp-dev-lb-security-group (graasp-dev-lb-security-group): Refreshing state... [id=sg-0f07f40e7da03b966]
graasp-dev  aws_security_group.graasp-dev-umami-security-group (graasp-dev-umami-security-group): Refreshing state... [id=sg-03d98ff7f2eb798fa]
graasp-dev  module.vpc.aws_route_table.public[0]: Refreshing state... [id=rtb-09991359fa2a53c1c]
graasp-dev  module.vpc.aws_internet_gateway.this[0]: Refreshing state... [id=igw-01955c8cc5f6d5181]
graasp-dev  module.vpc.aws_subnet.public[1]: Refreshing state... [id=subnet-055a0124ce88123b2]
graasp-dev  module.vpc.aws_subnet.public[2]: Refreshing state... [id=subnet-01f44d93731acccb7]
graasp-dev  module.vpc.aws_subnet.public[0]: Refreshing state... [id=subnet-0596b784e2da6e5c6]
graasp-dev  aws_cloudfront_distribution.graasp-dev-assets-cloudfront (graasp-dev-assets-cloudfront): Refreshing state... [id=E1TTPMNH8QPMJP]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-h5p_s3-website-configuration_5FB93898 (graasp-dev-h5p/s3-website-configuration): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  data.aws_iam_policy_document.graasp-dev-h5p_allow_public_access_04C01E9A (graasp-dev-h5p/allow_public_access): Reading...
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-h5p_s3-bucket-ownership_418B795B (graasp-dev-h5p/s3-bucket-ownership): Refreshing state... [id=graasp-dev-h5p]
            data.aws_iam_policy_document.graasp-dev-h5p_allow_public_access_04C01E9A (graasp-dev-h5p/allow_public_access): Read complete after 0s [id=1897348743]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-h5p_s3-block-public-access_2D472005 (graasp-dev-h5p/s3-block-public-access): Refreshing state... [id=graasp-dev-h5p]
            aws_s3_bucket_cors_configuration.graasp-dev-h5p_s3-cors-config_EC778FA8 (graasp-dev-h5p/s3-cors-config): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-apps_s3-bucket-ownership_699CAAD9 (graasp-dev-apps/s3-bucket-ownership): Refreshing state... [id=graasp-dev-apps]
graasp-dev  data.aws_iam_policy_document.graasp-dev-apps_allow_public_access_9E010C09 (graasp-dev-apps/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-apps_allow_public_access_9E010C09 (graasp-dev-apps/allow_public_access): Read complete after 0s [id=4070198440]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-apps_s3-website-configuration_7E3F72D4 (graasp-dev-apps/s3-website-configuration): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-apps_s3-block-public-access_05DA1D21 (graasp-dev-apps/s3-block-public-access): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-maintenance_s3-website-configuration_50149944 (graasp-dev-maintenance/s3-website-configuration): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  data.aws_iam_policy_document.graasp-dev-maintenance_allow_public_access_8F6F3848 (graasp-dev-maintenance/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-maintenance_allow_public_access_8F6F3848 (graasp-dev-maintenance/allow_public_access): Read complete after 0s [id=2448502661]
            aws_s3_bucket_ownership_controls.graasp-dev-maintenance_s3-bucket-ownership_1588A828 (graasp-dev-maintenance/s3-bucket-ownership): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-maintenance_s3-block-public-access_C8FD87F8 (graasp-dev-maintenance/s3-block-public-access): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-meilisearch-allow-all (graasp-dev-meilisearch-allow-all): Refreshing state... [id=sgr-0418d7a3309cc5d5e]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-redis-allow-all (graasp-dev-redis-allow-all): Refreshing state... [id=sgr-03673e2379ee73580]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-postgres_graasp-dev-db-allow-all_0D9DEE53 (graasp-dev-postgres/graasp-dev-db-allow-all): Refreshing state... [id=sgr-0199bcbb086d17111]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-etherpad-allow-all (graasp-dev-etherpad-allow-all): Refreshing state... [id=sgr-06470ffe6a0df1219]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-etherpad_A95D382C (graasp-dev-postgres/graasp-dev-db-allow-etherpad): Refreshing state... [id=sgr-0ded857153724c35d]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-graasp-backend_E8883EF3 (graasp-dev-postgres/graasp-dev-db-allow-graasp-backend): Refreshing state... [id=sgr-007f1bb79fc0de776]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-meilisearch-allow-graasp-backend (graasp-dev-meilisearch-allow-graasp-backend): Refreshing state... [id=sgr-0d502c3895f05dc26]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-redis-allow-graasp-backend (graasp-dev-redis-allow-graasp-backend): Refreshing state... [id=sgr-08d29290d8638ef8f]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-backend-allow-all (graasp-dev-backend-allow-all): Refreshing state... [id=sgr-0f70a895b80fd309e]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-library-allow-all (graasp-dev-library-allow-all): Refreshing state... [id=sgr-03cd64d6e8521413a]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-iframely-allow-all (graasp-dev-iframely-allow-all): Refreshing state... [id=sgr-03b6e652d0d98bb05]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-allow-gatekeeper-on-meilisearch (graasp-dev-allow-gatekeeper-on-meilisearch): Refreshing state... [id=sgr-0959c46cb81a9c68e]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-iframely-allow-graasp-backend (graasp-dev-iframely-allow-graasp-backend): Refreshing state... [id=sgr-0d4d4b4ffd0b49a87]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-gatekeeper_graasp-dev-gatekeeper-allow-inbound-ssh_1B8A7117 (graasp-dev-gatekeeper/graasp-dev-gatekeeper/graasp-dev-gatekeeper-allow-inbound-ssh): Refreshing state... [id=sgr-0a51d11a638800750]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-gatekeeper_graasp-dev-gatekeeper-allow-all_B66B414C (graasp-dev-gatekeeper/graasp-dev-gatekeeper-allow-all): Refreshing state... [id=sgr-042fe01dcb13dead6]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-allow-gatekeeper-on-postgres (graasp-dev-allow-gatekeeper-on-postgres): Refreshing state... [id=sgr-0058c3745753e6995]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-load-balancer_graasp-dev-allow-all_001EC5EB (graasp-dev-load-balancer/graasp-dev-allow-all): Refreshing state... [id=sgr-08d13e43e33fd5b5a]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-library-allow-load-balancer (graasp-dev-library-allow-load-balancer): Refreshing state... [id=sgr-04e219db366df9a40]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-backend-allow-load-balancer (graasp-dev-backend-allow-load-balancer): Refreshing state... [id=sgr-0f1f4d5674dff4695]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-etherpad-allow-load-balancer (graasp-dev-etherpad-allow-load-balancer): Refreshing state... [id=sgr-06e2e5786d9ade6fb]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-http_0E987E63 (graasp-dev-load-balancer/allow-http): Refreshing state... [id=sgr-0dbd5cad25b6a1a87]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-https-ipv6_DC496355 (graasp-dev-load-balancer/allow-https-ipv6): Refreshing state... [id=sgr-023719db02da6a2a8]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-http-ipv6_91743348 (graasp-dev-load-balancer/allow-http-ipv6): Refreshing state... [id=sgr-084bba5f4b221f189]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-https_0223BC47 (graasp-dev-load-balancer/allow-https): Refreshing state... [id=sgr-0d7110664852fbdc7]
graasp-dev  module.vpc.aws_route.public_internet_gateway[0]: Refreshing state... [id=r-rtb-09991359fa2a53c1c1080289494]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-umami-allow-all (graasp-dev-umami-allow-all): Refreshing state... [id=sgr-026fb931c3d9a2d33]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-umami-allow-load-balancer (graasp-dev-umami-allow-load-balancer): Refreshing state... [id=sgr-05a39a274de98821a]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-umami_425B5740 (graasp-dev-postgres/graasp-dev-db-allow-umami): Refreshing state... [id=sgr-063ed5e713152b283]
graasp-dev  aws_s3_bucket_policy.graasp-dev-h5p_s3-policy_9DB0282E (graasp-dev-h5p/s3-policy): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_policy.graasp-dev-apps_s3-policy_708B7B00 (graasp-dev-apps/s3-policy): Refreshing state... [id=graasp-dev-apps]
graasp-dev  module.vpc.aws_route_table_association.public[0]: Refreshing state... [id=rtbassoc-0ba3fbc906b89068b]
graasp-dev  module.vpc.aws_route_table_association.public[1]: Refreshing state... [id=rtbassoc-065b7c3d10a5adb5f]
graasp-dev  module.vpc.aws_route_table_association.public[2]: Refreshing state... [id=rtbassoc-0953114662597b70b]
graasp-dev  data.aws_iam_policy_document.graasp-dev-client_allow_public_access_BCCA7882 (graasp-dev-client/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-client_allow_public_access_BCCA7882 (graasp-dev-client/allow_public_access): Read complete after 0s [id=3742575001]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-client_s3-block-public-access_A8DD5DF0 (graasp-dev-client/s3-block-public-access): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-client_s3-bucket-ownership_7FA8E504 (graasp-dev-client/s3-bucket-ownership): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-client_s3-website-configuration_A6D7BA4D (graasp-dev-client/s3-website-configuration): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_policy.graasp-dev-maintenance_s3-policy_DA8583B1 (graasp-dev-maintenance/s3-policy): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-file-items_s3-block-public-access_DD6519C0 (graasp-dev-file-items/s3-block-public-access): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-file-items_s3-bucket-ownership_9BB45BB8 (graasp-dev-file-items/s3-bucket-ownership): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_cors_configuration.graasp-dev-file-items_s3-cors-config_531774F3 (graasp-dev-file-items/s3-cors-config): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_cloudfront_distribution.graasp-dev-h5p-cloudfront (graasp-dev-h5p-cloudfront): Refreshing state... [id=E3B7XJV46O4VB4]
graasp-dev  aws_cloudfront_distribution.graasp-dev-maintenance-cloudfront (graasp-dev-maintenance-cloudfront): Refreshing state... [id=EGBVR5KHBTMNX]
graasp-dev  aws_cloudfront_distribution.graasp-dev-apps-cloudfront (graasp-dev-apps-cloudfront): Refreshing state... [id=E354WPS1CZ652D]
            aws_ecs_service.graasp-dev_meilisearch-service_3A736F80 (graasp-dev/meilisearch-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/meilisearch]
graasp-dev  aws_ecs_service.graasp-dev_redis-service_1DBE7C83 (graasp-dev/redis-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/redis]
graasp-dev  aws_instance.graasp-dev-gatekeeper_graasp-dev-gatekeeper-ec2_A55DD5DA (graasp-dev-gatekeeper/graasp-dev-gatekeeper/graasp-dev-gatekeeper-ec2): Refreshing state... [id=i-0fd04870b794c75b3]
graasp-dev  aws_ecs_service.graasp-dev_iframely-service_8F7B5C1F (graasp-dev/iframely-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/iframely]
graasp-dev  aws_lb.graasp-dev-load-balancer_lb_9A06B77C (graasp-dev-load-balancer/lb): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:loadbalancer/app/graasp-dev/2d9df8ffedc22275]
graasp-dev  aws_s3_bucket_policy.graasp-dev-client_s3-policy_71B89D07 (graasp-dev-client/s3-policy): Refreshing state... [id=graasp-dev-client]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_subnet_group.aws_db_subnet_group.this[0]: Refreshing state... [id=graasp-dev-20231009123833192500000015]
graasp-dev  aws_cloudfront_distribution.graasp-dev-client-cloudfront (graasp-dev-client-cloudfront): Refreshing state... [id=E1ZTGZST8787TH]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_db_instance.this[0]: Refreshing state... [id=db-3CNANXEZMD2SUYDRIDBIHT6F2M]
graasp-dev  aws_ecs_task_definition.graasp-dev_etherpad_D664EB2D (graasp-dev/etherpad): Refreshing state... [id=etherpad]
graasp-dev  aws_ecs_task_definition.graasp-dev_umami_88984772 (graasp-dev/umami): Refreshing state... [id=umami]
graasp-dev  aws_lb_listener.graasp-dev-load-balancer_lb-listener-http-redirect_309E2C64 (graasp-dev-load-balancer/lb-listener-http-redirect): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/9cc00852f3f90d6a]
graasp-dev  aws_lb_listener.graasp-dev-load-balancer_lb-listener-https_E069C227 (graasp-dev-load-balancer/lb-listener-https): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4]
graasp-dev  aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-shortener_2A4B0FBC (graasp-dev-load-balancer/graasp-dev-shortener): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/df78a886adbeef6c]
            aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-player_6D261351 (graasp-dev-load-balancer/graasp-dev-player): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/617ffd86187ebe3e]
            aws_lb_target_group.graasp-dev_umami-target-group_02AC6A93 (graasp-dev/umami-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/umami/eb6d060fc17e2e52]
graasp-dev  aws_lb_target_group.graasp-dev_etherpad-target-group_94F8091C (graasp-dev/etherpad-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/etherpad/69fe8f88d1211cfe]
            aws_lb_target_group.graasp-dev_graasp-library-target-group_47035354 (graasp-dev/graasp-library-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/graasp-library/1f502836d98e92e0]
            aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-auth_E1CC888F (graasp-dev-load-balancer/graasp-dev-auth): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/0a2139fff741478b]
            aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-account_E8E1BF85 (graasp-dev-load-balancer/graasp-dev-account): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/7047635807922e71]
            aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-analytics_431AD7A3 (graasp-dev-load-balancer/graasp-dev-analytics): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/e9c555b8848a3ea8]
            aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-builder_4D040462 (graasp-dev-load-balancer/graasp-dev-builder): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/b4dbd2a5e0f69d57]
graasp-dev  aws_lb_target_group.graasp-dev_graasp-target-group_7E05BC31 (graasp-dev/graasp-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/graasp/75b2cf400edd1909]
graasp-dev  aws_lb_listener_rule.graasp-dev_umami-rule_139819E3 (graasp-dev/umami-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/185c679fb423b689]
graasp-dev  aws_ecs_service.graasp-dev_umami-service_6A875906 (graasp-dev/umami-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/umami]
graasp-dev  aws_lb_listener_rule.graasp-dev_etherpad-rule_74CA3679 (graasp-dev/etherpad-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/d95b5f32dc661338]
graasp-dev  aws_ecs_service.graasp-dev_etherpad-service_366B5CFC (graasp-dev/etherpad-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/etherpad]
graasp-dev  aws_lb_listener_rule.graasp-dev_graasp-library-rule_AC381C09 (graasp-dev/graasp-library-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/47b6511ce97bab5a]
graasp-dev  aws_ecs_service.graasp-dev_graasp-library-service_35621E15 (graasp-dev/graasp-library-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp-library]
graasp-dev  aws_lb_listener_rule.graasp-dev_graasp-rule_8589AD50 (graasp-dev/graasp-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/5bba1be112990e2f]
graasp-dev  aws_ecs_service.graasp-dev_graasp-service_BD538BD2 (graasp-dev/graasp-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp]
graasp-dev  aws_appautoscaling_target.graasp-dev_graasp-library-service-autoscaling-target_5E0ABD4D (graasp-dev/graasp-library-service-autoscaling-target): Refreshing state... [id=service/graasp-dev/graasp-library]
graasp-dev  aws_appautoscaling_target.graasp-dev_graasp-service-autoscaling-target_517CCDCE (graasp-dev/graasp-service-autoscaling-target): Refreshing state... [id=service/graasp-dev/graasp]
graasp-dev  aws_appautoscaling_policy.graasp-dev_graasp-library-service-autoscaling-policy_E718A88F (graasp-dev/graasp-library-service-autoscaling-policy): Refreshing state... [id=graasp-library]
graasp-dev  aws_appautoscaling_policy.graasp-dev_graasp-service-autoscaling-policy_70C429DA (graasp-dev/graasp-service-autoscaling-policy): Refreshing state... [id=graasp]
graasp-dev  Note: Objects have changed outside of Terraform

            Terraform detected the following changes made outside of Terraform since the
            last "terraform apply" which may have affected this plan:
graasp-dev  # module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_db_instance.this[0] has changed
              ~ resource "aws_db_instance" "this" {
                    id                                    = "db-3CNANXEZMD2SUYDRIDBIHT6F2M"
                  ~ status                                = "available" -> "stopped"
                    tags                                  = {}
                    # (72 unchanged attributes hidden)

                    # (1 unchanged block hidden)
                }


            Unless you have made equivalent changes to your configuration, or ignored the
            relevant attributes using ignore_changes, the following plan may include
            actions to undo or respond to these changes.

            ─────────────────────────────────────────────────────────────────────────────

            Terraform used the selected providers to generate the following execution
            plan. Resource actions are indicated with the following symbols:
              ~ update in-place
              - destroy

            Terraform will perform the following actions:

              # aws_cloudfront_distribution.graasp-dev-apps-cloudfront (graasp-dev-apps-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-apps-cloudfront" {
                    id                              = "E354WPS1CZ652D"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-assets-cloudfront (graasp-dev-assets-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-assets-cloudfront" {
                    id                              = "E1TTPMNH8QPMJP"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-client-cloudfront (graasp-dev-client-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-client-cloudfront" {
                    id                              = "E1ZTGZST8787TH"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-h5p-cloudfront (graasp-dev-h5p-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-h5p-cloudfront" {
                    id                              = "E3B7XJV46O4VB4"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_function.maintenance-check-function will be destroyed
              # (because aws_cloudfront_function.maintenance-check-function is not in configuration)
              - resource "aws_cloudfront_function" "maintenance-check-function" {
                  - arn                          = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                  - code                         = <<-EOT
                        function handler = (event) => {
                          const headers = event.request.headers;
                          const headerName = 'x-maintenance-6oA6nStGidBOs0nyWSt9ZqLgbdXquA';
                          const headerSecret = 'dj0H0YsIawMGA55Ydc0HViJ4Zbwig3';
                          if (
                            headers[headerName] &&
                            headers[headerName][0].value === headerSecret
                          ) {
                            return event.request;
                          }

                          return {
                            statusCode: 302,
                            statusDescription: 'Found',
                            headers: {
                              'location': {value: 'maintenance.dev.graasp.org'},
                            },
                          };
                        };
                    EOT -> null
                  - etag                         = "E3UN6WX5RRO2AG" -> null
                  - id                           = "maintenance-check" -> null
                  - key_value_store_associations = [] -> null
                  - live_stage_etag              = "E3UN6WX5RRO2AG" -> null
                  - name                         = "maintenance-check" -> null
                  - publish                      = true -> null
                  - runtime                      = "cloudfront-js-2.0" -> null
                  - status                       = "IN_PROGRESS" -> null
                    # (1 unchanged attribute hidden)
                }

              # aws_ecs_service.graasp-dev_etherpad-service_366B5CFC (graasp-dev/etherpad-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_etherpad-service_366B5CFC" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/etherpad"
                    name                               = "etherpad"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_graasp-library-service_35621E15 (graasp-dev/graasp-library-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_graasp-library-service_35621E15" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp-library"
                    name                               = "graasp-library"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_graasp-service_BD538BD2 (graasp-dev/graasp-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_graasp-service_BD538BD2" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp"
                    name                               = "graasp"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_iframely-service_8F7B5C1F (graasp-dev/iframely-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_iframely-service_8F7B5C1F" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/iframely"
                    name                               = "iframely"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (4 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_meilisearch-service_3A736F80 (graasp-dev/meilisearch-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_meilisearch-service_3A736F80" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/meilisearch"
                    name                               = "meilisearch"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (4 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_redis-service_1DBE7C83 (graasp-dev/redis-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_redis-service_1DBE7C83" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/redis"
                    name                               = "redis"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (4 unchanged blocks hidden)
                }

              # aws_ecs_service.graasp-dev_umami-service_6A875906 (graasp-dev/umami-service) will be updated in-place
              ~ resource "aws_ecs_service" "graasp-dev_umami-service_6A875906" {
                  ~ desired_count                      = 0 -> 1
                    id                                 = "arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/umami"
                    name                               = "umami"
                    tags                               = {}
                    # (16 unchanged attributes hidden)

                    # (5 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-account_E8E1BF85 (graasp-dev-load-balancer/graasp-dev-account) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-account_E8E1BF85" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/7047635807922e71"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-analytics_431AD7A3 (graasp-dev-load-balancer/graasp-dev-analytics) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-analytics_431AD7A3" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/e9c555b8848a3ea8"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-auth_E1CC888F (graasp-dev-load-balancer/graasp-dev-auth) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-auth_E1CC888F" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/0a2139fff741478b"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-builder_4D040462 (graasp-dev-load-balancer/graasp-dev-builder) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-builder_4D040462" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/b4dbd2a5e0f69d57"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-player_6D261351 (graasp-dev-load-balancer/graasp-dev-player) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-player_6D261351" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/617ffd86187ebe3e"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-shortener_2A4B0FBC (graasp-dev-load-balancer/graasp-dev-shortener) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev-load-balancer_graasp-dev-shortener_2A4B0FBC" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/df78a886adbeef6c"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_etherpad-rule_74CA3679 (graasp-dev/etherpad-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_etherpad-rule_74CA3679" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/d95b5f32dc661338"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_graasp-library-rule_AC381C09 (graasp-dev/graasp-library-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_graasp-library-rule_AC381C09" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/47b6511ce97bab5a"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_graasp-rule_8589AD50 (graasp-dev/graasp-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_graasp-rule_8589AD50" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/5bba1be112990e2f"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_lb_listener_rule.graasp-dev_umami-rule_139819E3 (graasp-dev/umami-rule) will be updated in-place
              ~ resource "aws_lb_listener_rule" "graasp-dev_umami-rule_139819E3" {
                    id           = "arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/185c679fb423b689"
                    tags         = {}
                    # (4 unchanged attributes hidden)

                  - condition {
                      - http_header {
                          - http_header_name = "6oA6nStGidBOs0nyWSt9ZqLgbdXquA" -> null
                          - values           = [
                              - "dj0H0YsIawMGA55Ydc0HViJ4Zbwig3",
                            ] -> null
                        }
                    }

                    # (2 unchanged blocks hidden)
                }

              # aws_rds_instance_state.graasp-dev-postgres_graasp-dev-instance-state_D3812C30 (graasp-dev-postgres/graasp-dev-instance-state) will be updated in-place
              ~ resource "aws_rds_instance_state" "graasp-dev-postgres_graasp-dev-instance-state_D3812C30" {
                  ~ state      = "stopped" -> "available"
                    # (1 unchanged attribute hidden)
                }

            Plan: 0 to add, 22 to change, 1 to destroy.

            ─────────────────────────────────────────────────────────────────────────────

            Saved the plan to: plan

            To perform exactly these actions, run the following command to apply:
                terraform apply "plan"


```

</details>
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-03-25T14:10:29Z
body: <!-- terraform cdk action for options with hash 0d855fa9b0c377767ce986776c53ddef -->
### ✅ Successfully planned Terraform CDK Stack 'graasp-dev'



<details><summary>Show Plan</summary>

```shell
graasp-dev  Initializing the backend...
graasp-dev  Successfully configured the backend "s3"! Terraform will automatically
            use this backend unless the backend configuration changes.
graasp-dev  Initializing modules...
graasp-dev  Downloading registry.terraform.io/terraform-aws-modules/rds/aws 6.10.0 for graasp-dev-postgres_db_F1D5DB7A...
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_instance in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_instance
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_instance_role_association in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_instance_role_association
            - graasp-dev-postgres_db_F1D5DB7A.db_option_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_option_group
            - graasp-dev-postgres_db_F1D5DB7A.db_parameter_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_parameter_group
graasp-dev  - graasp-dev-postgres_db_F1D5DB7A.db_subnet_group in .terraform/modules/graasp-dev-postgres_db_F1D5DB7A/modules/db_subnet_group
graasp-dev  Downloading registry.terraform.io/terraform-aws-modules/vpc/aws 5.19.0 for vpc...
graasp-dev  - vpc in .terraform/modules/vpc
graasp-dev  Initializing provider plugins...
graasp-dev  - Finding hashicorp/aws versions matching ">= 5.59.0, >= 5.62.0, >= 5.79.0, 5.91.0"...
graasp-dev  - Finding hashicorp/random versions matching ">= 3.1.0"...
graasp-dev  - Installing hashicorp/aws v5.91.0...
graasp-dev  - Installed hashicorp/aws v5.91.0 (signed by HashiCorp)
graasp-dev  - Installing hashicorp/random v3.7.1...
graasp-dev  - Installed hashicorp/random v3.7.1 (signed by HashiCorp)
            Terraform has created a lock file .terraform.lock.hcl to record the provider
            selections it made above. Include this file in your version control repository
            so that Terraform can guarantee to make the same selections by default when
            you run "terraform init" in the future.
graasp-dev  Terraform has been successfully initialized!

            You may now begin working with Terraform. Try running "terraform plan" to see
            any changes that are required for your infrastructure. All Terraform commands
            should now work.

            If you ever set or change modules or backend configuration for Terraform,
            rerun this command to reinitialize your working directory. If you forget, other
            commands will detect it and remind you to do so if necessary.
graasp-dev  - Fetching hashicorp/aws 5.91.0 for linux_amd64...
graasp-dev  - Retrieved hashicorp/aws 5.91.0 for linux_amd64 (signed by HashiCorp)
graasp-dev  - Fetching hashicorp/random 3.7.1 for linux_amd64...
graasp-dev  - Retrieved hashicorp/random 3.7.1 for linux_amd64 (signed by HashiCorp)
            - Obtained hashicorp/aws checksums for linux_amd64; All checksums for this platform were already tracked in the lock file
            - Obtained hashicorp/random checksums for linux_amd64; All checksums for this platform were already tracked in the lock file
graasp-dev  Success! Terraform has validated the lock file and found no need for changes.
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.random_id.snapshot_identifier[0]: Refreshing state... [id=SHBibw]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert): Reading...
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert): Read complete after 0s [id=arn:aws:acm:us-east-1:299720865162:certificate/46cb9d1f-aea8-42de-8232-a5b83f1cc7e2]
graasp-dev  data.aws_ecr_repository.graasp-dev-explore-ecr (graasp-dev-explore-ecr): Reading...
            aws_cloudwatch_log_group.graasp-dev_etherpad-loggroup_200385B4 (graasp-dev/etherpad-loggroup): Refreshing state... [id=/ecs/etherpad]
            aws_service_discovery_http_namespace.graasp-dev_namespace_B6F7BA2C (graasp-dev/namespace): Refreshing state... [id=ns-us3rov3ukfoth5ox]
            data.aws_ecr_repository.graasp-dev-etherpad-ecr (graasp-dev-etherpad-ecr): Reading...
            data.aws_ecr_repository.graasp-dev-ecr (graasp-dev-ecr): Reading...
            aws_iam_role.graasp-dev_ecs-execution-role_A4D135E8 (graasp-dev/ecs-execution-role): Refreshing state... [id=graasp-dev-ecs-execution-role]
            data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert)-lb: Reading...
graasp-dev  aws_cloudwatch_log_group.graasp-dev_umami-loggroup_544115BF (graasp-dev/umami-loggroup): Refreshing state... [id=/ecs/umami]
            aws_s3_bucket.graasp-dev-maintenance_bucket_46B8FAD7 (graasp-dev-maintenance/bucket): Refreshing state... [id=graasp-dev-maintenance]
            aws_s3_bucket.graasp-dev-file-items_bucket_12606B30 (graasp-dev-file-items/bucket): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket.graasp-dev-apps_bucket_F4170225 (graasp-dev-apps/bucket): Refreshing state... [id=graasp-dev-apps]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_partition.current: Reading...
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_partition.current: Read complete after 0s [id=aws]
graasp-dev  aws_s3_bucket.graasp-dev-client_bucket_076446C5 (graasp-dev-client/bucket): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_ecs_cluster.cluster (cluster): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:cluster/graasp-dev]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_parameter_group.aws_db_parameter_group.this[0]: Refreshing state... [id=graasp-postgres15-20231009123434812500000001]
graasp-dev  data.aws_ecr_repository.graasp-dev-explore-ecr (graasp-dev-explore-ecr): Read complete after 1s [id=graasp/explore]
graasp-dev  data.aws_ecr_repository.graasp-dev-etherpad-ecr (graasp-dev-etherpad-ecr): Read complete after 1s [id=graasp/etherpad]
            aws_rds_instance_state.graasp-dev-postgres_graasp-dev-instance-state_D3812C30 (graasp-dev-postgres/graasp-dev-instance-state): Refreshing state...
            aws_s3_bucket.graasp-dev-assets_bucket_8930785E (graasp-dev-assets/bucket): Refreshing state... [id=graasp-dev-assets]
graasp-dev  data.aws_ecr_repository.graasp-dev-ecr (graasp-dev-ecr): Read complete after 1s [id=graasp]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_redis-loggroup_AFE7CB87 (graasp-dev/redis-loggroup): Refreshing state... [id=/ecs/redis]
graasp-dev  data.aws_acm_certificate.graasp-dev-acm-cert (graasp-dev-acm-cert)-lb: Read complete after 1s [id=arn:aws:acm:eu-central-1:299720865162:certificate/af9d071d-3aa1-4583-905d-ec1efd5515d3]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_iframely-loggroup_105420D9 (graasp-dev/iframely-loggroup): Refreshing state... [id=/ecs/iframely]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_meilisearch-loggroup_F1AD2775 (graasp-dev/meilisearch-loggroup): Refreshing state... [id=/ecs/meilisearch]
graasp-dev  module.vpc.aws_vpc.this[0]: Refreshing state... [id=vpc-0b312f17d2e08cb6e]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_graasp-library-loggroup_FD22B99E (graasp-dev/graasp-library-loggroup): Refreshing state... [id=/ecs/graasp-library]
graasp-dev  aws_s3_bucket.graasp-dev-h5p_bucket_B545A43B (graasp-dev-h5p/bucket): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_cloudwatch_log_group.graasp-dev_graasp-loggroup_44ECC8C2 (graasp-dev/graasp-loggroup): Refreshing state... [id=/ecs/graasp]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_iam_policy_document.enhanced_monitoring: Reading...
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.data.aws_iam_policy_document.enhanced_monitoring: Read complete after 0s [id=76086537]
            aws_cloudfront_function.maintenance-check-function (maintenance-check-function): Refreshing state... [id=maintenance-check]
graasp-dev  aws_ecs_task_definition.graasp-dev_meilisearch_38A3D0B6 (graasp-dev/meilisearch): Refreshing state... [id=meilisearch]
graasp-dev  aws_ecs_task_definition.graasp-dev_redis_E9CE963D (graasp-dev/redis): Refreshing state... [id=redis]
graasp-dev  aws_ecs_task_definition.graasp-dev_graasp_54E40EB5 (graasp-dev/graasp): Refreshing state... [id=graasp]
graasp-dev  aws_iam_role_policy.graasp-dev_graasp-dev-ecs-execution-role-policies_D65DB830 (graasp-dev/graasp-dev-ecs-execution-role-policies): Refreshing state... [id=graasp-dev-ecs-execution-role:allow-ecr-pull]
graasp-dev  aws_ecs_task_definition.graasp-dev_iframely_4C5E8E3D (graasp-dev/iframely): Refreshing state... [id=iframely]
graasp-dev  aws_ecs_task_definition.graasp-dev_graasp-library_B38B90C0 (graasp-dev/graasp-library): Refreshing state... [id=graasp-library]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_iam_role.enhanced_monitoring[0]: Refreshing state... [id=graasp-dev-rds-monitoring-role]
graasp-dev  data.aws_iam_policy_document.graasp-dev-maintenance_allow_public_access_8F6F3848 (graasp-dev-maintenance/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-maintenance_allow_public_access_8F6F3848 (graasp-dev-maintenance/allow_public_access): Read complete after 0s [id=2448502661]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-maintenance_s3-website-configuration_50149944 (graasp-dev-maintenance/s3-website-configuration): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-maintenance_s3-block-public-access_C8FD87F8 (graasp-dev-maintenance/s3-block-public-access): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-maintenance_s3-bucket-ownership_1588A828 (graasp-dev-maintenance/s3-bucket-ownership): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-file-items_s3-bucket-ownership_9BB45BB8 (graasp-dev-file-items/s3-bucket-ownership): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-file-items_s3-block-public-access_DD6519C0 (graasp-dev-file-items/s3-block-public-access): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_cors_configuration.graasp-dev-file-items_s3-cors-config_531774F3 (graasp-dev-file-items/s3-cors-config): Refreshing state... [id=graasp-dev-file-items]
graasp-dev  aws_s3_bucket_policy.graasp-dev-maintenance_s3-policy_DA8583B1 (graasp-dev-maintenance/s3-policy): Refreshing state... [id=graasp-dev-maintenance]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_iam_role_policy_attachment.enhanced_monitoring[0]: Refreshing state... [id=graasp-dev-rds-monitoring-role-20231009123438644600000004]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-apps_s3-website-configuration_7E3F72D4 (graasp-dev-apps/s3-website-configuration): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-apps_s3-block-public-access_05DA1D21 (graasp-dev-apps/s3-block-public-access): Refreshing state... [id=graasp-dev-apps]
graasp-dev  data.aws_iam_policy_document.graasp-dev-apps_allow_public_access_9E010C09 (graasp-dev-apps/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-apps_allow_public_access_9E010C09 (graasp-dev-apps/allow_public_access): Read complete after 0s [id=4070198440]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-apps_s3-bucket-ownership_699CAAD9 (graasp-dev-apps/s3-bucket-ownership): Refreshing state... [id=graasp-dev-apps]
graasp-dev  aws_cloudfront_distribution.graasp-dev-maintenance-cloudfront (graasp-dev-maintenance-cloudfront): Refreshing state... [id=EGBVR5KHBTMNX]
graasp-dev  aws_s3_bucket_policy.graasp-dev-apps_s3-policy_708B7B00 (graasp-dev-apps/s3-policy): Refreshing state... [id=graasp-dev-apps]
graasp-dev  data.aws_iam_policy_document.graasp-dev-client_allow_public_access_BCCA7882 (graasp-dev-client/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-client_allow_public_access_BCCA7882 (graasp-dev-client/allow_public_access): Read complete after 0s [id=3742575001]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-client_s3-bucket-ownership_7FA8E504 (graasp-dev-client/s3-bucket-ownership): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-client_s3-website-configuration_A6D7BA4D (graasp-dev-client/s3-website-configuration): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-client_s3-block-public-access_A8DD5DF0 (graasp-dev-client/s3-block-public-access): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_s3_bucket_policy.graasp-dev-client_s3-policy_71B89D07 (graasp-dev-client/s3-policy): Refreshing state... [id=graasp-dev-client]
graasp-dev  aws_cloudfront_distribution.graasp-dev-apps-cloudfront (graasp-dev-apps-cloudfront): Refreshing state... [id=E354WPS1CZ652D]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-assets_s3-block-public-access_D15DF7EF (graasp-dev-assets/s3-block-public-access): Refreshing state... [id=graasp-dev-assets]
            aws_s3_bucket_ownership_controls.graasp-dev-assets_s3-bucket-ownership_1BE1C46A (graasp-dev-assets/s3-bucket-ownership): Refreshing state... [id=graasp-dev-assets]
            aws_s3_bucket_website_configuration.graasp-dev-assets_s3-website-configuration_6D1735B5 (graasp-dev-assets/s3-website-configuration): Refreshing state... [id=graasp-dev-assets]
graasp-dev  data.aws_iam_policy_document.graasp-dev-assets_allow_public_access_59580A32 (graasp-dev-assets/allow_public_access): Reading...
            data.aws_iam_policy_document.graasp-dev-assets_allow_public_access_59580A32 (graasp-dev-assets/allow_public_access): Read complete after 0s [id=661570887]
            aws_s3_bucket_policy.graasp-dev-assets_s3-policy_B5DD3F7D (graasp-dev-assets/s3-policy): Refreshing state... [id=graasp-dev-assets]
graasp-dev  module.vpc.aws_default_network_acl.this[0]: Refreshing state... [id=acl-06ce6a79ac9494ac3]
graasp-dev  module.vpc.aws_default_route_table.default[0]: Refreshing state... [id=rtb-0de0872c207e953b3]
graasp-dev  module.vpc.aws_default_security_group.this[0]: Refreshing state... [id=sg-0fd249cba5ab4c742]
graasp-dev  aws_security_group.graasp-dev-umami-security-group (graasp-dev-umami-security-group): Refreshing state... [id=sg-03d98ff7f2eb798fa]
graasp-dev  aws_security_group.graasp-dev-gatekeeper_graasp-dev-gatekeeper-security-group_92E8E7CC (graasp-dev-gatekeeper/graasp-dev-gatekeeper-security-group): Refreshing state... [id=sg-036836715bbca8a32]
graasp-dev  aws_security_group.graasp-dev-meilisearch-security-group (graasp-dev-meilisearch-security-group): Refreshing state... [id=sg-0b3ce2813b8775eba]
graasp-dev  aws_security_group.graasp-dev-library-security-group (graasp-dev-library-security-group): Refreshing state... [id=sg-07bae39853af00427]
graasp-dev  aws_security_group.graasp-dev-redis-security-group (graasp-dev-redis-security-group): Refreshing state... [id=sg-0a7ebce0ecabcd895]
graasp-dev  aws_security_group.graasp-dev-postgres_graasp-dev-db-security-group_6A637215 (graasp-dev-postgres/graasp-dev-db-security-group): Refreshing state... [id=sg-009f5a0d494264c65]
graasp-dev  aws_security_group.graasp-dev-etherpad-security-group (graasp-dev-etherpad-security-group): Refreshing state... [id=sg-0ffb7f564703627af]
graasp-dev  aws_security_group.graasp-dev-backend-security-group (graasp-dev-backend-security-group): Refreshing state... [id=sg-014f1fd084973fd06]
graasp-dev  aws_security_group.graasp-dev-lb-security-group (graasp-dev-lb-security-group): Refreshing state... [id=sg-0f07f40e7da03b966]
graasp-dev  aws_security_group.graasp-dev-iframely-security-group (graasp-dev-iframely-security-group): Refreshing state... [id=sg-0ca4813c62c9d17a3]
graasp-dev  module.vpc.aws_route_table.public[0]: Refreshing state... [id=rtb-09991359fa2a53c1c]
graasp-dev  module.vpc.aws_subnet.public[0]: Refreshing state... [id=subnet-0596b784e2da6e5c6]
graasp-dev  module.vpc.aws_subnet.public[1]: Refreshing state... [id=subnet-055a0124ce88123b2]
graasp-dev  module.vpc.aws_subnet.public[2]: Refreshing state... [id=subnet-01f44d93731acccb7]
graasp-dev  module.vpc.aws_internet_gateway.this[0]: Refreshing state... [id=igw-01955c8cc5f6d5181]
graasp-dev  aws_cloudfront_distribution.graasp-dev-client-cloudfront (graasp-dev-client-cloudfront): Refreshing state... [id=E1ZTGZST8787TH]
graasp-dev  aws_cloudfront_distribution.graasp-dev-assets-cloudfront (graasp-dev-assets-cloudfront): Refreshing state... [id=E1TTPMNH8QPMJP]
graasp-dev  data.aws_iam_policy_document.graasp-dev-h5p_allow_public_access_04C01E9A (graasp-dev-h5p/allow_public_access): Reading...
graasp-dev  data.aws_iam_policy_document.graasp-dev-h5p_allow_public_access_04C01E9A (graasp-dev-h5p/allow_public_access): Read complete after 0s [id=1897348743]
graasp-dev  aws_s3_bucket_cors_configuration.graasp-dev-h5p_s3-cors-config_EC778FA8 (graasp-dev-h5p/s3-cors-config): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_ownership_controls.graasp-dev-h5p_s3-bucket-ownership_418B795B (graasp-dev-h5p/s3-bucket-ownership): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_public_access_block.graasp-dev-h5p_s3-block-public-access_2D472005 (graasp-dev-h5p/s3-block-public-access): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_s3_bucket_website_configuration.graasp-dev-h5p_s3-website-configuration_5FB93898 (graasp-dev-h5p/s3-website-configuration): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-umami-allow-all (graasp-dev-umami-allow-all): Refreshing state... [id=sgr-026fb931c3d9a2d33]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-meilisearch-allow-all (graasp-dev-meilisearch-allow-all): Refreshing state... [id=sgr-0418d7a3309cc5d5e]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-gatekeeper_graasp-dev-gatekeeper-allow-all_B66B414C (graasp-dev-gatekeeper/graasp-dev-gatekeeper-allow-all): Refreshing state... [id=sgr-042fe01dcb13dead6]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-gatekeeper_graasp-dev-gatekeeper-allow-inbound-ssh_1B8A7117 (graasp-dev-gatekeeper/graasp-dev-gatekeeper/graasp-dev-gatekeeper-allow-inbound-ssh): Refreshing state... [id=sgr-0a51d11a638800750]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-allow-gatekeeper-on-meilisearch (graasp-dev-allow-gatekeeper-on-meilisearch): Refreshing state... [id=sgr-0959c46cb81a9c68e]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-library-allow-all (graasp-dev-library-allow-all): Refreshing state... [id=sgr-03cd64d6e8521413a]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-redis-allow-all (graasp-dev-redis-allow-all): Refreshing state... [id=sgr-03673e2379ee73580]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-etherpad-allow-all (graasp-dev-etherpad-allow-all): Refreshing state... [id=sgr-06470ffe6a0df1219]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-allow-gatekeeper-on-postgres (graasp-dev-allow-gatekeeper-on-postgres): Refreshing state... [id=sgr-0058c3745753e6995]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-etherpad_A95D382C (graasp-dev-postgres/graasp-dev-db-allow-etherpad): Refreshing state... [id=sgr-0ded857153724c35d]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-umami_425B5740 (graasp-dev-postgres/graasp-dev-db-allow-umami): Refreshing state... [id=sgr-063ed5e713152b283]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-postgres_graasp-dev-db-allow-all_0D9DEE53 (graasp-dev-postgres/graasp-dev-db-allow-all): Refreshing state... [id=sgr-0199bcbb086d17111]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-redis-allow-graasp-backend (graasp-dev-redis-allow-graasp-backend): Refreshing state... [id=sgr-08d29290d8638ef8f]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-meilisearch-allow-graasp-backend (graasp-dev-meilisearch-allow-graasp-backend): Refreshing state... [id=sgr-0d502c3895f05dc26]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-postgres_graasp-dev-db-allow-graasp-backend_E8883EF3 (graasp-dev-postgres/graasp-dev-db-allow-graasp-backend): Refreshing state... [id=sgr-007f1bb79fc0de776]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-backend-allow-all (graasp-dev-backend-allow-all): Refreshing state... [id=sgr-0f70a895b80fd309e]
graasp-dev  aws_s3_bucket_policy.graasp-dev-h5p_s3-policy_9DB0282E (graasp-dev-h5p/s3-policy): Refreshing state... [id=graasp-dev-h5p]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-iframely-allow-all (graasp-dev-iframely-allow-all): Refreshing state... [id=sgr-03b6e652d0d98bb05]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-iframely-allow-graasp-backend (graasp-dev-iframely-allow-graasp-backend): Refreshing state... [id=sgr-0d4d4b4ffd0b49a87]
graasp-dev  aws_vpc_security_group_egress_rule.graasp-dev-load-balancer_graasp-dev-allow-all_001EC5EB (graasp-dev-load-balancer/graasp-dev-allow-all): Refreshing state... [id=sgr-08d13e43e33fd5b5a]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-https_0223BC47 (graasp-dev-load-balancer/allow-https): Refreshing state... [id=sgr-0d7110664852fbdc7]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-library-allow-load-balancer (graasp-dev-library-allow-load-balancer): Refreshing state... [id=sgr-04e219db366df9a40]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-umami-allow-load-balancer (graasp-dev-umami-allow-load-balancer): Refreshing state... [id=sgr-05a39a274de98821a]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-etherpad-allow-load-balancer (graasp-dev-etherpad-allow-load-balancer): Refreshing state... [id=sgr-06e2e5786d9ade6fb]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-http_0E987E63 (graasp-dev-load-balancer/allow-http): Refreshing state... [id=sgr-0dbd5cad25b6a1a87]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-backend-allow-load-balancer (graasp-dev-backend-allow-load-balancer): Refreshing state... [id=sgr-0f1f4d5674dff4695]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-https-ipv6_DC496355 (graasp-dev-load-balancer/allow-https-ipv6): Refreshing state... [id=sgr-023719db02da6a2a8]
graasp-dev  aws_vpc_security_group_ingress_rule.graasp-dev-load-balancer_allow-http-ipv6_91743348 (graasp-dev-load-balancer/allow-http-ipv6): Refreshing state... [id=sgr-084bba5f4b221f189]
graasp-dev  module.vpc.aws_route.public_internet_gateway[0]: Refreshing state... [id=r-rtb-09991359fa2a53c1c1080289494]
graasp-dev  module.vpc.aws_route_table_association.public[0]: Refreshing state... [id=rtbassoc-0ba3fbc906b89068b]
            module.vpc.aws_route_table_association.public[1]: Refreshing state... [id=rtbassoc-065b7c3d10a5adb5f]
graasp-dev  module.vpc.aws_route_table_association.public[2]: Refreshing state... [id=rtbassoc-0953114662597b70b]
graasp-dev  aws_cloudfront_distribution.graasp-dev-h5p-cloudfront (graasp-dev-h5p-cloudfront): Refreshing state... [id=E3B7XJV46O4VB4]
graasp-dev  aws_lb.graasp-dev-load-balancer_lb_9A06B77C (graasp-dev-load-balancer/lb): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:loadbalancer/app/graasp-dev/2d9df8ffedc22275]
graasp-dev  aws_ecs_service.graasp-dev_redis-service_1DBE7C83 (graasp-dev/redis-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/redis]
graasp-dev  aws_instance.graasp-dev-gatekeeper_graasp-dev-gatekeeper-ec2_A55DD5DA (graasp-dev-gatekeeper/graasp-dev-gatekeeper/graasp-dev-gatekeeper-ec2): Refreshing state... [id=i-0fd04870b794c75b3]
graasp-dev  aws_ecs_service.graasp-dev_iframely-service_8F7B5C1F (graasp-dev/iframely-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/iframely]
graasp-dev  aws_ecs_service.graasp-dev_meilisearch-service_3A736F80 (graasp-dev/meilisearch-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/meilisearch]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_subnet_group.aws_db_subnet_group.this[0]: Refreshing state... [id=graasp-dev-20231009123833192500000015]
graasp-dev  module.graasp-dev-postgres_db_F1D5DB7A.module.db_instance.aws_db_instance.this[0]: Refreshing state... [id=db-3CNANXEZMD2SUYDRIDBIHT6F2M]
graasp-dev  aws_ecs_task_definition.graasp-dev_etherpad_D664EB2D (graasp-dev/etherpad): Refreshing state... [id=etherpad]
graasp-dev  aws_ecs_task_definition.graasp-dev_umami_88984772 (graasp-dev/umami): Refreshing state... [id=umami]
graasp-dev  aws_lb_listener.graasp-dev-load-balancer_lb-listener-http-redirect_309E2C64 (graasp-dev-load-balancer/lb-listener-http-redirect): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/9cc00852f3f90d6a]
graasp-dev  aws_lb_listener.graasp-dev-load-balancer_lb-listener-https_E069C227 (graasp-dev-load-balancer/lb-listener-https): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4]
graasp-dev  aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-builder_4D040462 (graasp-dev-load-balancer/graasp-dev-builder): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/b4dbd2a5e0f69d57]
            aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-shortener_2A4B0FBC (graasp-dev-load-balancer/graasp-dev-shortener): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/df78a886adbeef6c]
            aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-auth_E1CC888F (graasp-dev-load-balancer/graasp-dev-auth): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/0a2139fff741478b]
graasp-dev  aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-account_E8E1BF85 (graasp-dev-load-balancer/graasp-dev-account): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/7047635807922e71]
            aws_lb_target_group.graasp-dev_etherpad-target-group_94F8091C (graasp-dev/etherpad-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/etherpad/69fe8f88d1211cfe]
graasp-dev  aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-player_6D261351 (graasp-dev-load-balancer/graasp-dev-player): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/617ffd86187ebe3e]
            aws_lb_target_group.graasp-dev_graasp-target-group_7E05BC31 (graasp-dev/graasp-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/graasp/75b2cf400edd1909]
            aws_lb_target_group.graasp-dev_umami-target-group_02AC6A93 (graasp-dev/umami-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/umami/eb6d060fc17e2e52]
            aws_lb_listener_rule.graasp-dev-load-balancer_graasp-dev-analytics_431AD7A3 (graasp-dev-load-balancer/graasp-dev-analytics): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/e9c555b8848a3ea8]
graasp-dev  aws_lb_target_group.graasp-dev_graasp-library-target-group_47035354 (graasp-dev/graasp-library-target-group): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:targetgroup/graasp-library/1f502836d98e92e0]
graasp-dev  aws_lb_listener_rule.graasp-dev_etherpad-rule_74CA3679 (graasp-dev/etherpad-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/d95b5f32dc661338]
graasp-dev  aws_ecs_service.graasp-dev_etherpad-service_366B5CFC (graasp-dev/etherpad-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/etherpad]
graasp-dev  aws_lb_listener_rule.graasp-dev_graasp-rule_8589AD50 (graasp-dev/graasp-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/5bba1be112990e2f]
graasp-dev  aws_ecs_service.graasp-dev_graasp-service_BD538BD2 (graasp-dev/graasp-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp]
graasp-dev  aws_lb_listener_rule.graasp-dev_umami-rule_139819E3 (graasp-dev/umami-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/185c679fb423b689]
graasp-dev  aws_ecs_service.graasp-dev_umami-service_6A875906 (graasp-dev/umami-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/umami]
graasp-dev  aws_lb_listener_rule.graasp-dev_graasp-library-rule_AC381C09 (graasp-dev/graasp-library-rule): Refreshing state... [id=arn:aws:elasticloadbalancing:eu-central-1:299720865162:listener-rule/app/graasp-dev/2d9df8ffedc22275/416636dae9d8bda4/47b6511ce97bab5a]
graasp-dev  aws_ecs_service.graasp-dev_graasp-library-service_35621E15 (graasp-dev/graasp-library-service): Refreshing state... [id=arn:aws:ecs:eu-central-1:299720865162:service/graasp-dev/graasp-library]
graasp-dev  aws_appautoscaling_target.graasp-dev_graasp-service-autoscaling-target_517CCDCE (graasp-dev/graasp-service-autoscaling-target): Refreshing state... [id=service/graasp-dev/graasp]
graasp-dev  aws_appautoscaling_target.graasp-dev_graasp-library-service-autoscaling-target_5E0ABD4D (graasp-dev/graasp-library-service-autoscaling-target): Refreshing state... [id=service/graasp-dev/graasp-library]
graasp-dev  aws_appautoscaling_policy.graasp-dev_graasp-service-autoscaling-policy_70C429DA (graasp-dev/graasp-service-autoscaling-policy): Refreshing state... [id=graasp]
graasp-dev  aws_appautoscaling_policy.graasp-dev_graasp-library-service-autoscaling-policy_E718A88F (graasp-dev/graasp-library-service-autoscaling-policy): Refreshing state... [id=graasp-library]
graasp-dev  Terraform used the selected providers to generate the following execution
            plan. Resource actions are indicated with the following symbols:
              ~ update in-place

            Terraform will perform the following actions:
graasp-dev  # aws_cloudfront_distribution.graasp-dev-apps-cloudfront (graasp-dev-apps-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-apps-cloudfront" {
                    id                              = "E354WPS1CZ652D"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-assets-cloudfront (graasp-dev-assets-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-assets-cloudfront" {
                    id                              = "E1TTPMNH8QPMJP"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-client-cloudfront (graasp-dev-client-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-client-cloudfront" {
                    id                              = "E1ZTGZST8787TH"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_distribution.graasp-dev-h5p-cloudfront (graasp-dev-h5p-cloudfront) will be updated in-place
              ~ resource "aws_cloudfront_distribution" "graasp-dev-h5p-cloudfront" {
                    id                              = "E3B7XJV46O4VB4"
                    tags                            = {}
                    # (23 unchanged attributes hidden)

                  ~ default_cache_behavior {
                        # (16 unchanged attributes hidden)

                      - function_association {
                          - event_type   = "viewer-request" -> null
                          - function_arn = "arn:aws:cloudfront::299720865162:function/maintenance-check" -> null
                        }

                        # (1 unchanged block hidden)
                    }

                    # (5 unchanged blocks hidden)
                }

              # aws_cloudfront_function.maintenance-check-function (maintenance-check-function) will be updated in-place
              ~ resource "aws_cloudfront_function" "maintenance-check-function" {
                  ~ code                         = <<-EOT
                        function handler(event) {
                      -   const headers = event.request.headers;
                      -   const headerName = 'x-maintenance-6oA6nStGidBOs0nyWSt9ZqLgbdXquA';
                      -   const headerSecret = 'dj0H0YsIawMGA55Ydc0HViJ4Zbwig3';
                      -   if (
                      -     headers[headerName] &&
                      -     headers[headerName][0].value === headerSecret
                      -   ) {
                      -     return event.request;
                      -   }
                      -
                      -   return {
                      -     statusCode: 302,
                      -     statusDescription: 'Found',
                      -     headers: {
                      -       'location': {value: 'https://maintenance.dev.graasp.org'},
                      -     },
                      -   };
                      +   return event.request;
                        }
                    EOT
                    id                           = "maintenance-check"
                    name                         = "maintenance-check"
                    # (8 unchanged attributes hidden)
                }

            Plan: 0 to add, 5 to change, 0 to destroy.

            ─────────────────────────────────────────────────────────────────────────────

            Saved the plan to: plan

            To perform exactly these actions, run the following command to apply:
                terraform apply "plan"


```

</details>
author_association: NONE