Prerequisites
Prerequisites
Running a single AWS account:
- Install the Fjall CLI.
- Connect your AWS account with
fjall connect(see Getting Started). - Scaffold the account infrastructure with
fjall create account.
Scaffold the account infrastructure
fjall account deploy deploys the CDK app at fjall/account/infrastructure.ts. fjall create account writes that file:
Run this once per project. If you scaffolded with
fjall create organisation, the account component is already in place, so skip straight to the deploy.
Select the deployment target
A deployment target is an account and region pair, derived from your organisation config. Target names follow<account-name>-<abbreviated-region>, for example production-use1 or development-euw1. There is no manual AWS profile step.
List the available targets:
▸ and repeated on a trailing Active: line. Set a different one by name:
fjall target set writes activeTarget to .fjall/local.json, which is not committed. It requires a Fjall login, and inside a project it requires the project’s organisation binding to match your current credential. Outside a project it refuses unless you pass --create-config. If the target’s region is not yet one of the organisation’s configured regions, it refuses unless you pass -y, --yes, which adds that region to the organisation config.
fjall account deploy auto-selects when the organisation has exactly one member account, so a single account spanning two regions still resolves without a prompt and you can skip this step. To override the active target for a single deploy, pass --target <name>. An unknown target name fails with the list of valid names, never a silent fallback.Deploy the account
From the root of your project, run:What happens
The deploy runs five steps:- Authenticating with AWS: mints short-lived credentials for the resolved target.
- Connect securely: establishes the AWS context for the account and region.
- Prepare environment: synthesises the CloudFormation template and compares template hashes.
- Deploy infrastructure: applies the account stack.
- Enable monitoring: wires up the account monitoring resources.
The IAM globals (deploy role, monitoring role, audit role, CloudTrail, S3 Block Public Access) carry fixed names, so they are created only in the account’s home region. Other regions get the region-local resources.
VPCs and security groups are not part of this stack. Fjall creates them per application at application deploy time.
Security services (GuardDuty, Security Hub, AWS Config recorder, IAM Access Analyzer, Amazon Inspector) render into the account scaffold only when it was generated by
fjall create organisation --security <tier>. A standalone fjall create account scaffold carries no governance profile.
The deploy role is capped by a permissions boundary
The account stack createsFjallDeployBoundary<orgId>, an account-global customer-managed policy, and attaches it to the FjallDeploy<orgId> role as its permissions boundary. This happens by default, whether or not the scaffold carries a governance profile: a scaffold with no securityTier still gets the hardened boundary, because the tier chooses which ceiling the role has, never whether it has one.
The full policy, the three tiers and what each denies are documented on fjall connect, which installs the same policy through the quick-create template.
To change the tier, or to opt out, edit the Account props in fjall/account/infrastructure.ts:
fjall create organisation --security <tier> writes securityTier into this file for you. There is no CLI flag for either setting on a deploy: both are properties of the infrastructure you are deploying, so they live in the file.
The boundary lands in two passes
The policy has to exist in the account before a bootstrap can point CDK’s execution role at it, so a new account converges over two deploys:
Bootstrapping is per account and region, so each region converges on its own schedule. A region you deploy into later is capped by the first deploy that reaches it — usually an application deploy — not retroactively by the account deploy.
Nothing is ever silently left uncapped. The first pass logs the state and the cure:
A deploy that cannot read the policy — a throttled or denied
iam:GetPolicy — warns and bootstraps without passing the boundary flag. That never loosens anything: CloudFormation carries the toolkit stack’s previous value through unchanged, so an already-capped role stays capped. A CDK line reading Removing existing permissions boundary during such a run is misleading and can be ignored; the parameter is carried over, not cleared.Check which roles are capped
ListRoles does not return the PermissionsBoundary field, so any check built on a role listing reports every role as uncapped. Read it per role with get-role instead, through fjall aws exec so the call runs on Fjall-minted credentials:
PermissionsBoundaryType of Policy and a PermissionsBoundaryArn ending in FjallDeployBoundary<orgId>. An uncapped one answers null.
Run it once per deployment target to see the whole estate. fjall target list gives you the target names, and fjall org get gives you the organisation id.
To read the policy itself, including which version is live and how many roles it caps:
Output
Interactive runs finish with a step tick-list titledDeploying account: account, then a Next Steps section pointing at fjall deploy. When the template is unchanged you see No changes to deploy. Your infrastructure is up to date. instead.
Non-interactive runs print a summary block:
Options
--region, --all-regions, --skip-migrations and --skip-build belong to the application command, fjall deploy <app>. The tier leaves register only their own flags, so passing one of those here fails with error: unknown option. Use --target <name> instead, which carries the region.fjall connect or the web app. Passing -e, --environment to an org-membered account fails with a teaching error rather than restaging it.
Next Steps
Create Application
Scaffold your first application’s infrastructure.
Deploy Application
Deploy an application to your managed AWS account.
Understanding Profiles
See how Fjall derives AWS credentials and deployment targets.
Deployment Safety
Review the approval gates that guard destructive changes.