Skip to content

feat(gen2-migration): add category initialization to amplify-gen2-migration-e2e-system#14632

Merged
iankhou merged 34 commits intogen2-migrationfrom
iankhou-gen2-migration-e2e-categories
Mar 27, 2026
Merged

feat(gen2-migration): add category initialization to amplify-gen2-migration-e2e-system#14632
iankhou merged 34 commits intogen2-migrationfrom
iankhou-gen2-migration-e2e-categories

Conversation

@iankhou
Copy link
Copy Markdown
Contributor

@iankhou iankhou commented Feb 27, 2026

Description of changes

Full migration workflow.

Description of how you validated changes

Manual verification.

Logs:

%  npx tsx src/cli.ts --app mood-board --profile amplify1 --verbose
[2026-03-27T19:00:02.794Z] [DEBUG] Log level set to: debug

╔══════════════════════════════════════════════════════════════╗
║                                                              ║
║           AWS Amplify Gen1 to Gen2 Migration System          ║
║                                                              ║
║  Automation for migrating Amplify applications from          ║
║           Gen1 to Gen2                                       ║
║                                                              ║
╚══════════════════════════════════════════════════════════════╝

[2026-03-27T19:00:02.796Z] [DEBUG] Detecting execution environment...
[2026-03-27T19:00:02.796Z] [DEBUG] Environment: local
[2026-03-27T19:00:02.796Z] [DEBUG] Environment details:
[2026-03-27T19:00:02.796Z] [INFO]  Local environment detected - will use local AWS profile: amplify1 for credentials
[2026-03-27T19:00:02.796Z] [DEBUG] Selecting apps for migration...
[2026-03-27T19:00:02.796Z] [DEBUG] [op:selectApp] Selecting app based on CLI option
[2026-03-27T19:00:02.796Z] [DEBUG] Discovering available apps
[2026-03-27T19:00:02.797Z] [DEBUG] [op:listDirectories] Listing directories in: /Users/ianhou/workplace/amplify-cli/amplify-migration-apps
[2026-03-27T19:00:02.798Z] [DEBUG] [op:listDirectories] Found 8 directories in: /Users/ianhou/workplace/amplify-cli/amplify-migration-apps
[2026-03-27T19:00:02.798Z] [INFO]  Discovered 8 available apps: _test-common, backend-only, discussions, fitness-tracker, media-vault, mood-board, product-catalog, project-boards
[2026-03-27T19:00:02.798Z] [DEBUG] Validating app exists: mood-board
[2026-03-27T19:00:02.798Z] [INFO]  Selected app: mood-board
[2026-03-27T19:00:02.798Z] [INFO]  Using Amplify environment name: wgdie
[2026-03-27T19:00:02.798Z] [INFO]  File logging set: /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/logs/oodboard260327150002.log
[2026-03-27T19:00:02.799Z] [DEBUG] Loading app configuration...
[2026-03-27T19:00:02.799Z] [DEBUG] [app:mood-board] Loading configuration for app: mood-board
[2026-03-27T19:00:02.800Z] [DEBUG] [op:readFile] Reading file: /Users/ianhou/workplace/amplify-cli/amplify-migration-apps/mood-board/migration-config.json
[2026-03-27T19:00:02.801Z] [DEBUG] [op:readFile] Successfully read file: /Users/ianhou/workplace/amplify-cli/amplify-migration-apps/mood-board/migration-config.json (1095 chars)
[2026-03-27T19:00:02.801Z] [INFO]  [app:mood-board] Successfully loaded configuration for mood-board
[2026-03-27T19:00:02.801Z] [INFO]  [app:mood-board|op:initializeApp] Starting initialization for mood-board with deployment name: oodboard260327150002
[2026-03-27T19:00:02.802Z] [DEBUG] [app:mood-board|op:initializeApp] Source app path: /Users/ianhou/workplace/amplify-cli/amplify-migration-apps/mood-board
[2026-03-27T19:00:02.802Z] [DEBUG] [app:mood-board|op:initializeApp] Config app name: mood-board
[2026-03-27T19:00:02.802Z] [INFO]  [app:oodboard260327150002|op:createAppDirectory] Creating app directory for oodboard260327150002
[2026-03-27T19:00:02.803Z] [DEBUG] [app:oodboard260327150002|op:createAppDirectory] Base path: /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps
[2026-03-27T19:00:02.803Z] [DEBUG] [app:oodboard260327150002|op:createAppDirectory] Options: {
  "basePath": "/var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps",
  "appName": "oodboard260327150002"
}
[2026-03-27T19:00:02.803Z] [DEBUG] [app:oodboard260327150002|op:createAppDirectory] Directory created: /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002
[2026-03-27T19:00:02.804Z] [INFO]  [app:oodboard260327150002|op:createAppDirectory] Successfully created app directory: /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002
[2026-03-27T19:00:02.804Z] [DEBUG] [app:mood-board|op:initializeApp] Copying source directory to target...
[2026-03-27T19:00:02.804Z] [DEBUG] [op:copyDirectory] Copying directory: /Users/ianhou/workplace/amplify-cli/amplify-migration-apps/mood-board -> /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002
[2026-03-27T19:00:44.842Z] [DEBUG] [op:copyDirectory] Successfully copied directory: /Users/ianhou/workplace/amplify-cli/amplify-migration-apps/mood-board -> /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002
[2026-03-27T19:00:44.845Z] [DEBUG] [app:mood-board|op:initializeApp] Updated package.json name to oodboard260327150002
[2026-03-27T19:00:44.845Z] [DEBUG] [app:mood-board|op:initializeApp] Running amplify init in /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002
[2026-03-27T19:00:44.847Z] [DEBUG] [app:mood-board|op:initializeApp] Using AWS profile 'amplify1' for Amplify initialization
[2026-03-27T19:00:44.847Z] [INFO]  [app:oodboard260327150002|op:initializeApp] Starting amplify init for oodboard260327150002 (config: mood-board)
[2026-03-27T19:00:44.847Z] [DEBUG] [app:oodboard260327150002|op:initializeApp] App path: /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002
[2026-03-27T19:00:44.848Z] [DEBUG] [app:oodboard260327150002|op:initializeApp] Configuration: {
  "app": {
    "name": "mood-board",
    "description": "Visual board app with emoji generator, Kinesis analytics, and S3 image storage",
    "framework": "react"
  },
  "categories": {
    "auth": {
      "signInMethods": [
        "email"
      ],
      "socialProviders": []
    },
    "api": {
      "type": "GraphQL",
      "schema": "schema.graphql",
      "authModes": [
        "API_KEY",
        "COGNITO_USER_POOLS"
      ],
      "customQueries": [
        "getRandomEmoji",
        "getKinesisEvents"
      ]
    },
    "storage": {
      "buckets": [
        {
          "name": "moodboardStorage",
          "access": [
            "auth",
            "guest"
          ]
        }
      ]
    },
    "function": {
      "functions": [
        {
          "name": "moodboardGetRandomEmoji",
          "runtime": "nodejs",
          "template": "hello-world"
        },
        {
          "name": "moodboardKinesisReader",
          "runtime": "nodejs",
          "template": "hello-world"
        }
      ]
    },
    "hosting": {
      "type": "amplify-console"
    },
    "analytics": {
      "type": "kinesis",
      "name": "moodboardKinesis",
      "shards": 1
    }
  }
}
[2026-03-27T19:00:44.848Z] [DEBUG] [app:oodboard260327150002|op:initializeApp] Deployment name: oodboard260327150002
[2026-03-27T19:00:44.848Z] [DEBUG] [app:oodboard260327150002|op:initializeApp] Calling initJSProjectWithProfile...
[2026-03-27T19:00:44.849Z] [DEBUG] [app:oodboard260327150002|op:buildInitSettings] Built init settings for oodboard260327150002 (config: mood-board):
[2026-03-27T19:00:44.849Z] [DEBUG] [app:oodboard260327150002|op:buildInitSettings] - Name: oodboard260327150002
[2026-03-27T19:00:44.849Z] [INFO]  [app:oodboard260327150002|op:buildInitSettings] Using Amplify environment name: wgdie
[2026-03-27T19:00:44.849Z] [DEBUG] [app:oodboard260327150002|op:buildInitSettings] - Using default selections for editor, framework, etc.
[2026-03-27T19:00:44.850Z] [DEBUG] [app:oodboard260327150002|op:initializeApp] Init settings: {
  "name": "oodboard260327150002",
  "envName": "wgdie",
  "editor": "Visual Studio Code",
  "framework": "react",
  "srcDir": "src",
  "distDir": "dist",
  "buildCmd": "npm run build",
  "startCmd": "npm run start",
  "disableAmplifyAppCreation": false,
  "profileName": "amplify1"
}
[2026-03-27T19:01:23.816Z] [INFO]  [app:oodboard260327150002|op:initializeApp] Successfully initialized Amplify app in /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002, oodboard260327150002 (took 38968ms)
[2026-03-27T19:01:23.817Z] [INFO]  [app:mood-board|op:initializeApp] Initializing categories for oodboard260327150002...
[2026-03-27T19:01:23.817Z] [INFO]  [app:oodboard260327150002|op:initializeCategories] Starting category initialization for oodboard260327150002
[2026-03-27T19:01:23.817Z] [INFO]  [app:oodboard260327150002|op:initializeCategories] Initializing auth category with default settings...
[2026-03-27T19:01:23.818Z] [DEBUG] [app:oodboard260327150002|op:initializeCategories] Using email sign-in method
[2026-03-27T19:01:27.468Z] [INFO]  [app:oodboard260327150002|op:initializeCategories] Auth category initialized successfully
[2026-03-27T19:01:27.469Z] [INFO]  [app:oodboard260327150002|op:initializeCategories] Initializing analytics category (kinesis: moodboardKinesis)...
[2026-03-27T19:01:32.247Z] [INFO]  [app:oodboard260327150002|op:initializeCategories] Analytics category initialized successfully
[2026-03-27T19:01:32.248Z] [INFO]  [app:oodboard260327150002|op:initializeCategories] Initializing 2 regular function(s)...
[2026-03-27T19:01:32.248Z] [DEBUG] [app:oodboard260327150002|op:initializeCategories] Adding function: moodboardGetRandomEmoji
[2026-03-27T19:01:35.798Z] [DEBUG] [app:oodboard260327150002|op:initializeCategories] Function moodboardGetRandomEmoji added successfully
[2026-03-27T19:01:35.798Z] [DEBUG] [app:oodboard260327150002|op:initializeCategories] Adding function: moodboardKinesisReader
[2026-03-27T19:01:39.550Z] [DEBUG] [app:oodboard260327150002|op:initializeCategories] Function moodboardKinesisReader added successfully
[2026-03-27T19:01:39.551Z] [INFO]  [app:oodboard260327150002|op:initializeCategories] Regular functions initialized successfully
[2026-03-27T19:01:39.551Z] [INFO]  [app:oodboard260327150002|op:initializeCategories] Initializing S3 storage category with auth and guest access...
[2026-03-27T19:01:47.777Z] [INFO]  [app:oodboard260327150002|op:initializeCategories] Storage category initialized successfully
[2026-03-27T19:01:47.779Z] [INFO]  [app:oodboard260327150002|op:initializeCategories] Initializing GraphQL API category...
[2026-03-27T19:01:53.314Z] [DEBUG] [app:oodboard260327150002|op:initializeCategories] Updated schema from schema.graphql
[2026-03-27T19:01:53.315Z] [INFO]  [app:oodboard260327150002|op:initializeCategories] GraphQL API category initialized successfully
[2026-03-27T19:01:53.315Z] [DEBUG] [app:oodboard260327150002|op:initializeCategories] No trigger functions to initialize
[2026-03-27T19:01:53.315Z] [INFO]  [app:oodboard260327150002|op:initializeCategories] Category initialization complete. Initialized: auth, analytics, function, storage, api
[2026-03-27T19:01:53.316Z] [INFO]  [app:mood-board|op:initializeApp] Successfully initialized categories: auth, analytics, function, storage, api
[2026-03-27T19:01:53.316Z] [INFO]  [app:mood-board|op:initializeApp] Pushing oodboard260327150002 to AWS...
[2026-03-27T19:01:53.316Z] [INFO]  Using amplify CLI at: /Users/ianhou/workplace/amplify-cli/packages/amplify-cli/bin/amplify
[2026-03-27T19:07:23.040Z] [INFO]  [app:mood-board|op:initializeApp] Successfully pushed oodboard260327150002 to AWS
[2026-03-27T19:07:23.041Z] [INFO]  [app:mood-board|op:initializeApp] Initializing git repository for oodboard260327150002...
[2026-03-27T19:07:26.099Z] [INFO]  [app:mood-board|op:initializeApp] Git repository initialized and Gen1 state committed
[2026-03-27T19:07:26.099Z] [INFO]  [app:mood-board|op:initializeApp] Running gen2-migration pre-deployment workflow for oodboard260327150002...
[2026-03-27T19:07:26.100Z] [INFO]  [op:gen2-migration-workflow] Starting pre-deployment workflow (lock -> checkout -> generate)...
[2026-03-27T19:07:26.101Z] [INFO]  [op:gen2-migration-lock] Executing gen2-migration lock...
[2026-03-27T19:07:26.101Z] [DEBUG] [op:gen2-migration-lock] App path: /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002
[2026-03-27T19:07:26.101Z] [DEBUG] [op:gen2-migration-lock] Using amplify CLI at: /Users/ianhou/workplace/amplify-cli/packages/amplify-cli/bin/amplify
[2026-03-27T19:07:26.102Z] [DEBUG] [op:gen2-migration-lock] Command: /Users/ianhou/workplace/amplify-cli/packages/amplify-cli/bin/amplify gen2-migration lock --yes
[2026-03-27T19:08:48.222Z] [INFO]  [op:gen2-migration-lock] gen2-migration lock output:


