AWS
official ● signeddoze/aws Every doze-aws service — S3, SQS, SNS, DynamoDB, Lambda, EventBridge, KMS, SSM, Secrets Manager, STS — behind one gateway on one endpoint, as one doze instance. Declare buckets, queues, topics, tables, functions, rules, keys, secrets and parameters as nested blocks (the same shape as doze-aws's stack.yaml); doze converges them on boot. A stock SDK or the aws CLI points AWS_ENDPOINT_URL at the one endpoint; the web console at /_console manages everything, with the live Flows graph and a Traffic tail capturing every call. One process, no Docker, no JVM, no LocalStack.
Usage
Drop it in doze.hcl and run doze up.
aws "local" {
port = 4566
bucket "uploads" { versioning = true }
queue "emails" { dlq = "auto" max_receives = 5 }
queue "orders" { fifo = true content_dedup = true }
topic "signups" {
subscribe { queue = "emails" raw = true }
}
table "sessions" {
key = "session_id:S"
ttl = "expires_at"
}
function "resize" {
code = "./functions/resize" # dir with a provided.al2 bootstrap
timeout = 10
}
rule "order_placed" {
pattern = "{\"source\":[\"shop.checkout\"]}"
targets = ["lambda:resize", "queue:emails"]
}
key "app_key" {}
secret "db_password" { value = "s3cr3t" }
parameter "/app/feature/banner" { value = "hello" }
} Versions you can run
This engine takes no version = — it tracks current APIs.
Configuration
Arguments and nested blocks the engine accepts — generated from the module itself, so it can't drift.
bucket"" { }
nested block · repeatableOne S3 bucket (the label is the bucket name).
| Name | Type | Default | Description |
|---|---|---|---|
| versioning | bool | false | Enable object versioning. |
| object_lock | bool | false | Enable object lock (implies versioning). |
queue"" { }
nested block · repeatableOne SQS queue; dlq = "auto" creates and wires a dead-letter companion.
| Name | Type | Default | Description |
|---|---|---|---|
| fifo | bool | false | FIFO queue (name gets .fifo). |
| dlq | string | — | "auto" or an existing queue name. |
| max_receives | number | — | Receives before dead-lettering. |
topic"" { }
nested block · repeatableOne SNS topic with subscribe blocks (queue/lambda/http, filter, raw).
— no arguments, just the label
table"" { }
nested block · repeatableOne DynamoDB table; key uses the "pk:S sk:N" shorthand, plus gsi/lsi blocks.
— no arguments, just the label
function"" { }
nested block · repeatableOne Lambda function running as a real local process (code = local dir).
— no arguments, just the label
rule"" { }
nested block · repeatableOne EventBridge rule; targets use "queue:name"/"topic:name"/"lambda:name".
— no arguments, just the label
key"" { }
nested block · repeatableOne KMS key with real local crypto.
— no arguments, just the label
secret"" { }
nested block · repeatableOne Secrets Manager secret (never stomped without force).
— no arguments, just the label
parameter"" { }
nested block · repeatableOne SSM parameter (the label is the full /path).
— no arguments, just the label
Under the hood — module releases you never write these; doze picks and pins automatically
The plugin releases that provide this engine. doze selects the newest one compatible with your doze and your declared versions, pins it in doze.lock, and the index is cumulative — older releases stay resolvable for pinned lockfiles. modules { aws { version = "…" } } pins one exactly (the escape hatch for bisecting a regression).
| release | protocol | engine support | platforms |
|---|---|---|---|
| 0.1.1 stable | 1 | 3 platforms | |
| 0.1.0 | 1 | 3 platforms |
raw signed data: index.yaml ↗ · meta.yaml ↗