Skip to main content

Dynamodb Datastore Bootstrap

@webframp/dynamodb-datastore-bootstrapv2026.08.28.1· 13d agoMODELSWORKFLOWS
01README

One-shot bootstrap for @webframp/dynamodb-datastore. Ships a single provisioner model that creates a DynamoDB table (with GSI and TTL) and a least-privilege IAM managed policy, plus a workflow that runs the provisioner and then switches the current swamp repository over to the DynamoDB datastore.

Prerequisites

  • AWS credentials in the default credential chain (env / profile / role) with permissions to create the DynamoDB table, enable TTL, and create the managed policy.
  • The caller that will run swamp after setup must already hold, or will attach, the managed policy produced by this workflow.

What it does

  1. provision creates a DynamoDB table (PAY_PER_REQUEST, pk/sk key schema, GSI gsi1 for sync walks, TTL on ttl attribute) and a scoped IAM managed policy granting the seven runtime actions limited to that table.
  2. A final command/shell step runs swamp datastore setup extension @webframp/dynamodb-datastore --config ... to flip the repo's datastore to DynamoDB.

Running

swamp extension pull @webframp/dynamodb-datastore-bootstrap

swamp model create @webframp/dynamodb-datastore-bootstrap/provisioner \
  swamp-dynamodb-provisioner

swamp model create command/shell swamp-dynamodb-setup

swamp workflow run @webframp/bootstrap-dynamodb-datastore \
  --input region=us-east-1

swamp datastore status

See the bundled README for optional inputs (table_name, policy_name), the exact IAM policy produced, and idempotency notes.

02Release Notes

2026.08.28.1

Changed: Normalized the extension license to Apache-2.0 and corrected the copyright holder to "Sean Escriva". Extensions that previously shipped an MIT LICENSE.md are now Apache-2.0, consistent with the repository root and every other extension. No code or behavioral changes.

Upgrade note: License text only. No API, schema, or runtime behavior changed.

2026.08.27.1

Changed: Test suite now builds its method context from the shared createModelTestContext factory in @systeminit/swamp-testing instead of a hand-rolled context, wrapping writeResource to preserve the existing assertion API. No behavioral, schema, or method changes — the published provisioner is unchanged. The deno.json gains a dev-only @systeminit/swamp-testing import-map entry and its check task now type-checks the test file.

2026.08.26.3

Fixed: Restored inline npm:zod@4.4.3 import specifiers so the registry quality scorer can resolve dependencies and score the extension. An earlier release used a bare "zod" import-map specifier, which published but scored as unscored.

Changed: Retained explicit compilerOptions.strict in deno.json. No behavioral or schema changes.

03Models1
@webframp/dynamodb-datastore-bootstrap/provisionerv2026.08.28.1provisioner.ts
fn provision()
Create/verify the DynamoDB table and scoped IAM managed policy for @webframp/dynamodb-datastore.

Resources

state(infinite)— DynamoDB table + IAM managed policy provisioned for swamp.
04Workflows1
@webframp/bootstrap-dynamodb-datastoref8d2a1c3-5e7b-4f9a-b6d0-8c4e2a1f3d5b

Provision a DynamoDB table + least-privilege IAM managed policy for @webframp/dynamodb-datastore, then switch the current repo to use DynamoDB. After completion the repo is configured. Verify with `swamp datastore status`.

infraCreate the DynamoDB table and IAM managed policy.
1.provisionswamp-dynamodb-provisioner.provision— Run the provisioner model to create/verify the table + scoped managed policy. Instance `swamp-dynamodb-provisioner` must be pre-created with globalArguments wired to the workflow inputs: table_name: ${{ inputs.table_name }} region: ${{ inputs.region }} policy_name: ${{ inputs.policy_name }}
configurePoint this repo's datastore at the new DynamoDB table.
1.run-setupswamp-dynamodb-setup.execute— Run `swamp datastore setup extension @webframp/dynamodb-datastore`.
05Previous Versions8
2026.08.27.1

2026.08.27.1

Changed: Test suite now builds its method context from the shared createModelTestContext factory in @systeminit/swamp-testing instead of a hand-rolled context, wrapping writeResource to preserve the existing assertion API. No behavioral, schema, or method changes — the published provisioner is unchanged. The deno.json gains a dev-only @systeminit/swamp-testing import-map entry and its check task now type-checks the test file.

