Skip to content

Amplify Current Configuration — Live AWS State

Live configuration of the existing Amplify applications as retrieved from AWS, compared against the CloudFormation templates in the infrastructure repository. This documents the actual state that the new pipeline must work with during production cutover (Development Blueprint Step 5).

Two Amplify apps serving the dev and stage partitions.

PropertyValue
App IDd38w5m1ngjza76
Repositoryhttps://github.com/Arda-cards/arda-frontend-app
PlatformWEB_COMPUTE
Branchdev
enableAutoBuildtrue
enablePullRequestPreviewfalse
StagePRODUCTION
Domaindev.alpha002.app.arda.cards
Service RoleAmplifySSRLoggingRole-811a740a-a96f-47a3-a2bd-8abc3dad76f3
Compute Role (branch)(none)
Build computeSTANDARD_8GB
Last deploy2026-03-18, status: SUCCEED, job: 0000000090
VariableValue
ARDA_API_KEY(set)
BASE_URLhttps://dev.alpha002.io.arda.cards
GITHUB_TOKEN(set)
NEXT_PUBLIC_COGNITO_CLIENT_ID(set)
NEXT_PUBLIC_COGNITO_CLIENT_SECRET(set)
NEXT_PUBLIC_COGNITO_REGIONus-east-1
NEXT_PUBLIC_COGNITO_USER_POOL_ID(set)
NEXT_PUBLIC_DEPLOY_ENVDEV
NEXT_PUBLIC_SENTRY_DSN(set)
TENANT_ID(set)
TENANT_ID_2(set)
version: 1
frontend:
phases:
preBuild:
commands:
- echo "Node $(node --version)"
- echo "NPM $(npm --version)"
- npm ci --cache .npm --prefer-offline
- echo "BASE_URL=$BASE_URL" >> .env
- echo "ARDA_API_KEY=$ARDA_API_KEY" >> .env
- echo "TENANT_ID=$TENANT_ID" >> .env
- echo "TENANT_ID_2=$TENANT_ID_2" >> .env
build:
commands:
- export NEXT_TELEMETRY_DISABLED=1
- npm run build
- test -d .next || (echo ".next not found" && exit 1)
- test -d .next/server || (echo ".next/server not found (SSR missing?)" && exit 1)
artifacts:
baseDirectory: .next
files:
- '**/*'
cache:
paths:
- .next/cache/**/*
- .npm/**/*
PropertyValue
App IDd1kbrvra79y8sc
Repositoryhttps://github.com/Arda-cards/arda-frontend-app
PlatformWEB_COMPUTE
Branchstage
enableAutoBuildtrue
enablePullRequestPreviewfalse
StagePRODUCTION
Domainstage.alpha002.app.arda.cards
Service RoleAmplifySSRLoggingRole-b0cfadfd-4377-46c1-b458-74832190cd75
Compute Role (branch)AmplifyComputeCognitoRole_Stage_Dev
Build computeSTANDARD_8GB
Last deploy2026-03-17, status: SUCCEED, job: 0000000168
VariableValue
ARDA_API_KEY(set)
ARDA_SIGNUP_SECRET_KEY(set)
BASE_URLhttps://stage.alpha002.io.arda.cards
COGNITO_REGIONus-east-1
COGNITO_USER_POOL_ID(set)
GITHUB_TOKEN(set)
HUBSPOT_API_BASEhttps://api.hubapi.com
HUBSPOT_CLIENT_SECRET(set)
HUBSPOT_PRIVATE_ACCESS_TOKEN(set)
NEXT_PUBLIC_COGNITO_CLIENT_ID(set)
NEXT_PUBLIC_COGNITO_CLIENT_SECRET(set)
NEXT_PUBLIC_COGNITO_REGIONus-east-1
NEXT_PUBLIC_COGNITO_USER_POOL_ID(set)
NEXT_PUBLIC_DEPLOY_ENVSTAGE
NEXT_PUBLIC_PYLON_APP_IDcfd1f3e2-b840-4ce2-ad95-03b1ec18c74d
NEXT_PUBLIC_SENTRY_DSN(set)
PYLON_WIDGET_SECRET(set)
TENANT_ID(set)
TENANT_ID_2(set)
version: 1
frontend:
phases:
preBuild:
commands:
- npm ci --cache .npm --prefer-offline
build:
commands:
- npm run build
artifacts:
baseDirectory: .next
files:
- '**/*'
cache:
paths:
- .next/cache/**/*
- .npm/**/*

These apps were created manually, not via the amplify.cfn.yaml / amplifyBranch.cfn.yaml CloudFormation templates. The following differences are relevant to the pipeline migration.

