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)
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
| Option | Description | Example |
|---|
-v, --verbose | Show detailed logs | fjall create -v |
--np, --no-prompt | Skip confirmation prompts | fjall create --np |
Organisation Options
| Option | Description | Example |
|---|
--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
| Option | Description | Example |
|---|
--name <name> | Application name | --name api-service |
--type <type> | Application type | --type resilient |
--no-database | Skip 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
-
Deploy the organisation:
fjall deploy organisation
-
Configure SSO:
-
Create platform resources:
After Creating Application
-
Review infrastructure code:
cat fjall/app/infrastructure.ts
-
Deploy the application:
-
Add more resources:
fjall add storage:aurora --app app
Best Practices
- Organisation First: Always create organisation before applications
- Naming Convention: Use lowercase with hyphens (app, not App)
- Region Selection: Choose regions close to your users
- 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.