A CLI tool to migrate data from Excel files to AWS Amplify GraphQL API. Developed for the MECO project - https://github.com/sworgkh/meco-observations-amplify
Install the latest stable version from PyPI:
pip install amplify-excel-migratorClone the repository and install:
git clone https://github.com/EyalPoly/amplify-excel-migrator.git
cd amplify-excel-migrator
pip install .The tool has five subcommands:
Save your AWS Amplify configuration:
amplify-migrator configThis will prompt you for:
- Excel file path
- AWS Amplify API endpoint
- AWS Region
- Cognito User Pool ID
- Cognito Client ID
- Admin username
Configuration is saved to ~/.amplify-migrator/config.json
View your current saved configuration:
amplify-migrator showExport your GraphQL schema to a markdown reference document:
# Export all models
amplify-migrator export-schema
# Export to a specific file
amplify-migrator export-schema --output my-schema.md
# Export specific models only
amplify-migrator export-schema --models User Post CommentThis generates a comprehensive markdown document with:
- All model fields with types and requirements
- Enum definitions
- Custom type structures
- Foreign key relationships
- Excel formatting guidelines
Perfect for sharing with team members who need to prepare Excel files for migration.
π‘ The exported schema reference can help you prepare your Excel file. For detailed formatting guidelines, see the Excel Format Specification.
Export model records from your Amplify backend to an Excel file:
# Export a single model's records
amplify-migrator export-data --model Reporter
# Export multiple models (each as a separate sheet)
amplify-migrator export-data --model Reporter Article Comment
# Export all models
amplify-migrator export-data --all
# Export to a specific file
amplify-migrator export-data --model Reporter --output reporter_backup.xlsx
amplify-migrator export-data --all --output full_backup.xlsxRecords are sorted by primary field and exported with scalar, enum, and ID fields. When exporting multiple models, each model gets its own sheet in the Excel file. This is useful for backing up data, auditing records, or preparing corrections for re-migration.
Run the migration using your saved configuration:
amplify-migrator migrateYou'll only be prompted for your password (for security, passwords are never cached).
# First time: configure the tool
amplify-migrator config
# View current configuration
amplify-migrator show
# Export schema documentation (share with team)
amplify-migrator export-schema
# Export existing records to Excel
amplify-migrator export-data --model Reporter
amplify-migrator export-data --all
# Run migration (uses saved config)
amplify-migrator migrate
# View help
amplify-migrator --helpπ For detailed Excel format requirements, see the Excel Format Specification.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Amplify Migrator - Configuration Setup β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Configuration Setup:
------------------------------------------------------
Excel file path [data.xlsx]: my-data.xlsx
AWS Amplify API endpoint: https://xxx.appsync-api.us-east-1.amazonaws.com/graphql
AWS Region [us-east-1]:
Cognito User Pool ID: us-east-1_xxxxx
Cognito Client ID: your-client-id
Admin Username: admin@example.com
β
Configuration saved successfully!
π‘ You can now run 'amplify-migrator migrate' to start the migration.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Migrator Tool for Amplify β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββ£
β This tool requires admin privileges to execute β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Authentication:
------------------------------------------------------
Admin Password: ********
- Python 3.8+
- AWS Amplify GraphQL API
- AWS Cognito User Pool
- Admin access to the Cognito User Pool
- Automatic type parsing - Smart field type detection for all GraphQL types including scalars, enums, and custom types
- Custom types and enums - Full support for Amplify custom types with automatic conversion
- Duplicate detection - Automatically skips existing records to prevent duplicates
- Foreign key resolution - Automatic relationship handling with pre-fetching for performance
- Configuration caching - Save your setup, reuse it for multiple migrations
- MFA support - Works with multi-factor authentication
- Admin group validation - Ensures proper authorization before migration
- Async uploads - Fast parallel uploads with configurable batch size
- Connection pooling - Efficient HTTP connection reuse for better performance
- Pagination support - Handles large datasets efficiently
- Interactive prompts - Easy step-by-step configuration
- Progress reporting - Real-time feedback on migration status
- Detailed error messages - Clear context for troubleshooting failures
- Schema export - Generate markdown documentation of your GraphQL schema to share with team members
- Data export - Export existing model records to Excel for backup, auditing, or correction
Your Excel file must follow specific formatting guidelines for sheet names, column headers, data types, and special field handling. For comprehensive format requirements, examples, and troubleshooting, see:
π Excel Format Specification Guide
- Foreign Key Resolution - Automatically resolves relationships between models with pre-fetching for optimal performance
- Schema Introspection - Dynamically queries your GraphQL schema to understand model structures and field types
- Configurable Batch Processing - Tune upload performance with adjustable batch sizes (default: 20 records per batch)
- Progress Reporting - Real-time batch progress with per-sheet confirmation prompts before upload
When records fail to upload, the tool provides a robust recovery mechanism to help you identify and fix issues without starting over.
- Automatic Error Capture - Each failed record is logged with detailed error messages explaining what went wrong
- Failed Records Export - After migration completes, you'll be prompted to export failed records to a new Excel file with a timestamp (e.g.,
data_failed_records_20251201_143022.xlsx) - Easy Retry - Fix the issues in the exported file and run the migration again using only the failed records
- Progress Visibility - Detailed summary shows success/failure counts, percentages, and specific error reasons for each failed record
The tool tracks which records succeeded and failed, providing row-level context to help you quickly identify and resolve issues. Simply export the failed records, fix the errors in the Excel file, and re-run the migration with the corrected file.
Authentication Errors:
- Verify your Cognito User Pool ID and Client ID are correct
- Ensure your username and password are valid
- Check that your user is in the ADMINS group
MFA Issues:
- Enable MFA in your Cognito User Pool settings if required
- Ensure your user has MFA set up (SMS or software token)
AWS Credentials:
- Set up AWS credentials in
~/.aws/credentials - Or set environment variables:
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_DEFAULT_REGION - Or use
aws configureto set up your default profile
Permission Errors:
- Add your user to the ADMINS group in Cognito User Pool
- Contact your AWS administrator if you don't have permission
For errors related to Excel file format, data types, sheet naming, required fields, or foreign keys, see the comprehensive troubleshooting guide:
π Common Issues and Solutions
MIT