The manually created apps use auto-generated Amplify service roles, not the stack-managed roles defined in amplify.cfn.yaml:

AppService RoleCompute Role
devAmplifySSRLoggingRole-811a740a-...(none on branch)
stageAmplifySSRLoggingRole-b0cfadfd-...AmplifyComputeCognitoRole_Stage_Dev (on branch)
CFn templateStack-managed AmplifyServiceRole (AdministratorAccess-Amplify)Stack-managed AmplifyComputeRole (Secrets Manager + Cognito + Logging)

The dev app has no compute role on its branch at all, which means it cannot access Secrets Manager at runtime. The stage app has a shared compute role (AmplifyComputeCognitoRole_Stage_Dev) set on the branch level.

DifferenceDetails
Missing from dev (vs. CFn template)COGNITO_REGION, COGNITO_USER_POOL_ID, ARDA_SIGNUP_SECRET_KEY, HUBSPOT_API_BASE, HUBSPOT_CLIENT_SECRET, HUBSPOT_PRIVATE_ACCESS_TOKEN, NEXT_PUBLIC_PYLON_APP_ID, NEXT_PUBLIC_FRONTEND_URL, PYLON_WIDGET_SECRET
Missing from stage (vs. CFn template)NEXT_PUBLIC_FRONTEND_URL
Extra vars not in CFn templateGITHUB_TOKEN, TENANT_ID, TENANT_ID_2, NEXT_PUBLIC_SENTRY_DSN (both apps)
NEXT_PUBLIC_DEPLOY_ENVDEV/STAGE per partition (CFn template hardcodes PRODUCTION)

The dev app compensates for missing vars by writing some values to a .env file during the preBuild phase.

PropertyDevStageCFn template equivalent
.env file writingYes (preBuild)NoNo
SSR verificationYes (test -d .next/server)NoNo
Telemetry disabledYes (NEXT_TELEMETRY_DISABLED=1)NoNo
Node/NPM version echoYesNoNo
PropertyDev/Stage (actual)CFn template
enableAutoBuildtruetrue (hardcoded)
enablePullRequestPreviewfalsetrue
enableBranchAutoDeletion (app level)falsetrue
  1. No CloudFormation management of existing apps — per decision C3, existing apps will not be brought under CloudFormation management as part of this project. The only change at cutover is disabling auto-build and changing the branch connection to main via CLI.

  2. Environment variable gaps in dev — the dev app has fewer vars than stage or the CFn template. This does not affect the pipeline migration (env vars remain unchanged), but is worth noting for operational awareness.

  3. IAM role differences — the existing service and compute roles are different from those in the CFn template. Since the pipeline only calls StartJob/GetJob externally and does not modify Amplify app configuration, these differences do not affect the migration.

  4. enableAutoBuild: true on both branches — this must be set to false via aws amplify update-branch --no-enable-auto-build at cutover (Development Blueprint Step 5).

One Amplify app serving the prod partition. No demo Amplify app exists yet (to be created in Development Blueprint Step 1).

PropertyValue
App IDduhexavnwh88g
Repositoryhttps://github.com/Arda-cards/arda-frontend-app
PlatformWEB_COMPUTE
Branchmain
enableAutoBuildtrue
enablePullRequestPreviewfalse
StagePRODUCTION
Domainslive.app.arda.cards, prod.alpha001.app.arda.cards (two domain associations)
Service RoleAmplifySSRLoggingRole-cf3dd2b8-02a6-4e2e-9e30-f757143793f0
Compute Role (branch)AmplifyComputeCognitoRoleProd
Build computeSTANDARD_8GB
Last deploy2026-03-12, status: SUCCEED, job: 0000000097
SourceTargetStatus
https://live.app.arda.cardshttps://www.live.app.arda.cards302 (redirect to www)
/<*>/index.html404-200 (SPA fallback)

The prod app has an extra redirect rule (bare domain to www) not present in the Alpha002 apps or the CFn template.

