Skip to main content
Interactive command — Guides you through creating organisations and applications with smart defaults.

Overview

The fjall create command is your entry point for building AWS infrastructure. It creates either organisational structures (accounts, SSO, billing) or applications (compute, storage, networking).

Usage

fjall create [target] [options]

Targets

Organisation

Set up your AWS organisation structure:
fjall create organisation
This creates:
  • AWS Organization root
  • Platform account for shared services
  • SSO configuration
  • Cost allocation tags
  • Billing alerts

Application

Create a new application:
fjall create application
# or
fjall create app
Choose from application types:
  • Starter: Blank canvas to build your way
  • Standard: Production-ready with Multi-AZ, Fargate ECS, RDS
  • Lightweight: Streamlined with Single-AZ, Instance-backed ECS, RDS
  • Resilient: High-availability with Multi-AZ, Encrypted, Fargate ECS, Aurora
  • Tinkerer: Free experimental with Single-AZ, Free tier ECS, RDS

Examples

Create Organisation (Interactive)

fjall create organisation
Prompts:
? Organisation name: exampleorg
? Email address: [email protected]
? Primary region: us-east-1
? Secondary regions: eu-west-1, ap-southeast-2
? AWS Access Key ID: AKIAIOSFODNN7EXAMPLE
? AWS Secret Access Key: ****************************************

Create Application (Interactive)

fjall create app
Prompts:
? Choose your starting point:
 Starter    Blank canvas · Build your way
    Standard   Production-ready · Multi-AZ, Fargate ECS, RDS
    Lightweight Streamlined · Single-AZ, Instance-backed ECS, RDS
    Resilient  High-availability · Multi-AZ, Encrypted, Fargate ECS, Aurora
    Tinkerer   Free experimental · Single-AZ, Free tier ECS, RDS

? Name your application: app
? Include database: Yes
? Provide Dockerfile: No

Non-Interactive Mode

Skip all prompts with flags:
# Create organisation
fjall create organisation \
  --name exampleorg \
  --email [email protected] \
  --primary-region us-east-1 \
  --secondary-regions eu-west-1,ap-southeast-2 \
  --aws-access-key AKIAIOSFODNN7EXAMPLE \
  --aws-secret-access-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

# Create application
fjall create app \
  --name app \
  --type standard \
  --no-prompt

Options

Common Options

OptionDescriptionExample
-v, --verboseShow detailed logsfjall create -v
--np, --no-promptSkip confirmation promptsfjall create --np

Organisation Options

OptionDescriptionExample
--name <name>Organisation name--name mycompany
--email <email>Root account email--email [email protected]
--primary-region <region>Primary AWS region--primary-region us-east-1
--secondary-regions <regions>Additional regions--secondary-regions eu-west-1,ap-south-1
--aws-access-key <key>AWS access key--aws-access-key AKIA...
--aws-secret-access-key <key>AWS secret key--aws-secret-access-key ...

Application Options

OptionDescriptionExample
--name <name>Application name--name api-service
--type <type>Application type--type resilient
--no-databaseSkip database creation--no-database
--dockerfile <path>Custom Dockerfile--dockerfile ./Dockerfile
--container-port <port>Container port--container-port 8080

Application Types Explained

Standard

  • RDS Instance database
  • ECS Fargate compute
  • Application Load Balancer
  • Best for: Most production workloads

Resilient

  • Multi-region deployment
  • Aurora Global database
  • Route 53 failover
  • Best for: Mission-critical applications

Tinkerer

  • RDS Instance (cheaper than Aurora)
  • ECS with EC2 (more control)
  • Development-friendly defaults
  • Best for: Experimentation and learning

Lightweight

  • DynamoDB for storage
  • Lambda functions
  • API Gateway
  • Best for: Simple APIs and microservices

Starter

  • Interactive selection of components
  • Mix and match resources
  • Full customisation
  • Best for: Specific requirements

What Gets Created

Organisation Structure

fjall/
├── organisation/
│   ├── infrastructure.ts
│   ├── package.json
│   └── cdk.json
├── platform/
│   ├── infrastructure.ts
│   ├── package.json
│   └── cdk.json
├── accounts-config.json
├── fjall-config.json
└── profile-config.json

Application Structure

fjall/
├── app/
│   ├── infrastructure.ts
│   ├── package.json
│   ├── cdk.json
│   └── Dockerfile (if applicable)
├── accounts-config.json
└── fjall-config.json

Post-Creation Steps

After Creating Organisation

  1. Deploy the organisation:
    fjall deploy organisation
    
  2. Configure SSO:
    fjall user add --email [email protected]
    
  3. Create platform resources:
    fjall deploy platform
    

After Creating Application

  1. Review infrastructure code:
    cat fjall/app/infrastructure.ts
    
  2. Deploy the application:
    fjall deploy app
    
  3. Add more resources:
    fjall add storage:aurora --app app
    

Best Practices

  1. Organisation First: Always create organisation before applications
  2. Naming Convention: Use lowercase with hyphens (app, not App)
  3. Region Selection: Choose regions close to your users
  4. Type Selection: Start with Tinkerer for learning, use Standard for production

Troubleshooting

Name Already Exists

If you see “Application already exists”:
  • Choose a different name
  • Or remove existing: rm -rf fjall/existing-app

Invalid Credentials

For “Invalid AWS credentials”:
  • Verify access key is correct
  • Ensure secret key has no spaces
  • Check IAM user has required permissions

Region Not Available

Some services aren’t available in all regions:
  • Use us-east-1 for full service availability
  • Check AWS service availability by region
  • Consider multi-region setup for resilience
The create command generates CDK TypeScript code. You can modify the generated infrastructure.ts files to customise your setup further.