Validations Summary

┌────────────────────┬──────────┐
│ Validation         │ Status   │
├────────────────────┼──────────┤
│ Environment Status │ ✔ Passed │
├────────────────────┼──────────┤
│ Drift              │ ✔ Passed │
└────────────────────┴──────────┘

You are about to execute 'lock' on environment 'd3kva18a2y9d6k/wgdie'.

Operations Summary

Project

1. Enable deletion protection for table 'Board-orbn32wax5fv5cm4qzlnoujosy-wgdie'
2. Enable deletion protection for table 'MoodItem-orbn32wax5fv5cm4qzlnoujosy-wgdie'
3. Add environment variable 'GEN2_MIGRATION_ENVIRONMENT_NAME' (value: wgdie)
4. Add lock statement to stack policy on 'amplify-oodboard260327150002-wgdie-1db3f': {"Effect":"Deny","Action":"Update:*","Principal":"*","Resource":"*"}
Implications

• You will not be able to run 'amplify push' on environment 'wgdie'
• You will not be able to migrate another environment until migration of 'wgdie' is complete or rolled back

(You can rollback this command by running: 'amplify gen2-migration lock --rollback')


[2026-03-27T19:08:47.378Z] [lock] [oodboard260327150002/wgdie] • Execute
[2026-03-27T19:08:47.519Z] [lock] [oodboard260327150002/wgdie] • Enabled deletion protection for table 'Board-orbn32wax5fv5cm4qzlnoujosy-wgdie'
[2026-03-27T19:08:47.565Z] [lock] [oodboard260327150002/wgdie] • Enabled deletion protection for table 'MoodItem-orbn32wax5fv5cm4qzlnoujosy-wgdie'
[2026-03-27T19:08:47.911Z] [lock] [oodboard260327150002/wgdie] • Added 'GEN2_MIGRATION_ENVIRONMENT_NAME' environment variable (value: wgdie)
[2026-03-27T19:08:48.205Z] [lock] [oodboard260327150002/wgdie] • Successfully added lock statement to stack policy on 'amplify-oodboard260327150002-wgdie-1db3f'

