Skip to content

Conversation

@tataihono
Copy link
Contributor

@tataihono tataihono commented Jan 16, 2026

Changes

  • Add new client content type API (controllers, routes, services, schema)
  • Remove about and global content type APIs
  • Update schemas for article, author, and category content types
  • Update generated TypeScript types

Refs: AI-5

Summary by CodeRabbit

  • New Features

    • Added a Client content type and enabled GraphQL for the CMS.
    • CMS build targets for translations and sourcemaps added (placeholders).
  • Updates

    • Articles: title and slug now required; description restored (80-char max); supports client relations.
    • Authors: name and slug required; improved email validation; avatar limited to images.
    • Categories: name and slug required; description added.
    • CMS plugin config now reads JWT_SECRET.
  • Removals

    • About and Global content types removed.
  • Chores

    • CI workflows simplified and deployment gating streamlined.
    • Dockerfile optimized for CMS build/runtime.

✏️ Tip: You can customize this high-level summary in your review settings.

- Add new client content type API (controllers, routes, services, schema)
- Remove about and global content type APIs
- Update schemas for article, author, and category content types
- Update generated TypeScript types

Refs: AI-5
@linear
Copy link

linear bot commented Jan 16, 2026

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 16, 2026

Walkthrough

Removes the "about" and "global" Strapi APIs, adds a new "client" collectionType (schema, controller, routes, service), updates article/author/category schemas, modifies CI workflow matrix/Doppler steps, updates Dockerfile and CMS configs, and adds @strapi/plugin-graphql plus two Nx placeholder targets.

Changes

Cohort / File(s) Summary
Removed "about" content type
apps/cms/src/api/about/content-types/about/schema.json, apps/cms/src/api/about/controllers/about.ts, apps/cms/src/api/about/routes/about.ts, apps/cms/src/api/about/services/about.ts
Deleted the "about" content-type schema and its controller, routes, and service.
Removed "global" content type
apps/cms/src/api/global/content-types/global/schema.json, apps/cms/src/api/global/controllers/global.ts, apps/cms/src/api/global/routes/global.ts, apps/cms/src/api/global/services/global.ts
Deleted the "global" singleType schema and its controller, routes, and service.
Added "client" content type
apps/cms/src/api/client/content-types/client/schema.json, apps/cms/src/api/client/controllers/client.ts, apps/cms/src/api/client/routes/client.ts, apps/cms/src/api/client/services/client.ts
New collectionType client (name required, uid slug required, favicon media images, description, defaultSeo component) with many-to-many relation to api::article.article; added controller, routes, service.
Updated article schema
apps/cms/src/api/article/content-types/article/schema.json
title and slug marked required; added clients many-to-many relation to api::client.client; restored description (text, maxLength 80).
Updated author schema
apps/cms/src/api/author/content-types/author/schema.json
name required; added slug (uid → targetField name, required); email type changed to email; avatar allowedTypes restricted to images.
Updated category schema
apps/cms/src/api/category/content-types/category/schema.json
name and slug marked required; added description (text); removed duplicate trailing description.
Workflows: Doppler & deployment
.github/workflows/ecs-frontend-deploy-prod-worker.yml, .github/workflows/ecs-frontend-deploy-stage-worker.yml, .github/workflows/ecs-frontend-deploy-prod.yml, .github/workflows/ecs-frontend-deploy-stage.yml
Replaced manual Doppler CLI install with dopplerhq/cli-action; moved affected-apps logic to a matrix output; removed per-app conditional guards in worker workflows (ECS deployment steps now run unconditionally in worker files); simplified nx install command.
Dockerfile changes for CMS image
apps/cms/Dockerfile
Base image changed; added native deps and NODE_ENV/OTEL vars; switch to corepack pnpm; narrowed copy/install to CMS, set workdir /opt, run build as node user, adjusted build/start steps.
CMS package & project config
apps/cms/package.json, apps/cms/project.json, apps/cms/config/plugins.ts, apps/cms/infrastructure/locals.tf
Added @strapi/plugin-graphql dependency; added extract-translations and upload-sourcemaps Nx targets (placeholders); added users-permissions jwtSecret plugin config; added JWT_SECRET to local envs.

Sequence Diagram(s)

sequenceDiagram
    participant GH as GitHub Actions
    participant Doppler as Doppler Action
    participant NX as nx/build
    participant ECR as ECR/Registry
    participant ECS as AWS ECS

    GH->>Doppler: run dopplerhq/cli-action (load secrets)
    GH->>NX: run build for apps/cms (pnpm, nx)
    NX->>ECR: build & push image
    ECR->>ECS: update task definition / restart service
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • kiran-redhat
  • sharon-elsa-mathew1995
  • mikeallisonJS
🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Out of Scope Changes check ❓ Inconclusive Additional changes present (Dockerfile, GitHub workflows, package.json, config/plugins.ts, infrastructure) are related to supporting the CMS refactor but not explicitly listed in AI-5 requirements. Clarify whether infrastructure changes (JWT_SECRET, Dockerfile), workflow updates, and plugin config are intentional scope additions or should be separated into distinct PRs.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately summarizes the main changes: adding a new client content type and refactoring existing content types (removing about/global, updating article/author/category schemas).
Linked Issues check ✅ Passed All coding objectives from AI-5 are met: client content type API added with schema/controllers/routes/services, about/global APIs removed, and article/author/category schemas updated.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch tataihono/feat-5-cms-api-add-client-content-type


📜 Recent review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between e8ab918 and fac8e29.

📒 Files selected for processing (2)
  • apps/cms/config/plugins.ts
  • apps/cms/infrastructure/locals.tf
🧰 Additional context used
📓 Path-based instructions (3)
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (.cursor/rules/base.mdc)

**/*.{ts,tsx,js,jsx}: Use early returns whenever possible to make the code more readable.
Use descriptive variable and function/const names.
Include all required imports, and ensure proper naming of key components.

Files:

  • apps/cms/config/plugins.ts
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/base.mdc)

Define a type if possible.

Files:

  • apps/cms/config/plugins.ts
apps/**/*.{js,jsx,ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/apps.mdc)

apps/**/*.{js,jsx,ts,tsx}: Always use MUI over HTML elements; avoid using CSS or tags.
Use descriptive variable and function/const names. Also, event functions should be named with a “handle” prefix, like “handleClick” for onClick and “handleKeyDown” for onKeyDown.
Implement accessibility features on elements. For example, a tag should have a tabindex=“0”, aria-label, on:click, and on:keydown, and similar attributes.

Files:

  • apps/cms/config/plugins.ts
🧠 Learnings (4)
📓 Common learnings
Learnt from: CR
Repo: JesusFilm/core PR: 0
File: apps/resources/AGENTS.md:0-0
Timestamp: 2025-12-19T19:18:43.790Z
Learning: Applies to apps/resources/**/*.graphql : After editing GraphQL documents, run `pnpm dlx nx run resources:codegen`. The task clears and regenerates `apps/resources/__generated__`, so stage those artifacts with your changes
Learnt from: CR
Repo: JesusFilm/core PR: 0
File: apps/watch/AGENTS.md:0-0
Timestamp: 2025-12-19T04:58:24.460Z
Learning: Applies to apps/watch/src/**/*.graphql : After editing GraphQL documents, run `pnpm dlx nx run watch:codegen` to regenerate artifacts in `apps/watch/__generated__` and stage those artifacts with changes.
📚 Learning: 2025-07-22T18:37:46.814Z
Learnt from: CR
Repo: JesusFilm/core PR: 0
File: .cursor/rules/infrastructure.mdc:0-0
Timestamp: 2025-07-22T18:37:46.814Z
Learning: Applies to infrastructure/**/*.{tf,tfvars} : Avoid hardcoding sensitive values (e.g., passwords, API keys); instead, use Vault or environment variables.

Applied to files:

  • apps/cms/infrastructure/locals.tf
📚 Learning: 2025-07-22T18:37:46.814Z
Learnt from: CR
Repo: JesusFilm/core PR: 0
File: .cursor/rules/infrastructure.mdc:0-0
Timestamp: 2025-07-22T18:37:46.814Z
Learning: Applies to infrastructure/**/*.{tf,tfvars} : Store sensitive information in Vault, AWS Secrets Manager, or Azure Key Vault.

Applied to files:

  • apps/cms/infrastructure/locals.tf
📚 Learning: 2025-02-25T22:33:13.028Z
Learnt from: tataihono
Repo: JesusFilm/core PR: 5351
File: libs/journeys/ui/src/components/Video/InitAndPlay/getMuxMetadata/getMuxMetadata.ts:58-69
Timestamp: 2025-02-25T22:33:13.028Z
Learning: Sensitive configuration values like API keys, tokens, and environment-specific settings should not be hardcoded in the source code. They should be moved to environment variables or a secure configuration management system.

