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

Overview

The fjall create command scaffolds AWS infrastructure as CDK TypeScript. It creates standalone account infrastructure (monitoring, compliance), organisational structures (accounts, SSO, billing), or applications (compute, storage, networking).

Usage

Targets

Organisation

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

Account

Set up standalone AWS account infrastructure:
This creates:
  • Monitoring and alerting
  • CloudTrail audit logging
  • ECR container registry
  • OIDC connector for CI/CD
For standalone use, create an account before applications. Organisation is an upgrade path, not a prerequisite.

Application

Create a new application:
Choose from application types:
  • Standard: Production-ready with 3 AZ, Fargate ECS, RDS
  • Lightweight: Streamlined with Fargate Spot ECS, RDS
  • Resilient: High-availability with 3 AZ, Aurora with readers, KMS encryption, RDS Proxy, 30-day backup
  • Enterprise: Full-featured with 3-AZ, Aurora with readers, KMS encryption, VPC endpoints
  • Tinkerer: Free-tier eligible experimental with 2 AZ, ECS on EC2 (t4g.micro), RDS
  • Custom: Interactive selection of individual components

Examples

Create Organisation (Interactive)

The interactive flow:
  1. Prompts for organisation name, email, and regions
  2. Opens your browser to deploy an OIDC CloudFormation stack in your AWS account
  3. Polls for stack completion
  4. Deploys the organisation using the OIDC connection

Create Application (Interactive)

Prompts:

Non-Interactive Mode

Skip all prompts with flags:

Options

Common Options

Organisation Options

Account Options

Application Options

The nextjs pattern is not yet deployable. Recent CLI versions no longer offer it in the picker and refuse --pattern nextjs at create time; older versions accepted it and failed at deploy. Use payload for a Next.js-based app, or staticsite for a pre-built static site.

Application Types Explained

Tinkerer

  • 2 AZs (VPC spans 2 AZs), no NAT gateways
  • ECS on EC2 (t4g.micro ARM Graviton), free-tier eligible
  • RDS Instance (t4g.micro)
  • Best for: Experimentation and learning

Lightweight

  • 2 AZs (VPC spans 2 AZs), 1 NAT gateway
  • ECS Fargate Spot (256 CPU, 512 MiB)
  • RDS Instance (t4g.small)
  • Best for: Small apps and side projects

Standard

  • 3 AZs, 1 NAT gateway
  • ECS Fargate (512 CPU, 1024 MiB)
  • RDS Instance (t4g.large)
  • Best for: Most production workloads

Resilient

  • 3 AZs, 3 NAT gateways
  • Aurora with readers, KMS encryption, RDS Proxy
  • 30-day backup retention
  • Best for: High-availability applications

Enterprise

  • 3-AZ deployment with 3 NAT Gateways
  • Aurora database with 2 readers, KMS encryption
  • VPC endpoints, S3 flow logs (365-day retention)
  • Best for: Mission-critical applications

Custom

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

What Gets Created

Account Structure (Standalone)

Organisation Structure

Application Structure

Post-Creation Steps

After Creating Organisation

  1. Deploy the organisation (automatically cascades to platform and accounts):

After Creating Application

  1. Review infrastructure code:
  2. Deploy the application:
  3. Add more resources (--name is required and PascalCase):

Best Practices

  1. Connect First: Run fjall connect to establish an AWS connection before creating infrastructure
  2. Account First: For standalone use, create an account (fjall create account) before applications. Organisation is an upgrade path, not a prerequisite.
  3. Naming Convention: Names must start with a letter and can contain letters, numbers, and hyphens
  4. Region Selection: Choose regions close to your users
  5. 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

OIDC Stack Deployment Fails

If the OIDC CloudFormation stack fails to deploy:
  • Sign in to the correct AWS account in your browser
  • Check that your account has permission to create IAM roles and CloudFormation stacks
  • Retry with fjall connect to re-open the browser flow

Connection Not Configured

If authentication fails:
  • Run fjall connect to establish or verify your AWS connection
  • If using SSO, check that your AWS SSO session is active

Region Not Available

Some services are not 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. Modify the generated infrastructure.ts files to customise your setup further.

Next Steps

Connect AWS

Establish an AWS connection before you create or deploy infrastructure.

Deploy

Ship your application, account, or organisation to AWS.

Add resources

Add a database, storage, or compute to an application’s infrastructure.ts.

List resources

Inspect the resources declared in an application’s infrastructure.ts.