✅ Done
[2026-03-27T19:08:48.223Z] [INFO]  [op:gen2-migration-lock] gen2-migration lock completed (82120ms)
[2026-03-27T19:08:48.223Z] [INFO]  [op:gen2-migration-workflow] Creating and checking out branch 'gen2-wgdie'...
[2026-03-27T19:08:48.456Z] [INFO]  [op:gen2-migration-generate] Executing gen2-migration generate...
[2026-03-27T19:08:48.456Z] [DEBUG] [op:gen2-migration-generate] App path: /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002
[2026-03-27T19:08:48.456Z] [DEBUG] [op:gen2-migration-generate] Using amplify CLI at: /Users/ianhou/workplace/amplify-cli/packages/amplify-cli/bin/amplify
[2026-03-27T19:08:48.456Z] [DEBUG] [op:gen2-migration-generate] Command: /Users/ianhou/workplace/amplify-cli/packages/amplify-cli/bin/amplify gen2-migration generate --yes
[2026-03-27T19:12:15.446Z] [INFO]  [op:gen2-migration-generate] gen2-migration generate output:


Validations Summary

┌───────────────────┬──────────┐
│ Validation        │ Status   │
├───────────────────┼──────────┤
│ Lock status       │ ✔ Passed │
├───────────────────┼──────────┤
│ Working directory │ ✔ Passed │
└───────────────────┴──────────┘

You are about to execute 'generate' on environment 'd3kva18a2y9d6k/wgdie'.

Operations Summary

Project

1. Delete directory: /private/var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002/amplify
2. Generate amplify/backend.ts
3. Update package.json with Gen2 dependencies
4. Generate amplify/package.json
5. Generate amplify/tsconfig.json
6. Generate amplify.yml
7. Update .gitignore with Gen2 entries
8. Install Gen2 dependencies
Resource: auth/oodboard26032715000265882ed0 (Cognito)

1. Generate amplify/auth/resource.ts
Resource: analytics/moodboardKinesis (Kinesis)

1. Generate amplify/analytics/moodboardKinesis/resource.ts
Resource: function/moodboardGetRandomEmoji (Lambda)

1. Generate amplify/function/moodboardGetRandomEmoji/resource.ts
Resource: function/moodboardKinesisReader (Lambda)

1. Generate amplify/function/moodboardKinesisReader/resource.ts
Resource: storage/s35aaab4a6 (S3)

1. Generate amplify/storage/resource.ts
Resource: api/oodboard260327150002 (AppSync)

1. Generate amplify/data/resource.ts
Implications

• Your local 'amplify/' directory will be replaced with Gen2 code
• Dependencies will be reinstalled

(You can rollback this command by running: 'amplify gen2-migration generate --rollback')


[2026-03-27T19:08:55.673Z] [generate] [oodboard260327150002/wgdie] • Execute
[2026-03-27T19:08:56.858Z] [generate] [oodboard260327150002/wgdie] • Deleting amplify/
[2026-03-27T19:08:56.897Z] [generate] [oodboard260327150002/wgdie] • Installing dependencies

