App resources

Declare S3, SQS, ElastiCache Redis and RDS/Aurora in laminar.yml and provision them in your own AWS — no console clicking. All commands take --stage (defaults to the config stage).

Storage (S3)

storage:
  bucket: my-app-assets    # optional; auto = laminar-<name>-<stage>-storage
  versioning: true
  public: false            # default: private + SSE-S3 + public access blocked
laminar storage provision
laminar storage upload ./logo.png --key assets/logo.png
laminar storage ls assets/
laminar storage url assets/logo.png --expires 3600   # presigned GET
laminar storage download assets/logo.png ./logo.png
laminar storage rm assets/logo.png

Buckets are private, SSE-S3 encrypted, with public access blocked.

Queues (SQS)

queues:
  - jobs                   # shorthand: a standard queue named "jobs"
  - name: events
    fifo: true
    dlq: true              # also create a dead-letter queue + redrive
    max_receive_count: 5
    visibility_timeout: 30
laminar queues provision
laminar queues list
laminar queues send jobs '{"hello":"world"}'   # FIFO: add --group-id
laminar queues purge jobs
laminar queues delete jobs

Physical name: laminar-<name>-<stage>-<queue>[.fifo].

Caches (ElastiCache Redis)

caches:
  - name: sessions         # standard: a Redis cache named "sessions"
    engine: redis
    node_type: cache.t3.micro
laminar caches provision
laminar caches list                    # status + endpoint:port
laminar caches delete sessions

Caches run inside your vpc: with security groups wired to your functions/services. The connection endpoint and port are returned by list.

Databases (RDS / Aurora Serverless v2)

databases:
  - name: main
    engine: postgres       # postgres | mysql
    mode: instance         # instance | aurora-serverless
    instance_class: db.t3.micro
    allocated_storage_gb: 20
  - name: analytics
    engine: postgres
    mode: aurora-serverless
    min_acu: 0.5
    max_acu: 4
laminar databases provision
laminar databases list                 # status + endpoint
laminar databases info main            # endpoint + Secrets Manager location
laminar databases info main --show-password
laminar databases delete main          # skips final snapshot

Master credentials are generated and stored in Secrets Manager at laminar/<name>/<stage>/<db>/db (never printed unless --show-password). VPC subnet group + security groups are wired from vpc:; instances are encrypted with 7-day backups. Creation takes a few minutes — re-run list/info to check status.