Applied to files:

  • apps/cms/infrastructure/locals.tf
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (14)
  • GitHub Check: Deploy Preview (watch, 8601/merge, pull_request, 22)
  • GitHub Check: Deploy Preview (resources, 8601/merge, pull_request, 22)
  • GitHub Check: Deploy Preview (videos-admin, 8601/merge, pull_request, 22)
  • GitHub Check: Deploy Preview (watch-modern, 8601/merge, pull_request, 22)
  • GitHub Check: Deploy Preview (player, 8601/merge, pull_request, 22)
  • GitHub Check: Deploy Preview (short-links, 8601/merge, pull_request, 22)
  • GitHub Check: Deploy Preview (journeys-admin, 8601/merge, pull_request, 22)
  • GitHub Check: Deploy Preview (docs, 8601/merge, pull_request, 22)
  • GitHub Check: Deploy Preview (journeys, 8601/merge, pull_request, 22)
  • GitHub Check: build (22)
  • GitHub Check: test (22, 3/3)
  • GitHub Check: test (22, 1/3)
  • GitHub Check: test (22, 2/3)
  • GitHub Check: lint (22)
🔇 Additional comments (2)
apps/cms/infrastructure/locals.tf (1)

8-8: Confirm JWT_SECRET is sourced from a secrets manager.
Please verify the runtime value comes from Vault/Secrets Manager (not checked into tfvars or locals). Based on learnings, ...

apps/cms/config/plugins.ts (1)

2-6: JWT_SECRET should be explicitly set in production environments.

Strapi v5 auto-generates a default jwtSecret for local development if none is provided, so the current code will not fail to boot. However, for production deployments, ensure JWT_SECRET is set as an environment variable to avoid token verification issues across restarts or multiple instances. Remove the proposed error guard as it would break local development workflows.

Likely an incorrect or invalid review comment.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@nx-cloud
Copy link

nx-cloud bot commented Jan 16, 2026

View your CI Pipeline Execution ↗ for commit fac8e29

Command Status Duration Result
nx run docs-e2e:e2e ✅ Succeeded 3s View ↗
nx run videos-admin-e2e:e2e ✅ Succeeded 6s View ↗
nx run journeys-admin-e2e:e2e ✅ Succeeded 1m 12s View ↗
nx run watch-e2e:e2e ✅ Succeeded 21s View ↗
nx run watch-modern-e2e:e2e ✅ Succeeded 3s View ↗
nx run journeys-e2e:e2e ✅ Succeeded 22s View ↗
nx run player-e2e:e2e ✅ Succeeded 4s View ↗
nx run resources-e2e:e2e ✅ Succeeded 12s View ↗
Additional runs (28) ✅ Succeeded ... View ↗

☁️ Nx Cloud last updated this comment at 2026-01-16 02:43:23 UTC

@tataihono tataihono self-assigned this Jan 16, 2026
@stage-branch-merger
Copy link

I see you added the "on stage" label, I'll get this merged to the stage branch!

- Added '@strapi/plugin-graphql' dependency to the CMS.
- Updated pnpm-lock.yaml with new versions for various dependencies.
- Refactored GitHub Actions workflow to streamline the deployment process by removing unnecessary steps and integrating Doppler CLI for environment management.
- Introduced a new command for extracting translations in the project configuration.

Refs: AI-6
@github-actions
Copy link
Contributor

github-actions bot commented Jan 16, 2026

Warnings
⚠️ ❗ Big PR (720 changes)

(change count - 720): Pull Request size seems relatively large. If Pull Request contains multiple changes, split each into separate PR will helps faster, easier review.

Generated by 🚫 dangerJS against fac8e29

@github-actions github-actions bot temporarily deployed to Preview - short-links January 16, 2026 00:59 Inactive
@github-actions github-actions bot temporarily deployed to Preview - journeys January 16, 2026 00:59 Inactive
@github-actions github-actions bot temporarily deployed to Preview - resources January 16, 2026 00:59 Inactive
@github-actions github-actions bot requested a deployment to Preview - journeys-admin January 16, 2026 00:59 Pending
@github-actions github-actions bot temporarily deployed to Preview - videos-admin January 16, 2026 00:59 Inactive
@github-actions github-actions bot temporarily deployed to Preview - watch-modern January 16, 2026 00:59 Inactive
@github-actions
Copy link
Contributor

github-actions bot commented Jan 16, 2026

The latest updates on your projects.

Name Status Preview Updated (UTC)
docs ✅ Ready docs preview Fri Jan 16 15:32:38 NZDT 2026

@github-actions
Copy link
Contributor

github-actions bot commented Jan 16, 2026

The latest updates on your projects.

Name Status Preview Updated (UTC)
short-links ✅ Ready short-links preview Fri Jan 16 15:34:09 NZDT 2026

@github-actions
Copy link
Contributor

github-actions bot commented Jan 16, 2026

The latest updates on your projects.

