Skip to main content

Prerequisites

Complete these before deploying: fjall deploy enforces both gates before it touches AWS. An unauthenticated run stops with Authentication required. Run 'fjall login' first.

Deploy your application

Run this from your project root:
Replace api with your application name. The one command builds the container image, synthesises infrastructure, and applies the change. The positional argument is always an application name. Tier deploys are separate noun-verb commands: fjall org deploy, fjall platform deploy and fjall account deploy. Passing a tier word to fjall deploy stops before authentication with a teaching error, so nothing is validated and nothing is deployed.

What happens during a deploy

At a TTY, Fjall renders a step checklist, streams live CloudFormation events, and stops for approval before applying changes.

Step checklist

Steps that do not apply to your application drop out. An application with no CDN never shows the CDN step.

Pre-deployment checklist

A streaming checklist runs before synthesis. Steps that do not apply drop out.
Synthesis also checks engine compatibility before anything is deployed.

Live progress

Each stack streams its own CloudFormation resource events in an operation box, with a progress bar and a per-resource table. The Docker build, the ECS rollout, and OpenNext builds get their own boxes. When storage, messaging, and database deploy concurrently, a switchable parallel panel replaces the single box. If nothing changed since the last deploy, the run ends before any gate with Already up to date — no changes since last deploy.

Confirmations

Up to four prompts can appear, in this order.

The change plan

The approval gate is engaged by default at a TTY, on any deploy that has changes.
Change symbols: + create, ~ update, ± replace, - delete, > read. Rejecting the plan prints ⊘ Plan rejected — deployment cancelled, nothing changed. Declining a destructive consent prints ⊘ Destructive changes declined — deployment withheld, nothing was applied. Non-interactive and CI runs show no plan unless you pass --plan or --require-approval. See Destructive Changes for the consent ceremony.

Deployment options

Skip the prompts

This drops the plan approval and the post-deploy restart prompt. It does not satisfy the destruction gate or the missing-secrets prompt. For CI/CD pipelines, force plain output:

Infrastructure only

Apply infrastructure changes without rebuilding the container:

Code only

Rebuild and redeploy the container without touching infrastructure:

Skip the build

Reuse an already-pushed image, paired with --deploy-only:

Roll forward or back to a known image

Deploy an existing image tag. This skips the build and implies --deploy-only:
Fjall image tags are content-addressed: <service>-sha-<12 hex characters of the image digest>. List the tags an application has shipped with fjall releases api, or read them from its ECR repository. Tags like v1.4.2 are not produced by Fjall builds and will not resolve.

Select the build-arg tier

-e, --environment <env> chooses which .env.<stage> file supplies Docker build args:
-e, --environment does not select an AWS account, a region, a target, or the synthesis environment. The account comes from the active deployment target (fjall target set <name>, or --target <name> per deploy). The synthesis environment, which decides every removal policy, is derived from the target account’s own record. See Understanding Profiles.

Verbose output

Common deploy options

fjall deploy carries the full flag surface, including the approval-token, destructive-consent, build-arg, and build-secret families.
Cascade control belongs to the organisation tier. --no-cascade is registered only on fjall org deploy, never on an application deploy.

After deployment

Inspect your resources

List the resources declared in the application’s infrastructure.ts:
fjall list reads the file on disk, not CloudFormation. Two commands give the wider view: fjall status prints a name and health table of every application plus a summary line, and fjall apps lists the applications in your organisation.

View logs

Fjall never writes ~/.aws/credentials, so run AWS commands through the CLI’s minted credentials:
The ECS service’s Logs tab in the AWS console shows the same stream.

Track costs


Update an application


Roll back

A rollback re-registers each service against images that already exist in ECR. Nothing is rebuilt and infrastructure is not re-synthesised.
To pin a single service to a known image instead, use fjall deploy api --image-tag <tag>. See releases and rollback for the full behaviour.

Troubleshooting

When a deploy fails, CloudFormation rolls the stack back and names the failing resource.
  1. Read the error message. It names the resource that failed.
  2. Re-run with --verbose for detailed logs.
  3. Fix the underlying issue and redeploy.

Common issues

The deployment error reference covers the classified CloudFormation and ECS failures in detail.

Next Steps

A first deployment typically takes 10 to 15 minutes while AWS provisions resources. Later updates are faster.

Add Resources

Extend your application with databases, storage, and more

Deploy Reference

The complete fjall deploy flag surface and subcommands

Destructive Changes

Understand the consent ceremony before a replace or destroy

Set Up CI/CD

Automate deployments from your pipeline