Issue #385 — Deployment Report¶
Date: 2026-04-25 Version: v0.1.1 Issue: #385 — Dashboard blocked: 8 endpoints broken on dev ALB Status: Closed
PRs Merged¶
| PR | Description |
|---|---|
| #386 | MLflow routing, ECS IAM, backtest deserialization |
| #390 | Propagate backend store env vars for Gunicorn WSGI |
| #392 | Export/sync proxy routes + migrate stage to MLflow 3.x aliases |
| #393 | ALB hostname to MLflow allowed hosts + health check fix |
Infrastructure Changes¶
- Pulumi compute stack: 26 resources updated
- MLflow health check path:
/mlflow/->/health(StripPrefixMiddleware handles it before Flask) MLFLOW_ALLOWED_HOSTSenv var now includes ALB DNS dynamically from Pulumi- Launch template updated -> ASG instance refresh completed
Pulumi Fix¶
Bug: pulumi-aws v6.83.2 provider mismatch (kind:DELETE inputDiff:true != kind:DELETE_REPLACE inputDiff:true). Workaround: pulumi config set aws:region eu-central-1 in compute stack. Root cause: pulumi/pulumi-aws#5652 — fixed in v7.x.
Endpoint Verification (2026-04-25 00:05 UTC)¶
ALB: tradai-dev-1942285475.eu-central-1.elb.amazonaws.com
| # | Endpoint | Method | HTTP | Result |
|---|---|---|---|---|
| 1 | /mlflow/api/2.0/mlflow/experiments/search | POST | 200 | Returns experiments |
| 2 | /mlflow/api/2.0/mlflow/runs/search | POST | 200 | Returns runs |
| 3 | /mlflow/api/2.0/mlflow/registered-models/search | GET | 200 | Returns models |
| 4 | /mlflow/api/2.0/mlflow/model-versions/search | GET | 200 | Returns versions |
| 5 | /mlflow/api/2.0/mlflow/registered-models/alias | POST | 404 | Correct — test model doesn't exist |
| 6 | /api/v1/health | GET | 200 | All checks healthy |
| 7 | /api/v1/export | POST | 200 | Returns OHLCV data |
| 8 | /api/v1/sync | POST | 200 | Data sync works |
Verification Commands¶
ALB="tradai-dev-1942285475.eu-central-1.elb.amazonaws.com"
# MLflow endpoints
curl -s -X POST "http://$ALB/mlflow/api/2.0/mlflow/experiments/search" -H "Content-Type: application/json" -d '{"max_results": 3}'
curl -s -X POST "http://$ALB/mlflow/api/2.0/mlflow/runs/search" -H "Content-Type: application/json" -d '{"experiment_ids": ["0"], "max_results": 1}'
curl -s "http://$ALB/mlflow/api/2.0/mlflow/registered-models/search?max_results=3"
curl -s "http://$ALB/mlflow/api/2.0/mlflow/model-versions/search?max_results=3"
# Backend endpoints
curl -s "http://$ALB/api/v1/health"
curl -s -X POST "http://$ALB/api/v1/export" -H "Content-Type: application/json" -d '{"symbols": ["BTC/USDT:USDT"], "start_date": "2025-01-01", "end_date": "2025-01-02", "timeframe": "1h"}'
curl -s -X POST "http://$ALB/api/v1/sync" -H "Content-Type: application/json" -d '{"symbols": ["BTC/USDT:USDT"], "start_date": "2025-01-01", "end_date": "2025-01-02", "timeframe": "1h"}'
# Health check
curl -s "http://$ALB/mlflow/health"
Known Issues / Follow-ups¶
pulumi-awsv6.83.2 workaround in place — consider upgrading to v7.x- MLflow 3.x
current_stagefield is alwaysNone— lambdas/services usingcurrent_stageneed migration to aliases API (separate issue needed) - Registered models search and model versions search require GET, not POST (MLflow 3.x change)