Name Status Preview Updated (UTC)
watch-modern ✅ Ready watch-modern preview Fri Jan 16 15:33:01 NZDT 2026

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@apps/cms/package.json`:
- Around line 11-14: The `@strapi/plugin-graphql` dependency is declared with a
caret and not configured; either remove the dependency entry for
`@strapi/plugin-graphql` from package.json, or pin it to "5.33.3" (remove the
caret) and add a graphql plugin config entry named "graphql" in your plugins
config (enable it and provide an empty config object) so the plugin is actually
enabled and version-aligned with Strapi core.
🧹 Nitpick comments (3)
.github/workflows/ecs-frontend-deploy-prod-worker.yml (1)

150-152: Unused output: image is written but not exposed.

This step writes image to $GITHUB_OUTPUT, but there's no outputs: section defined at the job level to expose this value to workflow callers. Either:

  1. Remove this step if the output is no longer needed, or
  2. Add job-level outputs to expose the image reference if callers need it.
Option 2: Expose the output at job level
 jobs:
   build-and-deploy:
     environment: Production
+    outputs:
+      image: ${{ steps.set-image.outputs.image }}
     env:

And update the step to have an id:

       - name: Set image output
+        id: set-image
         run: |
           echo "image=${{ steps.login-ecr-ecs.outputs.registry }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}" >> $GITHUB_OUTPUT
.github/workflows/ecs-frontend-deploy-stage-worker.yml (1)

150-152: Same unused output issue as production workflow.

The image output written here is not exposed at the job level. Apply the same fix as suggested for the production workflow if this output is needed by callers.

apps/cms/project.json (1)

60-68: Make the placeholder target fail fast or document it clearly.

Right now it succeeds without doing any work, which can hide missing translation extraction if CI or developers call it. Consider exiting non‑zero (or documenting prominently elsewhere) until it’s implemented.

🔧 Suggested tweak (fail fast)
-            "command": "echo 'extract-translations not implemented for cms'"
+            "command": "echo 'extract-translations not implemented for cms' && exit 1"
📜 Review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 6aeb563 and 84e6927.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (4)
  • .github/workflows/ecs-frontend-deploy-prod-worker.yml
  • .github/workflows/ecs-frontend-deploy-stage-worker.yml
  • apps/cms/package.json
  • apps/cms/project.json
🧰 Additional context used
🧠 Learnings (4)
📚 Learning: 2025-07-22T18:37:46.814Z
Learnt from: CR
Repo: JesusFilm/core PR: 0
File: .cursor/rules/infrastructure.mdc:0-0
Timestamp: 2025-07-22T18:37:46.814Z
Learning: Applies to infrastructure/**/.github/workflows/*.yml : Integrate Terraform with CI/CD pipelines (e.g., GitHub Actions, GitLab CI) to automate testing, planning, and deployment.

Applied to files:

  • .github/workflows/ecs-frontend-deploy-stage-worker.yml
  • .github/workflows/ecs-frontend-deploy-prod-worker.yml
📚 Learning: 2025-12-19T04:58:24.460Z
Learnt from: CR
Repo: JesusFilm/core PR: 0
File: apps/watch/AGENTS.md:0-0
Timestamp: 2025-12-19T04:58:24.460Z
Learning: Applies to apps/watch/src/**/*.graphql : After editing GraphQL documents, run `pnpm dlx nx run watch:codegen` to regenerate artifacts in `apps/watch/__generated__` and stage those artifacts with changes.

Applied to files:

  • .github/workflows/ecs-frontend-deploy-stage-worker.yml
  • apps/cms/package.json
  • .github/workflows/ecs-frontend-deploy-prod-worker.yml
📚 Learning: 2025-12-19T19:18:43.790Z
Learnt from: CR
Repo: JesusFilm/core PR: 0
File: apps/resources/AGENTS.md:0-0
Timestamp: 2025-12-19T19:18:43.790Z
Learning: Applies to apps/resources/**/*.graphql : After editing GraphQL documents, run `pnpm dlx nx run resources:codegen`. The task clears and regenerates `apps/resources/__generated__`, so stage those artifacts with your changes

Applied to files:

  • .github/workflows/ecs-frontend-deploy-stage-worker.yml
  • .github/workflows/ecs-frontend-deploy-prod-worker.yml
📚 Learning: 2025-09-04T04:01:06.341Z
Learnt from: mikeallisonJS
Repo: JesusFilm/core PR: 7549
File: apps/arclight/Dockerfile:20-20
Timestamp: 2025-09-04T04:01:06.341Z
Learning: In the JesusFilm/core repository, the build process for apps includes package.json with the necessary scripts, so Docker containers can safely use `pnpm start` after copying the dist directory.

Applied to files:

  • .github/workflows/ecs-frontend-deploy-stage-worker.yml
  • .github/workflows/ecs-frontend-deploy-prod-worker.yml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: affected (22)
  • GitHub Check: test (22, 3/3)
  • GitHub Check: test (22, 2/3)
  • GitHub Check: test (22, 1/3)
  • GitHub Check: build (22)
  • GitHub Check: danger (22)
  • GitHub Check: lint (22)
  • GitHub Check: Analyze (javascript)
🔇 Additional comments (2)
.github/workflows/ecs-frontend-deploy-stage-worker.yml (1)

86-88: Consistent with production workflow changes.

Same improvements applied here: using dopplerhq/cli-action@v3 and removing --silent from nx installation. Maintaining parity between stage and prod workflows is good practice.

.github/workflows/ecs-frontend-deploy-prod-worker.yml (1)

86-88: Good refactor: using official Doppler action instead of manual installation.

Switching from manual apt-get installation to dopplerhq/cli-action@v3 is cleaner and more maintainable. The action handles installation, caching, and updates automatically. Removing --silent from the nx installation provides better visibility into installation progress during CI runs.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

@github-actions
Copy link
Contributor

github-actions bot commented Jan 16, 2026

The latest updates on your projects.

Name Status Preview Updated (UTC)
journeys ✅ Ready journeys preview Fri Jan 16 15:33:23 NZDT 2026

@github-actions
Copy link
Contributor

github-actions bot commented Jan 16, 2026

The latest updates on your projects.

Name Status Preview Updated (UTC)
player ✅ Ready player preview Fri Jan 16 15:33:07 NZDT 2026

@github-actions
Copy link
Contributor

github-actions bot commented Jan 16, 2026

The latest updates on your projects.

Name Status Preview Updated (UTC)
videos-admin ✅ Ready videos-admin preview Fri Jan 16 15:33:45 NZDT 2026

@github-actions
Copy link
Contributor

github-actions bot commented Jan 16, 2026

The latest updates on your projects.

Name Status Preview Updated (UTC)
resources ✅ Ready resources preview Fri Jan 16 15:35:14 NZDT 2026

@github-actions
Copy link
Contributor

github-actions bot commented Jan 16, 2026

The latest updates on your projects.

Name Status Preview Updated (UTC)
watch ✅ Ready watch preview Fri Jan 16 15:34:16 NZDT 2026

@jesus-film-bot
Copy link

Ran Plan for dir: infrastructure workspace: default

Plan Error

cannot run "plan": the default workspace at path infrastructure is currently locked for this pull request by "plan".
Wait until the previous command is complete and try again

@tataihono
Copy link
Contributor Author

atlantis plan

@jesus-film-bot
Copy link

Ran Plan for dir: infrastructure workspace: default

Plan Error

cannot run "plan": the default workspace at path infrastructure is currently locked for this pull request by "plan".
Wait until the previous command is complete and try again

@github-actions github-actions bot temporarily deployed to Preview - videos-admin January 16, 2026 02:30 Inactive
@github-actions github-actions bot temporarily deployed to Preview - short-links January 16, 2026 02:30 Inactive
@github-actions github-actions bot temporarily deployed to Preview - watch-modern January 16, 2026 02:30 Inactive
@github-actions github-actions bot temporarily deployed to Preview - journeys-admin January 16, 2026 02:30 Inactive
@github-actions github-actions bot temporarily deployed to Preview - journeys January 16, 2026 02:30 Inactive
@github-actions github-actions bot temporarily deployed to Preview - resources January 16, 2026 02:30 Inactive
@jesus-film-bot
Copy link

Ran Plan for dir: infrastructure workspace: default

Show Output
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+ create
~ update in-place
- destroy
+/- create replacement and then destroy

Terraform will perform the following actions:

  # module.prod.module.arclight.module.ecs-task.aws_ecs_service.ecs_service will be updated in-place
~ resource "aws_ecs_service" "ecs_service" {
      ~ desired_count                      = 2 -> 4
        id                                 = "arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-prod/arclight-prod-service"
        name                               = "arclight-prod-service"
        tags                               = {}
        # (18 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

  # module.prod.module.cms.module.ecs-task.aws_ecs_service.ecs_service will be updated in-place
~ resource "aws_ecs_service" "ecs_service" {
        id                                 = "arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-prod/cms-prod-service"
        name                               = "cms-prod-service"
        tags                               = {}
      ~ task_definition                    = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-cms-prod:1" -> (known after apply)
        # (18 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

  # module.prod.module.cms.module.ecs-task.aws_ecs_task_definition.ecs_task_definition must be replaced
+/- resource "aws_ecs_task_definition" "ecs_task_definition" {
      ~ arn                      = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-cms-prod:1" -> (known after apply)
      ~ arn_without_revision     = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-cms-prod" -> (known after apply)
      ~ container_definitions    = jsonencode(
            [
              - {
                  - cpu              = 1024
                  - environment      = [
                      - {
                          - name  = "NODE_ENV"
                          - value = "production"
                        },
                      - {
                          - name  = "SERVICE_ENV"
                          - value = "prod"
                        },
                      - {
                          - name  = "SERVICE_NAME"
                          - value = "cms"
                        },
                    ]
                  - essential        = true
                  - image            = "410965620680.dkr.ecr.us-east-2.amazonaws.com/jfp-cms-prod:latest"
                  - logConfiguration = {
                      - logDriver     = "awsfirelens"
                      - options       = {
                          - Host        = "http-intake.logs.datadoghq.com"
                          - Name        = "datadog"
                          - TLS         = "on"
                          - compress    = "gzip"
                          - dd_service  = "cms"
                          - dd_source   = "strapi"
                          - dd_tags     = "env:prod"
                          - provider    = "ecs"
                          - retry_limit = "2"
                        }
                      - secretOptions = [
                          - {
                              - name      = "apikey"
                              - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/terraform/prd/DATADOG_API_KEY"
                            },
                        ]
                    }
                  - memory           = 2048
                  - mountPoints      = []
                  - name             = "jfp-cms-prod-app"
                  - portMappings     = [
                      - {
                          - containerPort = 1337
                          - hostPort      = 1337
                          - protocol      = "tcp"
                        },
                    ]
                  - secrets          = [
                      - {
                          - name      = "ADMIN_JWT_SECRET"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/ADMIN_JWT_SECRET"
                        },
                      - {
                          - name      = "API_TOKEN_SALT"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/API_TOKEN_SALT"
                        },
                      - {
                          - name      = "APP_KEYS"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/APP_KEYS"
                        },
                      - {
                          - name      = "DD_API_KEY"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/terraform/prd/DATADOG_API_KEY"
                        },
                      - {
                          - name      = "ENCRYPTION_KEY"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/ENCRYPTION_KEY"
                        },
                      - {
                          - name      = "MUX_ACCESS_TOKEN_ID"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/MUX_ACCESS_TOKEN_ID"
                        },
                      - {
                          - name      = "MUX_PLAYBACK_SIGNING_ID"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/MUX_PLAYBACK_SIGNING_ID"
                        },
                      - {
                          - name      = "MUX_PLAYBACK_SIGNING_SECRET"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/MUX_PLAYBACK_SIGNING_SECRET"
                        },
                      - {
                          - name      = "MUX_SECRET_KEY"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/MUX_SECRET_KEY"
                        },
                      - {
                          - name      = "MUX_WEBHOOK_SIGNING_SECRET"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/MUX_WEBHOOK_SIGNING_SECRET"
                        },
                      - {
                          - name      = "PG_DATABASE_URL_CMS"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/PG_DATABASE_URL_CMS"
                        },
                      - {
                          - name      = "TRANSFER_TOKEN_SALT"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/TRANSFER_TOKEN_SALT"
                        },
                    ]
                  - systemControls   = []
                  - volumesFrom      = []
                },
              - {
                  - environment       = [
                      - {
                          - name  = "DD_APM_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_APM_NON_LOCAL_TRAFFIC"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_DOGSTATSD_NON_LOCAL_TRAFFIC"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_LOGS_INJECTION"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_ENDPOINT"
                          - value = "0.0.0.0:4317"
                        },
                      - {
                          - name  = "DD_OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_ENDPOINT"
                          - value = "0.0.0.0:4318"
                        },
                      - {
                          - name  = "DD_PROCESS_AGENT_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_PROFILING_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_RUNTIME_METRICS_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_TAGS"
                          - value = "env:prod app:cms"
                        },
                      - {
                          - name  = "DD_TRACE_ANALYTICS_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "ECS_FARGATE"
                          - value = "true"
                        },
                    ]
                  - essential         = true
                  - image             = "public.ecr.aws/datadog/agent:latest"
                  - logConfiguration  = {
                      - logDriver = "awslogs"
                      - options   = {
                          - awslogs-group         = "cms-prod-logs"
                          - awslogs-region        = "us-east-2"
                          - awslogs-stream-prefix = "core"
                        }
                    }
                  - memoryReservation = 128
                  - mountPoints       = []
                  - name              = "jfp-cms-prod-datadog-agent"
                  - portMappings      = [
                      - {
                          - containerPort = 4317
                          - hostPort      = 4317
                          - protocol      = "tcp"
                        },
                      - {
                          - containerPort = 4318
                          - hostPort      = 4318
                          - protocol      = "tcp"
                        },
                      - {
                          - containerPort = 8125
                          - hostPort      = 8125
                          - protocol      = "udp"
                        },
                    ]
                  - secrets           = [
                      - {
                          - name      = "DD_API_KEY"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/terraform/prd/DATADOG_API_KEY"
                        },
                    ]
                  - systemControls    = []
                  - volumesFrom       = []
                },
              - {
                  - environment           = []
                  - essential             = true
                  - firelensConfiguration = {
                      - options = {
                          - config-file-type        = "file"
                          - config-file-value       = "/fluent-bit/configs/parse-json.conf"
                          - enable-ecs-log-metadata = "true"
                        }
                      - type    = "fluentbit"
                    }
                  - image                 = "amazon/aws-for-fluent-bit:stable"
                  - logConfiguration      = {
                      - logDriver = "awslogs"
                      - options   = {
                          - awslogs-group         = "cms-prod-logs"
                          - awslogs-region        = "us-east-2"
                          - awslogs-stream-prefix = "core"
                        }
                    }
                  - memoryReservation     = 100
                  - mountPoints           = []
                  - name                  = "jfp-cms-prod-log-router"
                  - portMappings          = []
                  - systemControls        = []
                  - user                  = "0"
                  - volumesFrom           = []
                },
            ]
        ) -> (known after apply) # forces replacement
      ~ enable_fault_injection   = false -> (known after apply)
      ~ id                       = "jfp-cms-prod" -> (known after apply)
      ~ revision                 = 1 -> (known after apply)
      - tags                     = {} -> null
      ~ tags_all                 = {} -> (known after apply)
        # (12 unchanged attributes hidden)
    }

  # module.prod.module.cms.module.ecs-task.aws_ssm_parameter.parameters["JWT_SECRET"] will be created
+ resource "aws_ssm_parameter" "parameters" {
      + arn            = (known after apply)
      + data_type      = (known after apply)
      + has_value_wo   = (known after apply)
      + id             = (known after apply)
      + insecure_value = (known after apply)
      + key_id         = (known after apply)
      + name           = "/ecs/cms/prod/JWT_SECRET"
      + overwrite      = true
      + region         = "us-east-2"
      + tags           = {
          + "name" = "JWT_SECRET"
        }
      + tags_all       = {
          + "name" = "JWT_SECRET"
        }
      + tier           = (known after apply)
      + type           = "SecureString"
      + value          = (sensitive value)
      + value_wo       = (write-only attribute)
      + version        = (known after apply)
    }

  # module.stage.module.api-journeys-modern.module.ecs-task.aws_ecs_service.ecs_service will be updated in-place
~ resource "aws_ecs_service" "ecs_service" {
        id                                 = "arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-stage/api-journeys-modern-stage-service"
        name                               = "api-journeys-modern-stage-service"
        tags                               = {}
      ~ task_definition                    = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-api-journeys-modern-stage:18" -> (known after apply)
        # (18 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

  # module.stage.module.api-journeys-modern.module.ecs-task.aws_ecs_task_definition.ecs_task_definition must be replaced
+/- resource "aws_ecs_task_definition" "ecs_task_definition" {
      ~ arn                      = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-api-journeys-modern-stage:18" -> (known after apply)
      ~ arn_without_revision     = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-api-journeys-modern-stage" -> (known after apply)
      ~ container_definitions    = jsonencode(
          ~ [
              ~ {
                    name             = "jfp-api-journeys-modern-stage-app"
                  ~ secrets          = [
                        # (26 unchanged elements hidden)
                        {
                            name      = "PG_DATABASE_URL_JOURNEYS"
                            valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/api-journeys/stage/PG_DATABASE_URL_JOURNEYS"
                        },
                      - {
                          - name      = "PG_DATABASE_URL_USERS"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/api-journeys/stage/PG_DATABASE_URL_USERS"
                        },
                        {
                            name      = "PLAUSIBLE_API_KEY"
                            valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/api-journeys/stage/PLAUSIBLE_API_KEY"
                        },
                        # (21 unchanged elements hidden)
                    ]
                  - systemControls   = []
                    # (9 unchanged attributes hidden)
                },
              ~ {
                    name              = "jfp-api-journeys-modern-stage-datadog-agent"
                  - systemControls    = []
                    # (9 unchanged attributes hidden)
                },
              ~ {
                    name                  = "jfp-api-journeys-modern-stage-log-router"
                  - systemControls        = []
                    # (10 unchanged attributes hidden)
                },
            ] # forces replacement
        )
      ~ enable_fault_injection   = false -> (known after apply)
      ~ id                       = "jfp-api-journeys-modern-stage" -> (known after apply)
      ~ revision                 = 18 -> (known after apply)
      - tags                     = {} -> null
      ~ tags_all                 = {} -> (known after apply)
        # (12 unchanged attributes hidden)
    }

  # module.stage.module.api-journeys-modern.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL_USERS"] will be destroyed
  # (because key ["PG_DATABASE_URL_USERS"] is not in for_each map)
- resource "aws_ssm_parameter" "parameters" {
      - arn             = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/api-journeys/stage/PG_DATABASE_URL_USERS" -> null
      - data_type       = "text" -> null
      - has_value_wo    = false -> null
      - id              = "/ecs/api-journeys/stage/PG_DATABASE_URL_USERS" -> null
      - key_id          = "alias/aws/ssm" -> null
      - name            = "/ecs/api-journeys/stage/PG_DATABASE_URL_USERS" -> null
      - overwrite       = true -> null
      - region          = "us-east-2" -> null
      - tags            = {
          - "name" = "PG_DATABASE_URL_USERS"
        } -> null
      - tags_all        = {
          - "name" = "PG_DATABASE_URL_USERS"
        } -> null
      - tier            = "Standard" -> null
      - type            = "SecureString" -> null
      - value           = (sensitive value) -> null
      - value_wo        = (write-only attribute) -> null
      - version         = 2 -> null
        # (2 unchanged attributes hidden)
    }

  # module.stage.module.arclight.module.ecs-task.aws_ecs_service.ecs_service will be updated in-place
~ resource "aws_ecs_service" "ecs_service" {
      ~ desired_count                      = 1 -> 4
        id                                 = "arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-stage/arclight-stage-service"
        name                               = "arclight-stage-service"
        tags                               = {}
        # (18 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

  # module.stage.module.cms.module.ecs-task.aws_ecs_service.ecs_service will be updated in-place
~ resource "aws_ecs_service" "ecs_service" {
        id                                 = "arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-stage/cms-stage-service"
        name                               = "cms-stage-service"
        tags                               = {}
      ~ task_definition                    = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-cms-stage:1" -> (known after apply)
        # (18 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

  # module.stage.module.cms.module.ecs-task.aws_ecs_task_definition.ecs_task_definition must be replaced
+/- resource "aws_ecs_task_definition" "ecs_task_definition" {
      ~ arn                      = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-cms-stage:1" -> (known after apply)
      ~ arn_without_revision     = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-cms-stage" -> (known after apply)
      ~ container_definitions    = jsonencode(
            [
              - {
                  - cpu              = 1024
                  - environment      = [
                      - {
                          - name  = "NODE_ENV"
                          - value = "production"
                        },
                      - {
                          - name  = "SERVICE_ENV"
                          - value = "stage"
                        },
                      - {
                          - name  = "SERVICE_NAME"
                          - value = "cms"
                        },
                    ]
                  - essential        = true
                  - image            = "410965620680.dkr.ecr.us-east-2.amazonaws.com/jfp-cms-stage:latest"
                  - logConfiguration = {
                      - logDriver     = "awsfirelens"
                      - options       = {
                          - Host        = "http-intake.logs.datadoghq.com"
                          - Name        = "datadog"
                          - TLS         = "on"
                          - compress    = "gzip"
                          - dd_service  = "cms"
                          - dd_source   = "strapi"
                          - dd_tags     = "env:stage"
                          - provider    = "ecs"
                          - retry_limit = "2"
                        }
                      - secretOptions = [
                          - {
                              - name      = "apikey"
                              - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/terraform/prd/DATADOG_API_KEY"
                            },
                        ]
                    }
                  - memory           = 2048
                  - mountPoints      = []
                  - name             = "jfp-cms-stage-app"
                  - portMappings     = [
                      - {
                          - containerPort = 1337
                          - hostPort      = 1337
                          - protocol      = "tcp"
                        },
                    ]
                  - secrets          = [
                      - {
                          - name      = "ADMIN_JWT_SECRET"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/ADMIN_JWT_SECRET"
                        },
                      - {
                          - name      = "API_TOKEN_SALT"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/API_TOKEN_SALT"
                        },
                      - {
                          - name      = "APP_KEYS"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/APP_KEYS"
                        },
                      - {
                          - name      = "DD_API_KEY"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/terraform/prd/DATADOG_API_KEY"
                        },
                      - {
                          - name      = "ENCRYPTION_KEY"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/ENCRYPTION_KEY"
                        },
                      - {
                          - name      = "MUX_ACCESS_TOKEN_ID"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/MUX_ACCESS_TOKEN_ID"
                        },
                      - {
                          - name      = "MUX_PLAYBACK_SIGNING_ID"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/MUX_PLAYBACK_SIGNING_ID"
                        },
                      - {
                          - name      = "MUX_PLAYBACK_SIGNING_SECRET"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/MUX_PLAYBACK_SIGNING_SECRET"
                        },
                      - {
                          - name      = "MUX_SECRET_KEY"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/MUX_SECRET_KEY"
                        },
                      - {
                          - name      = "MUX_WEBHOOK_SIGNING_SECRET"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/MUX_WEBHOOK_SIGNING_SECRET"
                        },
                      - {
                          - name      = "PG_DATABASE_URL_CMS"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/PG_DATABASE_URL_CMS"
                        },
                      - {
                          - name      = "TRANSFER_TOKEN_SALT"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/TRANSFER_TOKEN_SALT"
                        },
                    ]
                  - systemControls   = []
                  - volumesFrom      = []
                },
              - {
                  - environment       = [
                      - {
                          - name  = "DD_APM_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_APM_NON_LOCAL_TRAFFIC"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_DOGSTATSD_NON_LOCAL_TRAFFIC"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_LOGS_INJECTION"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_ENDPOINT"
                          - value = "0.0.0.0:4317"
                        },
                      - {
                          - name  = "DD_OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_ENDPOINT"
                          - value = "0.0.0.0:4318"
                        },
                      - {
                          - name  = "DD_PROCESS_AGENT_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_PROFILING_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_RUNTIME_METRICS_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_TAGS"
                          - value = "env:stage app:cms"
                        },
                      - {
                          - name  = "DD_TRACE_ANALYTICS_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "ECS_FARGATE"
                          - value = "true"
                        },
                    ]
                  - essential         = true
                  - image             = "public.ecr.aws/datadog/agent:latest"
                  - logConfiguration  = {
                      - logDriver = "awslogs"
                      - options   = {
                          - awslogs-group         = "cms-stage-logs"
                          - awslogs-region        = "us-east-2"
                          - awslogs-stream-prefix = "core"
                        }
                    }
                  - memoryReservation = 128
                  - mountPoints       = []
                  - name              = "jfp-cms-stage-datadog-agent"
                  - portMappings      = [
                      - {
                          - containerPort = 4317
                          - hostPort      = 4317
                          - protocol      = "tcp"
                        },
                      - {
                          - containerPort = 4318
                          - hostPort      = 4318
                          - protocol      = "tcp"
                        },
                      - {
                          - containerPort = 8125
                          - hostPort      = 8125
                          - protocol      = "udp"
                        },
                    ]
                  - secrets           = [
                      - {
                          - name      = "DD_API_KEY"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/terraform/prd/DATADOG_API_KEY"
                        },
                    ]
                  - systemControls    = []
                  - volumesFrom       = []
                },
              - {
                  - environment           = []
                  - essential             = true
                  - firelensConfiguration = {
                      - options = {
                          - config-file-type        = "file"
                          - config-file-value       = "/fluent-bit/configs/parse-json.conf"
                          - enable-ecs-log-metadata = "true"
                        }
                      - type    = "fluentbit"
                    }
                  - image                 = "amazon/aws-for-fluent-bit:stable"
                  - logConfiguration      = {
                      - logDriver = "awslogs"
                      - options   = {
                          - awslogs-group         = "cms-stage-logs"
                          - awslogs-region        = "us-east-2"
                          - awslogs-stream-prefix = "core"
                        }
                    }
                  - memoryReservation     = 100
                  - mountPoints           = []
                  - name                  = "jfp-cms-stage-log-router"
                  - portMappings          = []
                  - systemControls        = []
                  - user                  = "0"
                  - volumesFrom           = []
                },
            ]
        ) -> (known after apply) # forces replacement
      ~ enable_fault_injection   = false -> (known after apply)
      ~ id                       = "jfp-cms-stage" -> (known after apply)
      ~ revision                 = 1 -> (known after apply)
      - tags                     = {} -> null
      ~ tags_all                 = {} -> (known after apply)
        # (12 unchanged attributes hidden)
    }

  # module.stage.module.cms.module.ecs-task.aws_ssm_parameter.parameters["JWT_SECRET"] will be created
+ resource "aws_ssm_parameter" "parameters" {
      + arn            = (known after apply)
      + data_type      = (known after apply)
      + has_value_wo   = (known after apply)
      + id             = (known after apply)
      + insecure_value = (known after apply)
      + key_id         = (known after apply)
      + name           = "/ecs/cms/stage/JWT_SECRET"
      + overwrite      = true
      + region         = "us-east-2"
      + tags           = {
          + "name" = "JWT_SECRET"
        }
      + tags_all       = {
          + "name" = "JWT_SECRET"
        }
      + tier           = (known after apply)
      + type           = "SecureString"
      + value          = (sensitive value)
      + value_wo       = (write-only attribute)
      + version        = (known after apply)
    }

Plan: 5 to add, 5 to change, 4 to destroy.
╷
│ Warning: Deprecated Resource
│ 
│   with module.datadog.datadog_integration_aws.sandbox,
│   on modules/aws/datadog/main.tf line 118, in resource "datadog_integration_aws" "sandbox":
│  118: resource "datadog_integration_aws" "sandbox" {
│ 
│ **This resource is deprecated - use the `datadog_integration_aws_account`
│ resource instead**:
│ https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/integration_aws_account
╵
╷
│ Warning: Deprecated attribute
│ 
│   on .terraform/modules/datadog.datadog_log_forwarder/modules/log_forwarder/main.tf line 2, in locals:
│    2:   bucket_name = var.bucket_name != "" ? var.bucket_name : "datadog-forwarder-${data.aws_caller_identity.current.account_id}-${data.aws_region.current.name}"
│ 
│ The attribute "name" is deprecated. Refer to the provider documentation for
│ details.
│ 
│ (and 2 more similar warnings elsewhere)
╵
  • ▶️ To apply this plan, comment:
    atlantis apply -d infrastructure
  • 🚮 To delete this plan and lock, click here
  • 🔁 To plan this project again, comment:
    atlantis plan -d infrastructure

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


  • ⏩ To apply all unapplied plans from this Pull Request, comment:
    atlantis apply
  • 🚮 To delete all plans and locks from this Pull Request, comment:
    atlantis unlock

@tataihono
Copy link
Contributor Author

atlantis apply

@jesus-film-bot
Copy link

Ran Apply for dir: infrastructure workspace: default

Apply Error

running 'sh -c' '/usr/local/bin/terraform apply -input=false "/home/atlantis/.atlantis/repos/JesusFilm/core/8601/default/infrastructure/default.tfplan"' in '/home/atlantis/.atlantis/repos/JesusFilm/core/8601/default/infrastructure': exit status 1
╷
│ Error: missing or corrupted provider plugins:
│   - registry.terraform.io/dopplerhq/doppler: there is no package for registry.terraform.io/dopplerhq/doppler 1.20.0 cached in .terraform/providers
│   - registry.terraform.io/hashicorp/aws: there is no package for registry.terraform.io/hashicorp/aws 6.10.0 cached in .terraform/providers
│   - registry.terraform.io/hashicorp/null: there is no package for registry.terraform.io/hashicorp/null 3.2.4 cached in .terraform/providers
│   - registry.terraform.io/hashicorp/random: there is no package for registry.terraform.io/hashicorp/random 3.7.2 cached in .terraform/providers
│   - registry.terraform.io/datadog/datadog: there is no package for registry.terraform.io/datadog/datadog 3.72.0 cached in .terraform/providers
│ 
│ 
╵

@tataihono
Copy link
Contributor Author

atlantis apply

@jesus-film-bot
Copy link

Apply Error

stat /home/atlantis/.atlantis/repos/JesusFilm/core/8601: no such file or directory

@tataihono
Copy link
Contributor Author

atlantis plan

@jesus-film-bot
Copy link

Ran Plan for dir: infrastructure workspace: default

Show Output
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+ create
~ update in-place
- destroy
+/- create replacement and then destroy

Terraform will perform the following actions:

  # module.prod.module.arclight.module.ecs-task.aws_ecs_service.ecs_service will be updated in-place
~ resource "aws_ecs_service" "ecs_service" {
      ~ desired_count                      = 2 -> 4
        id                                 = "arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-prod/arclight-prod-service"
        name                               = "arclight-prod-service"
        tags                               = {}
        # (18 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

  # module.prod.module.cms.module.ecs-task.aws_ecs_service.ecs_service will be updated in-place
~ resource "aws_ecs_service" "ecs_service" {
        id                                 = "arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-prod/cms-prod-service"
        name                               = "cms-prod-service"
        tags                               = {}
      ~ task_definition                    = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-cms-prod:1" -> (known after apply)
        # (18 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

  # module.prod.module.cms.module.ecs-task.aws_ecs_task_definition.ecs_task_definition must be replaced
+/- resource "aws_ecs_task_definition" "ecs_task_definition" {
      ~ arn                      = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-cms-prod:1" -> (known after apply)
      ~ arn_without_revision     = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-cms-prod" -> (known after apply)
      ~ container_definitions    = jsonencode(
            [
              - {
                  - cpu              = 1024
                  - environment      = [
                      - {
                          - name  = "NODE_ENV"
                          - value = "production"
                        },
                      - {
                          - name  = "SERVICE_ENV"
                          - value = "prod"
                        },
                      - {
                          - name  = "SERVICE_NAME"
                          - value = "cms"
                        },
                    ]
                  - essential        = true
                  - image            = "410965620680.dkr.ecr.us-east-2.amazonaws.com/jfp-cms-prod:latest"
                  - logConfiguration = {
                      - logDriver     = "awsfirelens"
                      - options       = {
                          - Host        = "http-intake.logs.datadoghq.com"
                          - Name        = "datadog"
                          - TLS         = "on"
                          - compress    = "gzip"
                          - dd_service  = "cms"
                          - dd_source   = "strapi"
                          - dd_tags     = "env:prod"
                          - provider    = "ecs"
                          - retry_limit = "2"
                        }
                      - secretOptions = [
                          - {
                              - name      = "apikey"
                              - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/terraform/prd/DATADOG_API_KEY"
                            },
                        ]
                    }
                  - memory           = 2048
                  - mountPoints      = []
                  - name             = "jfp-cms-prod-app"
                  - portMappings     = [
                      - {
                          - containerPort = 1337
                          - hostPort      = 1337
                          - protocol      = "tcp"
                        },
                    ]
                  - secrets          = [
                      - {
                          - name      = "ADMIN_JWT_SECRET"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/ADMIN_JWT_SECRET"
                        },
                      - {
                          - name      = "API_TOKEN_SALT"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/API_TOKEN_SALT"
                        },
                      - {
                          - name      = "APP_KEYS"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/APP_KEYS"
                        },
                      - {
                          - name      = "DD_API_KEY"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/terraform/prd/DATADOG_API_KEY"
                        },
                      - {
                          - name      = "ENCRYPTION_KEY"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/ENCRYPTION_KEY"
                        },
                      - {
                          - name      = "MUX_ACCESS_TOKEN_ID"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/MUX_ACCESS_TOKEN_ID"
                        },
                      - {
                          - name      = "MUX_PLAYBACK_SIGNING_ID"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/MUX_PLAYBACK_SIGNING_ID"
                        },
                      - {
                          - name      = "MUX_PLAYBACK_SIGNING_SECRET"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/MUX_PLAYBACK_SIGNING_SECRET"
                        },
                      - {
                          - name      = "MUX_SECRET_KEY"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/MUX_SECRET_KEY"
                        },
                      - {
                          - name      = "MUX_WEBHOOK_SIGNING_SECRET"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/MUX_WEBHOOK_SIGNING_SECRET"
                        },
                      - {
                          - name      = "PG_DATABASE_URL_CMS"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/PG_DATABASE_URL_CMS"
                        },
                      - {
                          - name      = "TRANSFER_TOKEN_SALT"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/prod/TRANSFER_TOKEN_SALT"
                        },
                    ]
                  - systemControls   = []
                  - volumesFrom      = []
                },
              - {
                  - environment       = [
                      - {
                          - name  = "DD_APM_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_APM_NON_LOCAL_TRAFFIC"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_DOGSTATSD_NON_LOCAL_TRAFFIC"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_LOGS_INJECTION"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_ENDPOINT"
                          - value = "0.0.0.0:4317"
                        },
                      - {
                          - name  = "DD_OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_ENDPOINT"
                          - value = "0.0.0.0:4318"
                        },
                      - {
                          - name  = "DD_PROCESS_AGENT_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_PROFILING_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_RUNTIME_METRICS_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_TAGS"
                          - value = "env:prod app:cms"
                        },
                      - {
                          - name  = "DD_TRACE_ANALYTICS_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "ECS_FARGATE"
                          - value = "true"
                        },
                    ]
                  - essential         = true
                  - image             = "public.ecr.aws/datadog/agent:latest"
                  - logConfiguration  = {
                      - logDriver = "awslogs"
                      - options   = {
                          - awslogs-group         = "cms-prod-logs"
                          - awslogs-region        = "us-east-2"
                          - awslogs-stream-prefix = "core"
                        }
                    }
                  - memoryReservation = 128
                  - mountPoints       = []
                  - name              = "jfp-cms-prod-datadog-agent"
                  - portMappings      = [
                      - {
                          - containerPort = 4317
                          - hostPort      = 4317
                          - protocol      = "tcp"
                        },
                      - {
                          - containerPort = 4318
                          - hostPort      = 4318
                          - protocol      = "tcp"
                        },
                      - {
                          - containerPort = 8125
                          - hostPort      = 8125
                          - protocol      = "udp"
                        },
                    ]
                  - secrets           = [
                      - {
                          - name      = "DD_API_KEY"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/terraform/prd/DATADOG_API_KEY"
                        },
                    ]
                  - systemControls    = []
                  - volumesFrom       = []
                },
              - {
                  - environment           = []
                  - essential             = true
                  - firelensConfiguration = {
                      - options = {
                          - config-file-type        = "file"
                          - config-file-value       = "/fluent-bit/configs/parse-json.conf"
                          - enable-ecs-log-metadata = "true"
                        }
                      - type    = "fluentbit"
                    }
                  - image                 = "amazon/aws-for-fluent-bit:stable"
                  - logConfiguration      = {
                      - logDriver = "awslogs"
                      - options   = {
                          - awslogs-group         = "cms-prod-logs"
                          - awslogs-region        = "us-east-2"
                          - awslogs-stream-prefix = "core"
                        }
                    }
                  - memoryReservation     = 100
                  - mountPoints           = []
                  - name                  = "jfp-cms-prod-log-router"
                  - portMappings          = []
                  - systemControls        = []
                  - user                  = "0"
                  - volumesFrom           = []
                },
            ]
        ) -> (known after apply) # forces replacement
      ~ enable_fault_injection   = false -> (known after apply)
      ~ id                       = "jfp-cms-prod" -> (known after apply)
      ~ revision                 = 1 -> (known after apply)
      - tags                     = {} -> null
      ~ tags_all                 = {} -> (known after apply)
        # (12 unchanged attributes hidden)
    }

  # module.prod.module.cms.module.ecs-task.aws_ssm_parameter.parameters["JWT_SECRET"] will be created
+ resource "aws_ssm_parameter" "parameters" {
      + arn            = (known after apply)
      + data_type      = (known after apply)
      + has_value_wo   = (known after apply)
      + id             = (known after apply)
      + insecure_value = (known after apply)
      + key_id         = (known after apply)
      + name           = "/ecs/cms/prod/JWT_SECRET"
      + overwrite      = true
      + region         = "us-east-2"
      + tags           = {
          + "name" = "JWT_SECRET"
        }
      + tags_all       = {
          + "name" = "JWT_SECRET"
        }
      + tier           = (known after apply)
      + type           = "SecureString"
      + value          = (sensitive value)
      + value_wo       = (write-only attribute)
      + version        = (known after apply)
    }

  # module.stage.module.api-journeys-modern.module.ecs-task.aws_ecs_service.ecs_service will be updated in-place
~ resource "aws_ecs_service" "ecs_service" {
        id                                 = "arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-stage/api-journeys-modern-stage-service"
        name                               = "api-journeys-modern-stage-service"
        tags                               = {}
      ~ task_definition                    = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-api-journeys-modern-stage:18" -> (known after apply)
        # (18 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

  # module.stage.module.api-journeys-modern.module.ecs-task.aws_ecs_task_definition.ecs_task_definition must be replaced
+/- resource "aws_ecs_task_definition" "ecs_task_definition" {
      ~ arn                      = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-api-journeys-modern-stage:18" -> (known after apply)
      ~ arn_without_revision     = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-api-journeys-modern-stage" -> (known after apply)
      ~ container_definitions    = jsonencode(
          ~ [
              ~ {
                    name             = "jfp-api-journeys-modern-stage-app"
                  ~ secrets          = [
                        # (26 unchanged elements hidden)
                        {
                            name      = "PG_DATABASE_URL_JOURNEYS"
                            valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/api-journeys/stage/PG_DATABASE_URL_JOURNEYS"
                        },
                      - {
                          - name      = "PG_DATABASE_URL_USERS"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/api-journeys/stage/PG_DATABASE_URL_USERS"
                        },
                        {
                            name      = "PLAUSIBLE_API_KEY"
                            valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/api-journeys/stage/PLAUSIBLE_API_KEY"
                        },
                        # (21 unchanged elements hidden)
                    ]
                  - systemControls   = []
                    # (9 unchanged attributes hidden)
                },
              ~ {
                    name              = "jfp-api-journeys-modern-stage-datadog-agent"
                  - systemControls    = []
                    # (9 unchanged attributes hidden)
                },
              ~ {
                    name                  = "jfp-api-journeys-modern-stage-log-router"
                  - systemControls        = []
                    # (10 unchanged attributes hidden)
                },
            ] # forces replacement
        )
      ~ enable_fault_injection   = false -> (known after apply)
      ~ id                       = "jfp-api-journeys-modern-stage" -> (known after apply)
      ~ revision                 = 18 -> (known after apply)
      - tags                     = {} -> null
      ~ tags_all                 = {} -> (known after apply)
        # (12 unchanged attributes hidden)
    }

  # module.stage.module.api-journeys-modern.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL_USERS"] will be destroyed
  # (because key ["PG_DATABASE_URL_USERS"] is not in for_each map)
- resource "aws_ssm_parameter" "parameters" {
      - arn             = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/api-journeys/stage/PG_DATABASE_URL_USERS" -> null
      - data_type       = "text" -> null
      - has_value_wo    = false -> null
      - id              = "/ecs/api-journeys/stage/PG_DATABASE_URL_USERS" -> null
      - key_id          = "alias/aws/ssm" -> null
      - name            = "/ecs/api-journeys/stage/PG_DATABASE_URL_USERS" -> null
      - overwrite       = true -> null
      - region          = "us-east-2" -> null
      - tags            = {
          - "name" = "PG_DATABASE_URL_USERS"
        } -> null
      - tags_all        = {
          - "name" = "PG_DATABASE_URL_USERS"
        } -> null
      - tier            = "Standard" -> null
      - type            = "SecureString" -> null
      - value           = (sensitive value) -> null
      - value_wo        = (write-only attribute) -> null
      - version         = 2 -> null
        # (2 unchanged attributes hidden)
    }

  # module.stage.module.arclight.module.ecs-task.aws_ecs_service.ecs_service will be updated in-place
~ resource "aws_ecs_service" "ecs_service" {
      ~ desired_count                      = 1 -> 4
        id                                 = "arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-stage/arclight-stage-service"
        name                               = "arclight-stage-service"
        tags                               = {}
        # (18 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

  # module.stage.module.cms.module.ecs-task.aws_ecs_service.ecs_service will be updated in-place
~ resource "aws_ecs_service" "ecs_service" {
        id                                 = "arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-stage/cms-stage-service"
        name                               = "cms-stage-service"
        tags                               = {}
      ~ task_definition                    = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-cms-stage:1" -> (known after apply)
        # (18 unchanged attributes hidden)

        # (4 unchanged blocks hidden)
    }

  # module.stage.module.cms.module.ecs-task.aws_ecs_task_definition.ecs_task_definition must be replaced
+/- resource "aws_ecs_task_definition" "ecs_task_definition" {
      ~ arn                      = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-cms-stage:1" -> (known after apply)
      ~ arn_without_revision     = "arn:aws:ecs:us-east-2:410965620680:task-definition/jfp-cms-stage" -> (known after apply)
      ~ container_definitions    = jsonencode(
            [
              - {
                  - cpu              = 1024
                  - environment      = [
                      - {
                          - name  = "NODE_ENV"
                          - value = "production"
                        },
                      - {
                          - name  = "SERVICE_ENV"
                          - value = "stage"
                        },
                      - {
                          - name  = "SERVICE_NAME"
                          - value = "cms"
                        },
                    ]
                  - essential        = true
                  - image            = "410965620680.dkr.ecr.us-east-2.amazonaws.com/jfp-cms-stage:latest"
                  - logConfiguration = {
                      - logDriver     = "awsfirelens"
                      - options       = {
                          - Host        = "http-intake.logs.datadoghq.com"
                          - Name        = "datadog"
                          - TLS         = "on"
                          - compress    = "gzip"
                          - dd_service  = "cms"
                          - dd_source   = "strapi"
                          - dd_tags     = "env:stage"
                          - provider    = "ecs"
                          - retry_limit = "2"
                        }
                      - secretOptions = [
                          - {
                              - name      = "apikey"
                              - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/terraform/prd/DATADOG_API_KEY"
                            },
                        ]
                    }
                  - memory           = 2048
                  - mountPoints      = []
                  - name             = "jfp-cms-stage-app"
                  - portMappings     = [
                      - {
                          - containerPort = 1337
                          - hostPort      = 1337
                          - protocol      = "tcp"
                        },
                    ]
                  - secrets          = [
                      - {
                          - name      = "ADMIN_JWT_SECRET"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/ADMIN_JWT_SECRET"
                        },
                      - {
                          - name      = "API_TOKEN_SALT"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/API_TOKEN_SALT"
                        },
                      - {
                          - name      = "APP_KEYS"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/APP_KEYS"
                        },
                      - {
                          - name      = "DD_API_KEY"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/terraform/prd/DATADOG_API_KEY"
                        },
                      - {
                          - name      = "ENCRYPTION_KEY"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/ENCRYPTION_KEY"
                        },
                      - {
                          - name      = "MUX_ACCESS_TOKEN_ID"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/MUX_ACCESS_TOKEN_ID"
                        },
                      - {
                          - name      = "MUX_PLAYBACK_SIGNING_ID"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/MUX_PLAYBACK_SIGNING_ID"
                        },
                      - {
                          - name      = "MUX_PLAYBACK_SIGNING_SECRET"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/MUX_PLAYBACK_SIGNING_SECRET"
                        },
                      - {
                          - name      = "MUX_SECRET_KEY"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/MUX_SECRET_KEY"
                        },
                      - {
                          - name      = "MUX_WEBHOOK_SIGNING_SECRET"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/MUX_WEBHOOK_SIGNING_SECRET"
                        },
                      - {
                          - name      = "PG_DATABASE_URL_CMS"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/PG_DATABASE_URL_CMS"
                        },
                      - {
                          - name      = "TRANSFER_TOKEN_SALT"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/ecs/cms/stage/TRANSFER_TOKEN_SALT"
                        },
                    ]
                  - systemControls   = []
                  - volumesFrom      = []
                },
              - {
                  - environment       = [
                      - {
                          - name  = "DD_APM_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_APM_NON_LOCAL_TRAFFIC"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_DOGSTATSD_NON_LOCAL_TRAFFIC"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_LOGS_INJECTION"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_ENDPOINT"
                          - value = "0.0.0.0:4317"
                        },
                      - {
                          - name  = "DD_OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_ENDPOINT"
                          - value = "0.0.0.0:4318"
                        },
                      - {
                          - name  = "DD_PROCESS_AGENT_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_PROFILING_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_RUNTIME_METRICS_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "DD_TAGS"
                          - value = "env:stage app:cms"
                        },
                      - {
                          - name  = "DD_TRACE_ANALYTICS_ENABLED"
                          - value = "true"
                        },
                      - {
                          - name  = "ECS_FARGATE"
                          - value = "true"
                        },
                    ]
                  - essential         = true
                  - image             = "public.ecr.aws/datadog/agent:latest"
                  - logConfiguration  = {
                      - logDriver = "awslogs"
                      - options   = {
                          - awslogs-group         = "cms-stage-logs"
                          - awslogs-region        = "us-east-2"
                          - awslogs-stream-prefix = "core"
                        }
                    }
                  - memoryReservation = 128
                  - mountPoints       = []
                  - name              = "jfp-cms-stage-datadog-agent"
                  - portMappings      = [
                      - {
                          - containerPort = 4317
                          - hostPort      = 4317
                          - protocol      = "tcp"
                        },
                      - {
                          - containerPort = 4318
                          - hostPort      = 4318
                          - protocol      = "tcp"
                        },
                      - {
                          - containerPort = 8125
                          - hostPort      = 8125
                          - protocol      = "udp"
                        },
                    ]
                  - secrets           = [
                      - {
                          - name      = "DD_API_KEY"
                          - valueFrom = "arn:aws:ssm:us-east-2:410965620680:parameter/terraform/prd/DATADOG_API_KEY"
                        },
                    ]
                  - systemControls    = []
                  - volumesFrom       = []
                },
              - {
                  - environment           = []
                  - essential             = true
                  - firelensConfiguration = {
                      - options = {
                          - config-file-type        = "file"
                          - config-file-value       = "/fluent-bit/configs/parse-json.conf"
                          - enable-ecs-log-metadata = "true"
                        }
                      - type    = "fluentbit"
                    }
                  - image                 = "amazon/aws-for-fluent-bit:stable"
                  - logConfiguration      = {
                      - logDriver = "awslogs"
                      - options   = {
                          - awslogs-group         = "cms-stage-logs"
                          - awslogs-region        = "us-east-2"
                          - awslogs-stream-prefix = "core"
                        }
                    }
                  - memoryReservation     = 100
                  - mountPoints           = []
                  - name                  = "jfp-cms-stage-log-router"
                  - portMappings          = []
                  - systemControls        = []
                  - user                  = "0"
                  - volumesFrom           = []
                },
            ]
        ) -> (known after apply) # forces replacement
      ~ enable_fault_injection   = false -> (known after apply)
      ~ id                       = "jfp-cms-stage" -> (known after apply)
      ~ revision                 = 1 -> (known after apply)
      - tags                     = {} -> null
      ~ tags_all                 = {} -> (known after apply)
        # (12 unchanged attributes hidden)
    }

  # module.stage.module.cms.module.ecs-task.aws_ssm_parameter.parameters["JWT_SECRET"] will be created
+ resource "aws_ssm_parameter" "parameters" {
      + arn            = (known after apply)
      + data_type      = (known after apply)
      + has_value_wo   = (known after apply)
      + id             = (known after apply)
      + insecure_value = (known after apply)
      + key_id         = (known after apply)
      + name           = "/ecs/cms/stage/JWT_SECRET"
      + overwrite      = true
      + region         = "us-east-2"
      + tags           = {
          + "name" = "JWT_SECRET"
        }
      + tags_all       = {
          + "name" = "JWT_SECRET"
        }
      + tier           = (known after apply)
      + type           = "SecureString"
      + value          = (sensitive value)
      + value_wo       = (write-only attribute)
      + version        = (known after apply)
    }

Plan: 5 to add, 5 to change, 4 to destroy.
╷
│ Warning: Deprecated Resource
│ 
│   with module.datadog.datadog_integration_aws.sandbox,
│   on modules/aws/datadog/main.tf line 118, in resource "datadog_integration_aws" "sandbox":
│  118: resource "datadog_integration_aws" "sandbox" {
│ 
│ **This resource is deprecated - use the `datadog_integration_aws_account`
│ resource instead**:
│ https://registry.terraform.io/providers/DataDog/datadog/latest/docs/resources/integration_aws_account
╵
╷
│ Warning: Deprecated attribute
│ 
│   on .terraform/modules/datadog.datadog_log_forwarder/modules/log_forwarder/main.tf line 2, in locals:
│    2:   bucket_name = var.bucket_name != "" ? var.bucket_name : "datadog-forwarder-${data.aws_caller_identity.current.account_id}-${data.aws_region.current.name}"
│ 
│ The attribute "name" is deprecated. Refer to the provider documentation for
│ details.
│ 
│ (and 2 more similar warnings elsewhere)
╵
  • ▶️ To apply this plan, comment:
    atlantis apply -d infrastructure
  • 🚮 To delete this plan and lock, click here
  • 🔁 To plan this project again, comment:
    atlantis plan -d infrastructure

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


  • ⏩ To apply all unapplied plans from this Pull Request, comment:
    atlantis apply
  • 🚮 To delete all plans and locks from this Pull Request, comment:
    atlantis unlock

@tataihono
Copy link
Contributor Author

atlantis apply

@jesus-film-bot
Copy link

Ran Apply for dir: infrastructure workspace: default

Show Output
module.prod.module.cms.module.ecs-task.aws_ssm_parameter.parameters["JWT_SECRET"]: Creating...
module.stage.module.cms.module.ecs-task.aws_ssm_parameter.parameters["JWT_SECRET"]: Creating...
module.prod.module.arclight.module.ecs-task.aws_ecs_service.ecs_service: Modifying... [id=arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-prod/arclight-prod-service]
module.stage.module.arclight.module.ecs-task.aws_ecs_service.ecs_service: Modifying... [id=arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-stage/arclight-stage-service]
module.stage.module.api-journeys-modern.module.ecs-task.aws_ecs_task_definition.ecs_task_definition: Creating...
module.stage.module.api-journeys-modern.module.ecs-task.aws_ecs_task_definition.ecs_task_definition: Creation complete after 0s [id=jfp-api-journeys-modern-stage]
module.stage.module.api-journeys-modern.module.ecs-task.aws_ecs_service.ecs_service: Modifying... [id=arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-stage/api-journeys-modern-stage-service]
module.prod.module.cms.module.ecs-task.aws_ssm_parameter.parameters["JWT_SECRET"]: Creation complete after 1s [id=/ecs/cms/prod/JWT_SECRET]
module.prod.module.cms.module.ecs-task.aws_ecs_task_definition.ecs_task_definition: Creating...
module.stage.module.cms.module.ecs-task.aws_ssm_parameter.parameters["JWT_SECRET"]: Creation complete after 0s [id=/ecs/cms/stage/JWT_SECRET]
module.stage.module.cms.module.ecs-task.aws_ecs_task_definition.ecs_task_definition: Creating...
module.prod.module.cms.module.ecs-task.aws_ecs_task_definition.ecs_task_definition: Creation complete after 0s [id=jfp-cms-prod]
module.stage.module.cms.module.ecs-task.aws_ecs_task_definition.ecs_task_definition: Creation complete after 0s [id=jfp-cms-stage]
module.prod.module.cms.module.ecs-task.aws_ecs_service.ecs_service: Modifying... [id=arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-prod/cms-prod-service]
module.stage.module.cms.module.ecs-task.aws_ecs_service.ecs_service: Modifying... [id=arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-stage/cms-stage-service]
module.stage.module.arclight.module.ecs-task.aws_ecs_service.ecs_service: Modifications complete after 0s [id=arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-stage/arclight-stage-service]
module.prod.module.arclight.module.ecs-task.aws_ecs_service.ecs_service: Modifications complete after 0s [id=arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-prod/arclight-prod-service]
module.stage.module.api-journeys-modern.module.ecs-task.aws_ecs_service.ecs_service: Modifications complete after 0s [id=arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-stage/api-journeys-modern-stage-service]
module.stage.module.api-journeys-modern.module.ecs-task.aws_ecs_task_definition.ecs_task_definition (deposed object b5c2392d): Destroying... [id=jfp-api-journeys-modern-stage]
module.stage.module.api-journeys-modern.module.ecs-task.aws_ecs_task_definition.ecs_task_definition: Destruction complete after 1s
module.stage.module.api-journeys-modern.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL_USERS"]: Destroying... [id=/ecs/api-journeys/stage/PG_DATABASE_URL_USERS]
module.stage.module.api-journeys-modern.module.ecs-task.aws_ssm_parameter.parameters["PG_DATABASE_URL_USERS"]: Destruction complete after 0s
module.prod.module.cms.module.ecs-task.aws_ecs_service.ecs_service: Modifications complete after 1s [id=arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-prod/cms-prod-service]
module.prod.module.cms.module.ecs-task.aws_ecs_task_definition.ecs_task_definition (deposed object 8ae49334): Destroying... [id=jfp-cms-prod]
module.prod.module.cms.module.ecs-task.aws_ecs_task_definition.ecs_task_definition: Destruction complete after 0s
module.stage.module.cms.module.ecs-task.aws_ecs_service.ecs_service: Modifications complete after 1s [id=arn:aws:ecs:us-east-2:410965620680:service/jfp-ecs-cluster-stage/cms-stage-service]
module.stage.module.cms.module.ecs-task.aws_ecs_task_definition.ecs_task_definition (deposed object 812fc9a9): Destroying... [id=jfp-cms-stage]
module.stage.module.cms.module.ecs-task.aws_ecs_task_definition.ecs_task_definition: Destruction complete after 0s
╷
│ Warning: Deprecated attribute
│ 
│   on .terraform/modules/datadog.datadog_log_forwarder/modules/log_forwarder/main.tf line 2, in locals:
│    2:   bucket_name = var.bucket_name != "" ? var.bucket_name : "datadog-forwarder-${data.aws_caller_identity.current.account_id}-${data.aws_region.current.name}"
│ 
│ The attribute "name" is deprecated. Refer to the provider documentation for
│ details.
╵

Apply complete! Resources: 5 added, 5 changed, 4 destroyed.

@jesus-film-bot
Copy link

Automatically merging because all plans have been successfully applied.

@jesus-film-bot
Copy link

Automerging failed:

merging pull request: PUT https://api.github.com/repos/JesusFilm/core/pulls/8601/merge: 404 Not Found []

@tataihono tataihono merged commit a111f9a into main Jan 16, 2026
43 checks passed
@jesus-film-bot
Copy link

Locks and plans deleted for the projects and workspaces modified in this pull request:

  • dir: infrastructure workspace: default

@tataihono tataihono deleted the tataihono/feat-5-cms-api-add-client-content-type branch January 16, 2026 03:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants