Skip to content

Production deployment

Production URLs

Resource URL
Landing page https://d35b4jhpypc315.cloudfront.net/
App https://d35b4jhpypc315.cloudfront.net/app
Documentation https://d35b4jhpypc315.cloudfront.net/docs/index.html

The docs use .html paths because the frontend bucket is a private S3 REST origin. Use the exact documentation URL above.

AWS boundary

The deployment uses:

  • AWS region us-east-1;
  • AWS CLI profile admin-azhar-freetrial;
  • private S3 frontend bucket;
  • CloudFront Origin Access Control;
  • API Gateway HTTP API;
  • Python FastAPI Lambda;
  • private versioned S3 artifact bucket;
  • Secrets Manager for server values.

The browser receives no AWS credential.

Publish the frontend and docs

The publish script builds the frontend, builds the strict MkDocs site, copies both outputs to the private frontend bucket, and invalidates CloudFront.

AWS_PROFILE=admin-azhar-freetrial \
AWS_REGION=us-east-1 \
ORION_STACK_NAME=orion-production \
bash infra/deploy/scripts/publish-frontend.sh

The docs are copied under the docs/ prefix. The script does not delete old S3 objects implicitly.

Publish only a local docs build

Build first:

npm run docs:build

Inspect the output with:

python3 -m http.server 8001 --directory dist/docs

Open http://127.0.0.1:8001/.

Deploy the backend

Use the infrastructure runbook for a Lambda or CloudFormation change:

infra/deploy/README.md
docs/aws-deployment-runbook.md

Do not put a secret in a CloudFormation parameter or frontend variable.

Verify after publish

curl -fsSI https://d35b4jhpypc315.cloudfront.net/docs/index.html
curl -fsS https://d35b4jhpypc315.cloudfront.net/docs/index.html | head

Then open the docs in the in-app Browser. Check the home page, search, a second-level page, and the app link.