VariableValue
ARDA_API_KEY(set)
ARDA_SIGNUP_SECRET_KEY(set)
BASE_URLhttps://prod.alpha001.io.arda.cards
COGNITO_REGIONus-east-1
COGNITO_USER_POOL_ID(set)
CORE_BACKEND_URLhttps://prod.alpha001.io.arda.cards
GITHUB_TOKEN(set)
HUBSPOT_API_BASEhttps://api.hubapi.com
HUBSPOT_CLIENT_SECRET(set)
HUBSPOT_PRIVATE_ACCESS_TOKEN(set)
NEXT_PUBLIC_COGNITO_CLIENT_ID(set)
NEXT_PUBLIC_COGNITO_CLIENT_SECRET(set)
NEXT_PUBLIC_COGNITO_REGIONus-east-1
NEXT_PUBLIC_COGNITO_USER_POOL_ID(set)
NEXT_PUBLIC_DEPLOY_ENVPRODUCTION
NEXT_PUBLIC_FRONTEND_URLhttps://www.live.app.arda.cards
NEXT_PUBLIC_PYLON_APP_IDcfd1f3e2-b840-4ce2-ad95-03b1ec18c74d
NEXT_PUBLIC_SENTRY_DSN(set)
PYLON_WIDGET_SECRET(set)
TENANT_ID(set)
TENANT_ID_2(set)
version: 1
frontend:
phases:
preBuild:
commands:
- echo "Node $(node --version)"
- echo "NPM $(npm --version)"
- npm ci --cache .npm --prefer-offline
- echo "BASE_URL=$BASE_URL" >> .env
- echo "ARDA_API_KEY=$ARDA_API_KEY" >> .env
- echo "TENANT_ID=$TENANT_ID" >> .env
- echo "TENANT_ID_2=$TENANT_ID_2" >> .env
build:
commands:
- export NODE_ENV=production
- export NEXT_TELEMETRY_DISABLED=1
- npm run build
- test -d .next || (echo ".next not found" && exit 1)
- test -d .next/server || (echo ".next/server not found (SSR missing?)" && exit 1)
artifacts:
baseDirectory: .next
files:
- '**/*'
cache:
paths:
- .next/cache/**/*
- .npm/**/*

Differences from Alpha002 and CloudFormation Templates

Section titled “Differences from Alpha002 and CloudFormation Templates”
PropertyProd (Alpha001)Dev (Alpha002)Stage (Alpha002)
Env var count211120
CORE_BACKEND_URL(set, same as BASE_URL)missingmissing
NEXT_PUBLIC_FRONTEND_URLhttps://www.live.app.arda.cardsmissingmissing
COGNITO_REGIONus-east-1missingus-east-1
Compute role (branch)AmplifyComputeCognitoRoleProd(none)AmplifyComputeCognitoRole_Stage_Dev
Build spec .env writingYesYesNo
Build spec NODE_ENV=productionYesNoNo
Domain redirect (bare to www)Yes (live.app.arda.cardswww.live.app.arda.cards)NoNo
Domain count2 (live.app.arda.cards, prod.alpha001.app.arda.cards)11

Extra vars not in CFn template (present across all apps): GITHUB_TOKEN, TENANT_ID, TENANT_ID_2, NEXT_PUBLIC_SENTRY_DSN. Prod also has CORE_BACKEND_URL which is not in any other app or the template.

COGNITO_REGION anomaly: The prod app in Alpha001 (us-east-2) has COGNITO_REGION set to us-east-1. This suggests the Cognito user pool is in a different region than the Amplify app. The CFn template uses !Ref "AWS::Region" which would resolve to us-east-2 for Alpha001 — a potential discrepancy if the demo app is created via CloudFormation.

PropertyDev (Alpha002)Stage (Alpha002)Prod (Alpha001)
App IDd38w5m1ngjza76d1kbrvra79y8scduhexavnwh88g
Account139852620346139852620346009765408297
Regionus-east-1us-east-1us-east-2
Branchdevstagemain
enableAutoBuildtruetruetrue
Domaindev.alpha002.app.arda.cardsstage.alpha002.app.arda.cardslive.app.arda.cards + prod.alpha001.app.arda.cards
Env vars112021
Compute role(none)AmplifyComputeCognitoRole_Stage_DevAmplifyComputeCognitoRoleProd
Created via CFnNoNoNo
Last deploy2026-03-182026-03-172026-03-12

All three apps must have enableAutoBuild set to false at cutover. The Amplify branch resource names (dev, stage, main) remain unchanged — StartJob addresses these resource names, not the git branch (decision D6).

The Amplify branch resource name does not always match the partition name:

PartitionAmplify Branch ResourceMatch?
devdevYes
stagestageYes
prodmainNo

The prod mismatch is a legacy of the original branch-sync model where the prod app was connected to the main git branch. The amm.sh script maintains a uniform partition-to-branch-name mapping for all partitions (including the trivial matches) to avoid special-casing. The branch name is published as a CloudFormation export (${Infrastructure}-${Partition}-I-AmplifyBranchName) via lightweight export stacks so the workflow has a single, consistent lookup mechanism. See Design Analysis — Branch Name Mapping for details.