page:recipes:csv import tool:django:data imports

Host CSV Import Tool with Django: Structured Data Imports

Deploy a csv import tool built with Django on Ample using the bulk import staging pattern. Compute runs the app in an isolated microVM behind a public HTTPS URL, a managed PostgreSQL 16 database is auto-provisioned and injected as DATABASE_URL, a private S3-compatible bucket holds objects with credentials delivered as encrypted environment variables. Verified on Django: a CSV staged as an object, row-level validation with per-row errors recorded, and a restart-safe import keyed by import id (imported=2 rejected=1 restart=ok). Not separately tested: your import format, mapping and conflict rules; treat the csv import tool-specific behavior as your application code.

Summary

Resource Requirements

Infrastructure Requirements

  1. Compute:
    • Status: Verified
    • Summary: Apps run in isolated x86_64 Firecracker microVMs that auto-pause when idle and wake on request.
  2. Postgres:
    • Status: Verified
    • Summary: Managed PostgreSQL 16 runs in its own microVM and is auto-provisioned when an app needs a database.
  3. S3-compatible object storage:
    • Status: Verified
    • Summary: Buckets are S3-compatible with issued credentials.

Prerequisites

Tested Configuration

Workflow Steps

  1. Build and start
    • Command: pip install into .ample/python from requirements.txt, then waitress serving project.wsgi from run.py reading PORT on the python-3.12 template.
  2. Implement the pattern on PostgreSQL
    • Explanation: The fixture's module implements bulk import staging.
  3. Wire object storage
    • Explanation: Create the bucket(s) and pass endpoint, region, bucket and keys as --env values.
  4. Deploy
    • Command: ample deploy . --name --public --start "python3 run.py" --env S3_ENDPOINT=... --env S3_REGION=... --env S3_BUCKET=... --env S3_ACCESS_KEY_ID=... --env S3_SECRET_ACCESS_KEY=...
  5. Verify
    • Command: ample logs --kind build

Examples

Success Checks

  1. App responds on its public URL
    • Kind: http_get
    • Path: /
    • Expect: ample canary django patterns
  2. Bulk-import-staging self-test
    • Kind: http_get
    • Path: /p/bulk-import-staging
    • Expect: imported=2 rejected=1 restart=ok

Limitations

Cost Estimate

Next Actions

  1. Browse the catalog index
    • Method: GET
    • Relative Path: /v1/catalog
  2. Search published recipes by intent
    • Method: POST
    • Relative Path: /v1/catalog/search
  3. Prepare a side-effect-free deployment plan
    • Method: POST
    • Relative Path: /v1/catalog/plan
  4. Read existing agent authentication setup
    • Method: GET
    • Relative Path: /mcp/setup
  5. Browse CSV import tool
    • Method: GET
    • Relative Path: /v1/catalog/nodes/workload:csv-import-tool