Skip to main content

A tool to render SAM templates locally with SAM config overrides

Project description

SAM Template Renderer

A lightweight Python tool to parse, resolve, and render AWS SAM and CloudFormation templates locally.

This tool is designed to help debug complex template logic—specifically Mappings, Conditions, and Substitutions—without needing to deploy to AWS. It resolves intrinsic functions locally and outputs the final "rendered" YAML.

Features

  • Intrinsic Function Resolution: Evaluates Fn::FindInMap, Fn::If, Fn::Sub, Fn::Join, Fn::Select, Fn::Split, and more locally.
  • Logic Handling: fully supports boolean logic (Fn::And, Fn::Or, Fn::Not, Fn::Equals) to correctly evaluate Condition blocks.
  • SAM Config Support: Parses samconfig.toml to apply environment-specific parameter_overrides automatically.
  • Custom YAML Tags: Handles short-form CloudFormation tags (e.g., !Ref, !Sub, !GetAtt) without parsing errors.
  • Hybrid Resolution: Mocks runtime values (like Resource IDs) but can optionally fetch real Fn::ImportValue data from AWS if a profile is provided.
  • Extended Syntax: Supports custom 4th-argument "DefaultValue" syntax for Fn::FindInMap.

Installation

This project is managed with uv.

# Clone the repository
git clone git@github.com:ryanm101/samrenderer.git
cd samrenderer

# Install dependencies and sync environment
uv sync

Usage

Run the renderer against a template file. You can optionally specify a samconfig.toml environment or an AWS profile.

Basic Rendering

Resolves parameters using defaults defined in the template.uv run sam-render template.yaml

Using SAM Config (Recommended)

Applies parameters from [<env>.deploy.parameters] in samconfig.toml.

uv run sam-render examples/template.yaml --config examples/samconfig.toml --env dev

Fetching Real Exports

By default, Fn::ImportValue returns a mock string. Provide an AWS profile to fetch real values from CloudFormation exports.

uv run sam-render template.yaml --config samconfig.toml --env dev --profile my-aws-profile

Supported Functions

Category Function Status Notes
Core Ref Resolves Parameters/Pseudo-params; mocks Resources.
Fn::GetAtt ⚠️ Returns mock string mock-resource-attr.
Fn::ImportValue Fetches from AWS if --profile is set, otherwise mocks.
Logic Fn::If Full support.
Fn::Equals Full support.
Fn::Not Full support.
Fn::And / Or Full support.
Condition Resolves Condition keys in dictionaries.
Maps Fn::FindInMap Supports standard 3-arg and custom 4-arg (DefaultValue) syntax.
String Fn::Sub Supports String and Key-Value map interpolation.
Fn::Join Full support.
Fn::Split Full support.
Fn::Select Full support.
Fn::Base64 ⚠️ ️Returns readable string [Base64: ...] instead of encoding.
Fn::GetAZs ⚠️ Returns mock list based on Region (e.g., us-east-1a, 1b, 1c).

Development & Testing

Tests are written using pytest.

# Run all tests
uv run pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

samrenderer-0.1.1.tar.gz (34.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

samrenderer-0.1.1-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file samrenderer-0.1.1.tar.gz.

File metadata

  • Download URL: samrenderer-0.1.1.tar.gz
  • Upload date:
  • Size: 34.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for samrenderer-0.1.1.tar.gz
Algorithm Hash digest
SHA256 fa4dbe817e02bfd6712ef5f5c7520a783764b33e7e4e6c6c700c49cf707c485a
MD5 5dc223a40a1eb01c2bc24e36279befe5
BLAKE2b-256 671b3a8ab0230bd294cfe5bce3b077b364b7c997c97803781930a479e7967883

See more details on using hashes here.

Provenance

The following attestation bundles were made for samrenderer-0.1.1.tar.gz:

Publisher: ci.yml on ryanm101/samrenderer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file samrenderer-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: samrenderer-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for samrenderer-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8749e2f683cc2710d89c11c10fa2d92bd76952d8fc7520f49e29a8691c668477
MD5 68ca11f112d8ff912329629301304547
BLAKE2b-256 0094d8c3c907c25b21be5f354b5a3f70ca25508ecd1d0cf39558bb95febe1364

See more details on using hashes here.

Provenance

The following attestation bundles were made for samrenderer-0.1.1-py3-none-any.whl:

Publisher: ci.yml on ryanm101/samrenderer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page