Deployment
Lumo applications deploy as serverless functions to cloud platforms. The CLI handles the entire deployment process, from building your TypeScript code to configuring cloud resources.
Important Cost Notice
Lumo creates cloud resources on your behalf but is not responsible for any costs incurred. You are solely responsible for all charges from your cloud provider. Always review your cloud provider's pricing documentation and monitor your usage to avoid unexpected costs.
General Deployment
Deploy your application using the Lumo CLI:
bash
lumo deploy
The deployment process:
- Builds your TypeScript functions
- Packages them for the target platform
- Creates or updates cloud resources
- Configures routing and permissions
Resources Created
AWS Resources
When deploying to AWS, Lumo creates:
- Lambda Functions - For each API route and subscriber
- API Gateway - HTTP API for routing requests to Lambda functions
- IAM Roles - Execution roles for Lambda functions with minimal required permissions
- CloudWatch Log Groups - For function logging and monitoring
- VPC - Virtual Private Cloud with private and public subnets
Cloudflare Resources
When deploying to Cloudflare, Lumo creates:
- Workers - For each function in your application
- Routes - For mapping URLs to Workers
- KV Namespaces (if configured) - For key-value storage
AWS Deployment
Prerequisites
- AWS account with appropriate permissions
- AWS credentials configured
Environment Variables
Set these environment variables or GitHub secrets:
Option 1: Access Keys
AWS_ACCESS_KEY_ID
- Your AWS access keyAWS_SECRET_ACCESS_KEY
- Your AWS secret keyAWS_REGION
- Target AWS region (e.g.,eu-west-2
)
Option 2: OIDC (Recommended)
AWS_ROLE_ARN
- IAM role ARN for OIDC authenticationAWS_REGION
- Target AWS region
GitHub Actions
Using Access Keys
yaml
name: Deploy to AWS (Access Key/Secret)
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-west-2
- run: npx @lumo-framework/cli build
- run: npx @lumo-framework/cli deploy
Using OIDC (Recommended)
yaml
name: Deploy to AWS (OIDC)
on:
push:
branches: [ main ]
permissions:
id-token: write
contents: read
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
role-session-name: GitHubActions
aws-region: eu-west-2
- run: npx @lumo-framework/cli build
- run: npx @lumo-framework/cli deploy
Cloudflare Deployment
Prerequisites
- Cloudflare account
- Cloudflare API token with appropriate permissions
Environment Variables
CLOUDFLARE_API_TOKEN
- Your Cloudflare API tokenCLOUDFLARE_ACCOUNT_ID
- Your Cloudflare account ID
GitHub Actions
yaml
name: Deploy to Cloudflare
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- run: npm ci
- run: npx @lumo-framework/cli build
- run: npx @lumo-framework/cli deploy
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}