✅ Done
[2026-03-27T19:12:15.448Z] [INFO]  [op:gen2-migration-generate] gen2-migration generate completed (206989ms)
[2026-03-27T19:12:15.450Z] [INFO]  [op:gen2-migration-workflow] Pre-deployment workflow completed
[2026-03-27T19:12:15.450Z] [INFO]  [app:mood-board|op:initializeApp] Successfully completed gen2-migration pre-deployment workflow for oodboard260327150002
[2026-03-27T19:12:15.451Z] [INFO]  Running post-generate script for mood-board...
Running post-generate for mood-board at /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002
Using envName: wgdie

Updating branchName in /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002/amplify/data/resource.ts...
  Found branchName: 'wgdie'
  Updated branchName to "sandbox"
Converting moodboardGetRandomEmoji to ESM in /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002/amplify/function/moodboardGetRandomEmoji/index.js...
  Converted to ESM syntax
Converting moodboardKinesisReader to ESM in /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002/amplify/function/moodboardKinesisReader/index.js...
  Converted to ESM syntax
Removing hardcoded Kinesis ARN from /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002/amplify/function/moodboardKinesisReader/resource.ts...
  No hardcoded Kinesis ARN found, skipping
Updating frontend config import in /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002/src/main.tsx...
  Updated import to amplify_outputs.json
Updating stream name in /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002/src/components/SurpriseMeButton.tsx...
  Updated STREAM_NAME to "moodboardKinesis-gen2-wgdie"
Adding Kinesis IAM policy and environment variable to /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002/amplify/backend.ts...
  Added Kinesis IAM policy and environment variable
Fixing user pool region in GraphQL API config in /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002/amplify/backend.ts...
  No userPoolConfig found to fix, skipping

Post-generate completed
[2026-03-27T19:12:15.468Z] [INFO]  Post-generate script completed for mood-board
[2026-03-27T19:12:15.469Z] [INFO]  [app:mood-board|op:initializeApp] Committing Gen2 generated code for oodboard260327150002...
[2026-03-27T19:12:16.220Z] [INFO]  [app:mood-board|op:initializeApp] Gen2 generated code committed
[2026-03-27T19:12:16.221Z] [INFO]  [app:mood-board|op:initializeApp] Deploying Gen2 app using ampx sandbox for oodboard260327150002...
[2026-03-27T19:12:16.221Z] [INFO]  [op:gen2-sandbox-deploy] Deploying Gen2 app using ampx sandbox...
[2026-03-27T19:12:16.221Z] [DEBUG] [op:gen2-sandbox-deploy] App path: /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002
[2026-03-27T19:12:16.222Z] [DEBUG] [op:gen2-sandbox-deploy] Branch name (AWS_BRANCH): gen2-wgdie
[2026-03-27T19:16:20.154Z] [INFO]  [op:gen2-sandbox-deploy] ampx sandbox completed (243932ms)
[2026-03-27T19:16:20.158Z] [DEBUG] [op:find-gen2-stack] Looking for stack with prefix: amplify-oodboard260327150002-ianhou-sandbox
[2026-03-27T19:16:22.972Z] [INFO]  [op:gen2-sandbox-deploy] Gen2 stack name: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5
[2026-03-27T19:16:22.972Z] [INFO]  [app:mood-board|op:initializeApp] Gen2 app deployed with stack name: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5
[2026-03-27T19:16:22.973Z] [INFO]  [app:mood-board|op:initializeApp] Checking out main branch for refactor (refactor requires Gen1 files)...
[2026-03-27T19:16:23.330Z] [INFO]  [app:mood-board|op:initializeApp] Running gen2-migration refactor for oodboard260327150002...
[2026-03-27T19:16:23.330Z] [INFO]  [op:gen2-migration-refactor] Executing gen2-migration refactor...
[2026-03-27T19:16:23.331Z] [DEBUG] [op:gen2-migration-refactor] App path: /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002
[2026-03-27T19:16:23.331Z] [DEBUG] [op:gen2-migration-refactor] Using amplify CLI at: /Users/ianhou/workplace/amplify-cli/packages/amplify-cli/bin/amplify
[2026-03-27T19:16:23.331Z] [DEBUG] [op:gen2-migration-refactor] Command: /Users/ianhou/workplace/amplify-cli/packages/amplify-cli/bin/amplify gen2-migration refactor --yes --to amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5


[2026-03-27T19:30:47.499Z] [INFO]  [op:gen2-migration-refactor] gen2-migration refactor output:

┌───────────────────────────────────────┬───────────────────────────────────────┐
│ Source Logical ID                     │ Target Logical ID                     │
├───────────────────────────────────────┼───────────────────────────────────────┤
│ moodboardKinesisKinesisStreamD5E97047 │ moodboardKinesisKinesisStreamD5E97047 │
└───────────────────────────────────────┴───────────────────────────────────────┘

4. Move 1 resource(s) from 'amplify-oodboard260327150002-wgdie-1db3f-analyticsmoodboardKinesis-1IG0OPJE0LJQU' to 'amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-analytics5794DE4A-18RHOLRIMDKA2'

┌───────────────────┬───────────────────────────────────────┐
│ Source Logical ID │ Target Logical ID                     │
├───────────────────┼───────────────────────────────────────┤
│ KinesisStream     │ moodboardKinesisKinesisStreamD5E97047 │
└───────────────────┴───────────────────────────────────────┘

Resource: storage/s35aaab4a6 (S3)

1. Update source stack 'amplify-oodboard260327150002-wgdie-1db3f-storages35aaab4a6-9NYASJ701AOZ' with resolved references (empty change-set)
2. Update target stack 'amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U' with resolved references (empty change-set)
3. Move 1 resource(s) from 'amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U' to 'amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U-holding'

┌─────────────────────────────────────────────────────────────────────────────┬─────────────────────────────────────────────────────────────────────────────┐
│ Source Logical ID                                                           │ Target Logical ID                                                           │
├─────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────┤
│ oodboard2603271500021a0fd8ce04bc4ac9bbb2483be351db3fgen2wgdieBucket63989499 │ oodboard2603271500021a0fd8ce04bc4ac9bbb2483be351db3fgen2wgdieBucket63989499 │
└─────────────────────────────────────────────────────────────────────────────┴─────────────────────────────────────────────────────────────────────────────┘

4. Move 1 resource(s) from 'amplify-oodboard260327150002-wgdie-1db3f-storages35aaab4a6-9NYASJ701AOZ' to 'amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U'

