Overview
Phenom Drop (thephenom-app) uses AWS App Runner for the backend service. Images are pushed to Amazon ECR, and App Runner automatically deploys new versions when a new image is pushed.
Note: This is a legacy deployment pattern. New services should use Scaleway Serverless Containers per the Sovereign Architecture SOP. Phenom Drop remains on AWS due to its integration with the Phenom app ecosystem.
Prerequisites
- AWS CLI configured with appropriate credentials
- ECR repository:
pass aws/phenom-drop/ecr-repo - App Runner service ARN:
pass aws/phenom-drop/apprunner-arn - Docker (for building – runs on ai.matthewstevens.org)
Procedure: Deploy Phenom Drop Backend
Step 1: Build the Image
SSH to the build server and build:
| |
Step 2: Tag and Push to ECR
| |
Step 3: Trigger App Runner Deployment
App Runner is configured for automatic deployment on ECR push. If it does not trigger automatically:
| |
Step 4: Monitor Deployment
| |
Wait for Status to change from OPERATION_IN_PROGRESS to RUNNING.
App Runner Configuration
Service Settings
- CPU: 1 vCPU
- Memory: 2 GB
- Port: 8080
- Health check path:
/health - Auto-deploy: Enabled (triggers on ECR push)
Environment Variables
Environment variables are configured in the App Runner service. Update via AWS Console or CLI:
| |
Phenom Drop Backend Components
The Phenom Drop backend consists of:
- Python server – Handles media uploads, consent flow, email collection
- S3 integration – Stores uploaded media files
- Firestore integration – Stores drop payloads with
submitterEmail - C2PA integration – Signs media with Content Credentials
Email/Consent Flow
The drop payload includes:
submitterEmail– Consent email for the submitter- Media files (images/video)
- C2PA manifest data
- Drop metadata
Troubleshooting
- Deployment stuck: Check App Runner service events for error messages. Common cause is health check failing.
- 502 after deploy: Application may not be listening on the configured port. Check the
PORTenvironment variable matches the app config. - ECR push denied: Re-authenticate with
aws ecr get-login-password. Tokens expire after 12 hours. - Large file C2PA error: Files over a certain size may fail C2PA signing. Check memory limits and increase if needed.