Skip to content

Getting started

Hate clicking through the AWS console for the same three things? This is the short path: install the CLI, log in, create something real, use it, then clean up.

Working name. The binary is awsutopia until a trademark-safe product name lands. Tag keys stay utopia:project / utopia:env.

1. Install

bash
git clone https://github.com/rafaelcg/awsdream.git
cd awsdream
bun install
bun link          # optional: puts `awsutopia` on your PATH
bun run cli --help

Needs Bun ≥ 1.3 and an AWS profile (SSO is the happy path).

2. Log in

bash
awsutopia login --profile my-sso

That wraps aws sso login, then checks who you are with STS. Prefer SSO over long-lived access keys. More detail: Auth & login.

3. Init a project

bash
awsutopia init my-app --env dev

Writes .awsutopia/project.json. Every resource you create gets tagged with that project + env so list / destroy / share know what belongs to you.

4. Create something

bash
awsutopia create bucket my-app-dev-assets
awsutopia create secret api-key --value 'replace-me'
awsutopia create fn hello --src ./fn          # optional: Lambda + Function URL
awsutopia create site www --src ./dist        # optional: S3 + CloudFront HTTPS

You'll get a private, encrypted, versioned S3 bucket, an SSM SecureString at /utopia/my-app/dev/api-key, and (if you ran them) a Lambda Function URL and/or a CloudFront site URL. No YAML. No console.

5. List what you own

bash
awsutopia list

Shows utopia-tagged buckets, secrets, functions, crons, and sites for the current project. Cost shows COST_UNAVAILABLE until live cost enrichment exists — we won't invent dollar amounts.

6. Use it

bash
# upload a file with the AWS CLI (or console), then:
awsutopia bucket share my-app-dev-assets path/file.txt --expires 1h
# you'll get a temporary HTTPS URL

awsutopia secret get api-key              # value shown as ***
awsutopia secret get api-key --reveal     # plaintext when you really need it

awsutopia logs hello --since 1h           # short name → /aws/lambda/utopia-…
# or a full group: awsutopia logs /aws/lambda/my-fn --since 1h

7. Destroy when you're done

bash
awsutopia destroy site www --yes
awsutopia destroy fn hello --yes
awsutopia destroy secret api-key --yes
awsutopia destroy bucket my-app-dev-assets --yes

Destroy only touches utopia-tagged resources that match your current project (unless you pass --force). Buckets get emptied of all versions first. Details: Destroy policy.

Nervous? Dry-run first

bash
awsutopia create bucket example --dry-run --json
awsutopia destroy bucket example --dry-run --json

--dry-run plans without mutating AWS (destroy may still read tags/versions to show the plan).

Next

Working name — your AWS account, your bill.