2026.08.26.3

Fixed: Restored inline npm:zod@4.4.3 import specifiers so the registry quality scorer can resolve dependencies and score the extension. An earlier release used a bare "zod" import-map specifier, which published but scored as unscored.

Changed: Retained explicit compilerOptions.strict in deno.json. No behavioral or schema changes.

2026.08.26.3

2026.08.26.3

Fixed: Restored inline npm:zod@4.4.3 import specifiers so the registry quality scorer can resolve dependencies and score the extension. An earlier release used a bare "zod" import-map specifier, which published but scored as unscored.

Changed: Retained explicit compilerOptions.strict in deno.json. No behavioral or schema changes.

2026.08.26.1

2026.08.26.1

Changed: Normalized deno.json configuration for repo-wide consistency: added explicit compilerOptions.strict and migrated zod dependency to the import map (bare "zod" specifier instead of inline npm:zod@4.4.3). No behavioral changes — runtime resolution is identical.

2026.08.24.1

2026.08.24.1

Added: Output metadata attributes for observability.

  • durationMs: Method execution duration in milliseconds.
  • collectedBy: Extension name that produced the data.
  • fetchedAt: ISO 8601 timestamp when data was fetched (added to resources that previously lacked it).
2026.08.23.1

2026.08.23.1

Changed: Documentation only — no code changes. Added a ## Troubleshooting section covering the Deno.errors.NotFound rewrite when aws isn't on PATH, the 60s waitForTableActive timeout, the TOCTOU race handling in ensurePolicy (EntityAlreadyExists), and sts get-caller-identity failures from missing/expired credentials.

2026.08.21.1

2026.08.21.1

Changed: provision now gives a clear error when the AWS CLI itself can't be run (not installed / not on PATH) instead of a bare "No such file or directory" that doesn't name what's missing. It also now catches the case where the AWS CLI exits successfully but prints something that isn't valid JSON (e.g. a CLI deprecation warning ahead of the payload) — previously this crashed with a raw JSON.parse error giving no indication of which aws subcommand or what output caused it; it now names the command and includes a preview of the unexpected output.

2026.07.27.1

Fixed: The fmt task ran deno fmt --check, so deno task fmt verified formatting instead of applying it and there was no way to format the extension through its own task. fmt now formats and a new fmt:check verifies, matching every other extension in the repository.

Fixed: deno fmt no longer inspects CLAUDE.md / AGENTS.md. Those files are gitignored and never present in CI, but deno fmt does not read .gitignore, so deno task fmt:check could fail locally on a file CI does not have.

Upgrade note: Tooling and formatting only. No model, method, schema, or behavior change — nothing to do on upgrade.

2026.07.27.1

2026.07.27.1

Fixed: The fmt task ran deno fmt --check, so deno task fmt verified formatting instead of applying it and there was no way to format the extension through its own task. fmt now formats and a new fmt:check verifies, matching every other extension in the repository.

Fixed: deno fmt no longer inspects CLAUDE.md / AGENTS.md. Those files are gitignored and never present in CI, but deno fmt does not read .gitignore, so deno task fmt:check could fail locally on a file CI does not have.

Upgrade note: Tooling and formatting only. No model, method, schema, or behavior change — nothing to do on upgrade.

2026.07.22.1

2026.07.22.1

Added: One-shot bootstrap for @webframp/dynamodb-datastore. Ships a provisioner model that creates a DynamoDB table (PAY_PER_REQUEST, GSI gsi1, TTL on ttl) and a scoped IAM managed policy (7 actions), plus a workflow that runs the provisioner and switches the repo datastore to DynamoDB.

Added: Full idempotency — re-running the provisioner against existing infrastructure is a no-op that reports tableCreated: false and policyCreated: false.

Added: TOCTOU-safe policy creation — concurrent provisioner runs will not fail if the policy is created between the existence check and the create call.

06Stats
A
100 / 100
Downloads
0
Archive size
14.2 KB
  • Has README or module doc2/2earned
  • README has a code example1/1earned
  • README is substantive1/1earned
  • Most symbols documented1/1earned
  • No slow types (deprecated)1/1earned
  • Dependencies pass trust audit2/2earned
  • Has description1/1earned
  • Platform support declared (or universal)2/2earned
  • License declared1/1earned
  • Verified public repository2/2earned
07Platforms
08Labels