v2.0.4
stackql-deploy v2.0.4
Identifier capture from exists queries
The exists query can now return a named field (e.g. vpc_id) instead of count. The returned value is automatically captured as a resource-scoped variable ({{ this.<field> }}) and made available to all subsequent queries (statecheck, exports, delete) for that resource. This enables a two-step workflow where exists discovers the resource identifier and statecheck verifies its properties.
- When
existsreturnsnullor empty for the captured field, the resource is treated as non-existent - Multiple rows from an
exists(identifier pattern) orexportsquery is now a fatal error - After a
create, theexistsquery is automatically re-run to capture the identifier for use in post-deploystatecheckandexportsqueries
RETURNING * identifier capture
When a create statement includes RETURNING * and the response contains an Identifier field, it is automatically injected as this.identifier — skipping the post-create exists re-run and saving an API call per resource.
return_vals manifest field
New optional return_vals field on resources to explicitly map fields from RETURNING * responses to resource-scoped variables:
return_vals:
create:
- Identifier: identifier # rename pattern
- ErrorCode # direct captureIf return_vals is specified but the field is missing from the response, the build fails.
to_aws_tag_filters template filter
New AWS-specific Tera filter that converts global_tags (list of Key/Value pairs) to the AWS Resource Groups Tagging API TagFilters format:
AND TagFilters = '{{ global_tags | to_aws_tag_filters }}'YAML type preservation fix
Fixed an issue where YAML string values that look like numbers (e.g. IpProtocol: "-1") were being coerced to integers during JSON serialization. String types declared in YAML are now preserved through to the rendered query.
Teardown improvements
- Teardown no longer retries exports queries that return empty results — missing exports are set to
<unknown>and teardown continues best-effort - Post-delete existence checks accept the first empty response instead of retrying, reducing teardown time significantly
AWS starter template updated
The stackql-deploy init --provider aws starter template now uses:
awscc(Cloud Control) provider instead ofaws- CTE + INNER JOIN exists pattern with
to_aws_tag_filters AWS_POLICY_EQUALfor statecheck tag comparisonthis.<field>identifier capture patternRETURNING *on create statementsstackql:stack-name/stackql:stack-env/stackql:resource-nametag taxonomy
AWS VPC Web Server example
Complete rewrite of the examples/aws/aws-vpc-webserver stack (renamed from aws-stack) using the awscc provider exclusively. Includes 10 resources demonstrating all query patterns: tag-based discovery, identifier capture, property-level statechecks, PatchDocument updates, and the to_aws_tag_filters filter.
Patch Document Test example
New examples/aws/patch-doc-test example demonstrating the Cloud Control API UPDATE workflow with PatchDocument — deploy an S3 bucket, modify its versioning config in the manifest, and re-deploy to apply the update.
Other changes
- Fixed
initcommand missing--envargument (defaulting todev) - Added
debuglog import to build command - Debug logging now shows full
RETURNING *payloads - Documentation updates:
resource-query-files.md,template-filters.md,manifest-file.md, and AWS template library
Download
| Platform | Architecture | Asset |
|---|---|---|
| Linux | x86_64 | stackql-deploy-linux-x86_64.tar.gz |
| Linux | arm64 | stackql-deploy-linux-arm64.tar.gz |
| macOS | Universal (Apple Silicon + Intel) | stackql-deploy-macos-universal.tar.gz |
| Windows | x86_64 | stackql-deploy-windows-x86_64.zip |
Each archive contains a single binary named stackql-deploy (or stackql-deploy.exe on Windows). Verify your download with SHA256SUMS.
Install (quick)
Linux / macOS:
curl -L https://get-stackql-deploy.rs -o stackql-deploy.tar.gz && tar xz stackql-deploy.tar.gzWindows (PowerShell):
Invoke-WebRequest -Uri https://get-stackql-deploy.rs -OutFile stackql-deploy.zip
Expand-Archive stackql-deploy.zip -DestinationPath .cargo:
cargo install stackql-deployFull documentation: stackql-deploy.io - Source: github.com/stackql/stackql-deploy