┌───────────────────┬─────────────────────────────────────────────────────────────────────────────┐
│ Source Logical ID │ Target Logical ID                                                           │
├───────────────────┼─────────────────────────────────────────────────────────────────────────────┤
│ S3Bucket          │ oodboard2603271500021a0fd8ce04bc4ac9bbb2483be351db3fgen2wgdieBucket63989499 │
└───────────────────┴─────────────────────────────────────────────────────────────────────────────┘

Implications

• Stateful resources (Cognito, S3, DynamoDB, etc...) will be moved from Gen1 to Gen2 CloudFormation stacks
• Your Gen1 app will no longer manage these resources

(You can rollback this command by running: 'amplify gen2-migration refactor --rollback')


[2026-03-27T19:19:34.826Z] [refactor] [oodboard260327150002/wgdie] • Execute
[2026-03-27T19:19:34.827Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Updating stack: amplify-oodboard260327150002-wgdie-1db3f-authoodboard26032715000265882ed0-13E1WSM5XUBAJ
[2026-03-27T19:19:35.183Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Waiting for stack update to complete: amplify-oodboard260327150002-wgdie-1db3f-authoodboard26032715000265882ed0-13E1WSM5XUBAJ
[2026-03-27T19:20:05.408Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Updating stack: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-auth179371D7-17IOXWA8J0YCD
[2026-03-27T19:20:05.763Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Waiting for stack update to complete: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-auth179371D7-17IOXWA8J0YCD
[2026-03-27T19:20:36.021Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Refactoring amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-auth179371D7-17IOXWA8J0YCD → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-auth179371D7-17IOXWA8J0YCD-holding
[2026-03-27T19:20:36.246Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Creating stack refactor: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-auth179371D7-17IOXWA8J0YCD → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-auth179371D7-17IOXWA8J0YCD-holding
[2026-03-27T19:20:36.659Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Waiting for stack refactor creation to complete: dc7c4837-f044-4779-9ddf-57a20e09d6ae
[2026-03-27T19:20:51.121Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Waiting for stack refactor execution to complete: dc7c4837-f044-4779-9ddf-57a20e09d6ae
[2026-03-27T19:22:45.182Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Waiting for source stack update: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-auth179371D7-17IOXWA8J0YCD
[2026-03-27T19:22:45.240Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Waiting for destination stack: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-auth179371D7-17IOXWA8J0YCD-holding
[2026-03-27T19:22:45.287Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Finished refactoring amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-auth179371D7-17IOXWA8J0YCD → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-auth179371D7-17IOXWA8J0YCD-holding
[2026-03-27T19:22:45.287Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Refactoring amplify-oodboard260327150002-wgdie-1db3f-authoodboard26032715000265882ed0-13E1WSM5XUBAJ → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-auth179371D7-17IOXWA8J0YCD
[2026-03-27T19:22:45.491Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Creating stack refactor: amplify-oodboard260327150002-wgdie-1db3f-authoodboard26032715000265882ed0-13E1WSM5XUBAJ → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-auth179371D7-17IOXWA8J0YCD
[2026-03-27T19:22:45.880Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Waiting for stack refactor creation to complete: 9a67b293-0926-45d6-b3a8-9772f4bb7289
[2026-03-27T19:22:57.535Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Waiting for stack refactor execution to complete: 9a67b293-0926-45d6-b3a8-9772f4bb7289
[2026-03-27T19:23:13.005Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Waiting for source stack update: amplify-oodboard260327150002-wgdie-1db3f-authoodboard26032715000265882ed0-13E1WSM5XUBAJ
[2026-03-27T19:23:13.063Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Waiting for destination stack: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-auth179371D7-17IOXWA8J0YCD
[2026-03-27T19:23:13.107Z] [refactor] [oodboard260327150002/wgdie] • [auth/oodboard26032715000265882ed0] Finished refactoring amplify-oodboard260327150002-wgdie-1db3f-authoodboard26032715000265882ed0-13E1WSM5XUBAJ → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-auth179371D7-17IOXWA8J0YCD
[2026-03-27T19:23:13.107Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Updating stack: amplify-oodboard260327150002-wgdie-1db3f-analyticsmoodboardKinesis-1IG0OPJE0LJQU
[2026-03-27T19:23:13.404Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Waiting for stack update to complete: amplify-oodboard260327150002-wgdie-1db3f-analyticsmoodboardKinesis-1IG0OPJE0LJQU
[2026-03-27T19:23:43.628Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Updating stack: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-analytics5794DE4A-18RHOLRIMDKA2
[2026-03-27T19:23:43.970Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Waiting for stack update to complete: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-analytics5794DE4A-18RHOLRIMDKA2
[2026-03-27T19:24:14.218Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Refactoring amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-analytics5794DE4A-18RHOLRIMDKA2 → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-analytics5794DE4A-18RHOLRIMDKA2-holding
[2026-03-27T19:24:14.376Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Creating stack refactor: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-analytics5794DE4A-18RHOLRIMDKA2 → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-analytics5794DE4A-18RHOLRIMDKA2-holding
[2026-03-27T19:24:14.760Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Waiting for stack refactor creation to complete: 8fe1471e-b3d8-448b-a9d2-a1e338a25e6e
[2026-03-27T19:24:27.432Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Waiting for stack refactor execution to complete: 8fe1471e-b3d8-448b-a9d2-a1e338a25e6e
[2026-03-27T19:26:37.446Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Waiting for source stack update: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-analytics5794DE4A-18RHOLRIMDKA2
[2026-03-27T19:26:37.524Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Waiting for destination stack: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-analytics5794DE4A-18RHOLRIMDKA2-holding
[2026-03-27T19:26:37.586Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Finished refactoring amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-analytics5794DE4A-18RHOLRIMDKA2 → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-analytics5794DE4A-18RHOLRIMDKA2-holding
[2026-03-27T19:26:37.586Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Refactoring amplify-oodboard260327150002-wgdie-1db3f-analyticsmoodboardKinesis-1IG0OPJE0LJQU → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-analytics5794DE4A-18RHOLRIMDKA2
[2026-03-27T19:26:37.846Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Creating stack refactor: amplify-oodboard260327150002-wgdie-1db3f-analyticsmoodboardKinesis-1IG0OPJE0LJQU → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-analytics5794DE4A-18RHOLRIMDKA2
[2026-03-27T19:26:38.287Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Waiting for stack refactor creation to complete: d02ec5c6-e5dc-4a35-996b-53553f876611
[2026-03-27T19:26:44.006Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Waiting for stack refactor execution to complete: d02ec5c6-e5dc-4a35-996b-53553f876611
[2026-03-27T19:26:59.454Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Waiting for source stack update: amplify-oodboard260327150002-wgdie-1db3f-analyticsmoodboardKinesis-1IG0OPJE0LJQU
[2026-03-27T19:26:59.508Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Waiting for destination stack: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-analytics5794DE4A-18RHOLRIMDKA2
[2026-03-27T19:26:59.553Z] [refactor] [oodboard260327150002/wgdie] • [analytics/moodboardKinesis] Finished refactoring amplify-oodboard260327150002-wgdie-1db3f-analyticsmoodboardKinesis-1IG0OPJE0LJQU → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-analytics5794DE4A-18RHOLRIMDKA2
[2026-03-27T19:26:59.557Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Updating stack: amplify-oodboard260327150002-wgdie-1db3f-storages35aaab4a6-9NYASJ701AOZ
[2026-03-27T19:26:59.828Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Waiting for stack update to complete: amplify-oodboard260327150002-wgdie-1db3f-storages35aaab4a6-9NYASJ701AOZ
[2026-03-27T19:27:30.046Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Updating stack: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U
[2026-03-27T19:27:30.503Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Waiting for stack update to complete: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U
[2026-03-27T19:28:00.761Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Refactoring amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U-holding
[2026-03-27T19:28:00.971Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Creating stack refactor: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U-holding
[2026-03-27T19:28:01.311Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Waiting for stack refactor creation to complete: 877d0935-62a8-431e-a740-5190c507fc9c
[2026-03-27T19:28:13.048Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Waiting for stack refactor execution to complete: 877d0935-62a8-431e-a740-5190c507fc9c
[2026-03-27T19:30:18.749Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Waiting for source stack update: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U
[2026-03-27T19:30:18.809Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Waiting for destination stack: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U-holding
[2026-03-27T19:30:18.864Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Finished refactoring amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U-holding
[2026-03-27T19:30:18.864Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Refactoring amplify-oodboard260327150002-wgdie-1db3f-storages35aaab4a6-9NYASJ701AOZ → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U
[2026-03-27T19:30:19.057Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Creating stack refactor: amplify-oodboard260327150002-wgdie-1db3f-storages35aaab4a6-9NYASJ701AOZ → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U
[2026-03-27T19:30:19.505Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Waiting for stack refactor creation to complete: dffe83b3-5122-4dcd-971f-ac8b196698fb
[2026-03-27T19:30:31.866Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Waiting for stack refactor execution to complete: dffe83b3-5122-4dcd-971f-ac8b196698fb
[2026-03-27T19:30:47.341Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Waiting for source stack update: amplify-oodboard260327150002-wgdie-1db3f-storages35aaab4a6-9NYASJ701AOZ
[2026-03-27T19:30:47.410Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Waiting for destination stack: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U
[2026-03-27T19:30:47.480Z] [refactor] [oodboard260327150002/wgdie] • [storage/s35aaab4a6] Finished refactoring amplify-oodboard260327150002-wgdie-1db3f-storages35aaab4a6-9NYASJ701AOZ → amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5-storage0EC3F24A-1CIWGTJI13K7U

✅ Done
[2026-03-27T19:30:47.501Z] [INFO]  [op:gen2-migration-refactor] gen2-migration refactor completed (864167ms)
[2026-03-27T19:30:47.502Z] [INFO]  [app:mood-board|op:initializeApp] Successfully completed gen2-migration refactor for oodboard260327150002
[2026-03-27T19:30:47.502Z] [INFO]  [app:mood-board|op:initializeApp] Checking out gen2-wgdie branch for post-refactor edits...
[2026-03-27T19:30:47.832Z] [INFO]  Running post-refactor script for mood-board...
Running post-refactor for mood-board at /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002
Using envName: wgdie

Uncommenting Kinesis stream name in /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002/amplify/analytics/resource.ts...
  Set Kinesis stream name to "moodboardKinesis-wgdie"
Uncommenting S3 bucket name in /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002/amplify/backend.ts...
  Uncommented S3 bucket name
Updating stream name in /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002/src/components/SurpriseMeButton.tsx...
  Updated STREAM_NAME to "moodboardKinesis-wgdie"

Post-refactor completed
[2026-03-27T19:30:47.842Z] [INFO]  Post-refactor script completed for mood-board
[2026-03-27T19:30:47.843Z] [INFO]  [app:mood-board|op:initializeApp] Redeploying Gen2 app after refactor for oodboard260327150002...
[2026-03-27T19:30:47.843Z] [INFO]  [op:gen2-sandbox-deploy] Deploying Gen2 app using ampx sandbox...
[2026-03-27T19:30:47.843Z] [DEBUG] [op:gen2-sandbox-deploy] App path: /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002
[2026-03-27T19:30:47.843Z] [DEBUG] [op:gen2-sandbox-deploy] Branch name (AWS_BRANCH): gen2-wgdie
[2026-03-27T19:40:00.632Z] [INFO]  [op:gen2-sandbox-deploy] ampx sandbox completed (552788ms)
[2026-03-27T19:40:00.640Z] [DEBUG] [op:find-gen2-stack] Looking for stack with prefix: amplify-oodboard260327150002-ianhou-sandbox
[2026-03-27T19:40:03.674Z] [INFO]  [op:gen2-sandbox-deploy] Gen2 stack name: amplify-oodboard260327150002-ianhou-sandbox-6b98d187c5
[2026-03-27T19:40:03.675Z] [INFO]  [app:mood-board|op:initializeApp] Gen2 app redeployed successfully
[2026-03-27T19:40:03.675Z] [INFO]  [app:mood-board|op:initializeApp] App oodboard260327150002 fully initialized and migrated at /var/folders/zy/p394g9w14sbbfwj23q2pd3f00000gq/T/amplify-gen2-migration-e2e-system/output-apps/oodboard260327150002

Related to #14537

Checklist

  • PR description included
  • yarn test passes
  • Tests are changed or added
  • Relevant documentation is changed or added (and PR referenced)
  • New AWS SDK calls or CloudFormation actions have been added to relevant test and service IAM policies
  • Pull request labels are added

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@iankhou iankhou requested a review from a team as a code owner February 27, 2026 19:07
@iankhou iankhou enabled auto-merge (squash) February 27, 2026 20:15
@iliapolo iliapolo self-assigned this Mar 10, 2026
@iankhou iankhou force-pushed the iankhou-gen2-migration-e2e-categories branch 2 times, most recently from a374692 to 6b65401 Compare March 18, 2026 17:29
Comment thread packages/amplify-gen2-migration-e2e-system/src/cli.ts Dismissed
iankhou and others added 24 commits March 27, 2026 11:06
…ts, add function in e2e-core that allows email authentication
* chore: programmatic migration configs

* feat: automated migration, first commit

* feat: amplify-migration-e2e-system

* yarn.lock update

* test setup ts errors

* yarn.lock update

* added dependency to e2e core package in amplify-migration-system

* review changes

* fix: review changes

* remove extra code

* feat: add category initializer and update MIGRATION_CONFIG requirements, add function in e2e-core that allows email authentication

* update migration configs

* category initialization and amplify push

* set random Amplify envName by default, to avoid lambda name collisions

* remove excess dependency: tsx

* test update: AmplifyInitializer

* feat(gen2-migration): gen2-migration lock and generate steps

* yarn lockfile

* chore: add troubleshooting doc & only test uptill before lock

* fix(amplify-e2e-core): handle existing functions in addS3WithTrigger prompt flow

When functions already exist in the project, the CLI shows an extra
"Select from the following options" prompt during S3 trigger setup.
Added optional projectHasFunctions flag to addS3WithTrigger and
updated category-initializer to pass it based on initialization state.

* fix(amplify-gen2-migration-e2e-system): configure GraphQL API with Cognito and IAM auth modes

When the schema uses owner rules (which implicitly require userPools),
the API must have Cognito User Pools configured as an auth provider.
Use addApi with requireAuthSetup=false to add the needed auth modes
without re-prompting for Cognito setup since auth is already initialized.

* fix(amplify-e2e-core): always handle API key prompts in addApi regardless of requireAuthSetup

When requireAuthSetup is false, addApi skipped all auth type setup
including API key description/expiration prompts that the CLI always
shows. Now API key and IAM setup are always handled, while Cognito/OIDC
setup remains conditional on requireAuthSetup.

* chore: remove troubleshooting file

* chore: reset yarn lock

* chore: reset yarn lock

* chore: remove fitness-tracker not part of this PR

* chore: reset

* chore: comment midpoint

* chore: reset yarn lock to gen2-migration branch

---------

Co-authored-by: Ian Hou <45278651+iankhou@users.noreply.github.com>
…cussions app (#14692)

* chore: programmatic migration configs

* feat: automated migration, first commit

* feat: amplify-migration-e2e-system

* yarn.lock update

* test setup ts errors

* yarn.lock update

* added dependency to e2e core package in amplify-migration-system

* review changes

* fix: review changes

* remove extra code

* feat: add category initializer and update MIGRATION_CONFIG requirements, add function in e2e-core that allows email authentication

* update migration configs

* category initialization and amplify push

* set random Amplify envName by default, to avoid lambda name collisions

* remove excess dependency: tsx

* test update: AmplifyInitializer

* feat(gen2-migration): gen2-migration lock and generate steps

* yarn lockfile

* chore: add troubleshooting doc & only test uptill before lock

* fix(amplify-e2e-core): handle existing functions in addS3WithTrigger prompt flow

When functions already exist in the project, the CLI shows an extra
"Select from the following options" prompt during S3 trigger setup.
Added optional projectHasFunctions flag to addS3WithTrigger and
updated category-initializer to pass it based on initialization state.

* fix(amplify-gen2-migration-e2e-system): configure GraphQL API with Cognito and IAM auth modes

When the schema uses owner rules (which implicitly require userPools),
the API must have Cognito User Pools configured as an auth provider.
Use addApi with requireAuthSetup=false to add the needed auth modes
without re-prompting for Cognito setup since auth is already initialized.

* fix(amplify-e2e-core): always handle API key prompts in addApi regardless of requireAuthSetup

When requireAuthSetup is false, addApi skipped all auth type setup
including API key description/expiration prompts that the CLI always
shows. Now API key and IAM setup are always handled, while Cognito/OIDC
setup remains conditional on requireAuthSetup.

* chore: remove troubleshooting file

* chore: reset yarn lock

* chore: reset yarn lock

* chore: remove fitness-tracker not part of this PR

* chore: reset

* chore: comment midpoint

* chore: reset yarn lock to gen2-migration branch

* feat: allow dynamodb storage resource

* chore: remove unnecessary code

* fix: handle user pool groups in S3 storage init and add troubleshooting doc

- Use addS3WithGroupAccess when auth has userPoolGroups to avoid
  Restrict-access-by prompt timeout during storage initialization
- Add TROUBLESHOOTING.md documenting known issues and solutions

* fix: use default group names for S3 group access

addAuthWithGroups creates hardcoded Admins/Users
groups, so addS3WithGroupAccess must use those
defaults instead of config values.

* chore: update

* Delete packages/amplify-gen2-migration-e2e-system/TROUBLESHOOTING.md

---------

Co-authored-by: Ian Hou <45278651+iankhou@users.noreply.github.com>
* chore: programmatic migration configs

* feat: automated migration, first commit

* feat: amplify-migration-e2e-system

* yarn.lock update

* test setup ts errors

* yarn.lock update

* added dependency to e2e core package in amplify-migration-system

* review changes

* fix: review changes

* remove extra code

* feat: add category initializer and update MIGRATION_CONFIG requirements, add function in e2e-core that allows email authentication

* update migration configs

* category initialization and amplify push

* set random Amplify envName by default, to avoid lambda name collisions

* remove excess dependency: tsx

* test update: AmplifyInitializer

* feat(gen2-migration): gen2-migration lock and generate steps

* yarn lockfile

* chore: add troubleshooting doc & only test uptill before lock

* fix(amplify-e2e-core): handle existing functions in addS3WithTrigger prompt flow

When functions already exist in the project, the CLI shows an extra
"Select from the following options" prompt during S3 trigger setup.
Added optional projectHasFunctions flag to addS3WithTrigger and
updated category-initializer to pass it based on initialization state.

* fix(amplify-gen2-migration-e2e-system): configure GraphQL API with Cognito and IAM auth modes

When the schema uses owner rules (which implicitly require userPools),
the API must have Cognito User Pools configured as an auth provider.
Use addApi with requireAuthSetup=false to add the needed auth modes
without re-prompting for Cognito setup since auth is already initialized.

* fix(amplify-e2e-core): always handle API key prompts in addApi regardless of requireAuthSetup

When requireAuthSetup is false, addApi skipped all auth type setup
including API key description/expiration prompts that the CLI always
shows. Now API key and IAM setup are always handled, while Cognito/OIDC
setup remains conditional on requireAuthSetup.

* chore: remove troubleshooting file

* chore: reset yarn lock

* chore: reset yarn lock

* chore: remove fitness-tracker not part of this PR

* chore: reset

* chore: comment midpoint

* chore: reset yarn lock to gen2-migration branch

* feat: allow dynamodb storage resource

* chore: remove unnecessary code

---------

Co-authored-by: Ian Hou <45278651+iankhou@users.noreply.github.com>
…bda function names like {randomEnvName} for gen1 and gen2-{randomEnvName} for gen2
* chore: programmatic migration configs

* feat: automated migration, first commit

* feat: amplify-migration-e2e-system

* yarn.lock update

* test setup ts errors

* yarn.lock update

* added dependency to e2e core package in amplify-migration-system

* review changes

* fix: review changes

* remove extra code

* feat: add category initializer and update MIGRATION_CONFIG requirements, add function in e2e-core that allows email authentication

* update migration configs

* category initialization and amplify push

* set random Amplify envName by default, to avoid lambda name collisions

* remove excess dependency: tsx

* test update: AmplifyInitializer

* feat(gen2-migration): gen2-migration lock and generate steps

* yarn lockfile

* chore: add troubleshooting doc & only test uptill before lock

* fix(amplify-e2e-core): handle existing functions in addS3WithTrigger prompt flow

When functions already exist in the project, the CLI shows an extra
"Select from the following options" prompt during S3 trigger setup.
Added optional projectHasFunctions flag to addS3WithTrigger and
updated category-initializer to pass it based on initialization state.

* fix(amplify-gen2-migration-e2e-system): configure GraphQL API with Cognito and IAM auth modes

When the schema uses owner rules (which implicitly require userPools),
the API must have Cognito User Pools configured as an auth provider.
Use addApi with requireAuthSetup=false to add the needed auth modes
without re-prompting for Cognito setup since auth is already initialized.

* fix(amplify-e2e-core): always handle API key prompts in addApi regardless of requireAuthSetup

When requireAuthSetup is false, addApi skipped all auth type setup
including API key description/expiration prompts that the CLI always
shows. Now API key and IAM setup are always handled, while Cognito/OIDC
setup remains conditional on requireAuthSetup.

* chore: remove troubleshooting file

* chore: reset yarn lock

* chore: reset yarn lock

* chore: remove fitness-tracker not part of this PR

* chore: reset

* chore: comment midpoint

* chore: reset yarn lock to gen2-migration branch

* feat: allow dynamodb storage resource

* chore: remove unnecessary code

* fix: handle user pool groups in S3 storage init and add troubleshooting doc

- Use addS3WithGroupAccess when auth has userPoolGroups to avoid
  Restrict-access-by prompt timeout during storage initialization
- Add TROUBLESHOOTING.md documenting known issues and solutions

* fix: use default group names for S3 group access

addAuthWithGroups creates hardcoded Admins/Users
groups, so addS3WithGroupAccess must use those
defaults instead of config values.

* chore: remove unnecessary files

* feat: add analytics category support and mood-board config

- Add addKinesisStream helper in amplify-e2e-core
- Add AnalyticsConfiguration type, validation, and
  category initialization with Kinesis support
- Create mood-board migration-config.json
- Add CHANGELOG.md documenting all recent changes

* chore: remove unnecessary files

---------

Co-authored-by: Ian Hou <45278651+iankhou@users.noreply.github.com>
iankhou and others added 6 commits March 27, 2026 11:07
* chore: programmatic migration configs

* feat: automated migration, first commit

* feat: amplify-migration-e2e-system

* yarn.lock update

* test setup ts errors

* yarn.lock update

* added dependency to e2e core package in amplify-migration-system

* review changes

* fix: review changes

* remove extra code

* feat: add category initializer and update MIGRATION_CONFIG requirements, add function in e2e-core that allows email authentication

* update migration configs

* category initialization and amplify push

* set random Amplify envName by default, to avoid lambda name collisions

* remove excess dependency: tsx

* test update: AmplifyInitializer

* feat(gen2-migration): gen2-migration lock and generate steps

* yarn lockfile

* chore: add troubleshooting doc & only test uptill before lock

* fix(amplify-e2e-core): handle existing functions in addS3WithTrigger prompt flow

When functions already exist in the project, the CLI shows an extra
"Select from the following options" prompt during S3 trigger setup.
Added optional projectHasFunctions flag to addS3WithTrigger and
updated category-initializer to pass it based on initialization state.

* fix(amplify-gen2-migration-e2e-system): configure GraphQL API with Cognito and IAM auth modes

When the schema uses owner rules (which implicitly require userPools),
the API must have Cognito User Pools configured as an auth provider.
Use addApi with requireAuthSetup=false to add the needed auth modes
without re-prompting for Cognito setup since auth is already initialized.

* fix(amplify-e2e-core): always handle API key prompts in addApi regardless of requireAuthSetup

When requireAuthSetup is false, addApi skipped all auth type setup
including API key description/expiration prompts that the CLI always
shows. Now API key and IAM setup are always handled, while Cognito/OIDC
setup remains conditional on requireAuthSetup.

* chore: remove troubleshooting file

* chore: reset yarn lock

* chore: reset yarn lock

* chore: remove fitness-tracker not part of this PR

* chore: reset

* chore: comment midpoint

* chore: reset yarn lock to gen2-migration branch

* feat: allow dynamodb storage resource

* chore: remove unnecessary code

---------

Co-authored-by: Ian Hou <45278651+iankhou@users.noreply.github.com>
@iankhou iankhou force-pushed the iankhou-gen2-migration-e2e-categories branch from 0eabfcb to 2a1ecba Compare March 27, 2026 15:07
Comment thread packages/amplify-gen2-migration-e2e-system/src/core/configuration-loader.ts Outdated
Comment thread packages/amplify-gen2-migration-e2e-system/src/core/gen2-migration-executor.ts Outdated
@iankhou
Copy link
Copy Markdown
Contributor Author

iankhou commented Mar 27, 2026

Should use built amplify binary from the monorepo.

Comment thread packages/amplify-gen2-migration-e2e-system/src/utils/math.ts
Comment thread packages/amplify-gen2-migration-e2e-system/src/cli.ts Outdated
Comment thread packages/amplify-gen2-migration-e2e-system/src/test-script.ts Outdated
@iankhou iankhou merged commit bcec882 into gen2-migration Mar 27, 2026
4 checks passed
@iankhou iankhou deleted the iankhou-gen2-migration-e2e-categories branch March 27, 2026 19:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants