Skip to main content

Versions

The Data and ETL Blueprint pins the same tools as the AWS Baseline (OpenTofu 1.12.6, Terragrunt 1.1.5, AWS provider ~> 6.65), runs the ETL job on Glue 4.0 and the trigger on Python 3.12. Every registry module, pre-commit hook and GitHub Action is pinned to an exact version in the code, so a plan or a build means the same thing on every machine.

Where the pins live

root.hcl pins OpenTofu, Terragrunt and the AWS provider for every unit. No ETL module carries its own version file, so every unit uses exactly those pins; a guard script checks this in pre-commit and in the plan workflow.

Tools and providers

ComponentVersion
OpenTofu1.12.6 (up to, not including, 2.0.0)
Terragrunt1.1.5 or later
AWS provider~> 6.65

The plan and apply workflows install exactly OpenTofu 1.12.6 and Terragrunt 1.1.5.

Platform versions

ComponentVersion
AWS Glue4.0, glueetl command, Python 3
Lambda base imagepublic.ecr.aws/lambda/python:3.12
Lambda packageContainer image

Registry modules

ModuleVersionUsed for
terraform-aws-modules/s3-bucket/aws5.16.1The three data lake buckets
terraform-aws-modules/lambda/aws8.8.2The Lambda trigger, its role and log group

The catalog, Glue job, Lake Formation and security group modules use AWS provider resources directly.

Application runtime

ComponentVersion
Python>= 3.12 (pyproject.toml), 3.12 in CI
boto3 in the Lambda image>= 1.35.0
PySpark for local tests3.5.4
Ruff targetpy312, line length 120

Pre-commit hooks

Hook sourceVersionRepository
pre-commit/pre-commit-hooksv6.0.0Both
tofuutils/pre-commit-opentofuv2.4.2Infrastructure
antonbabenko/pre-commit-terraformv1.109.1Infrastructure
bridgecrewio/checkov3.3.19Both
astral-sh/ruff-pre-commitv0.16.8Code

GitHub Actions

ActionVersion
actions/checkoutv7.0.1
actions/setup-pythonv7.0.0
aws-actions/configure-aws-credentialsv6.3.0
aws-actions/amazon-ecr-loginv2.1.7
docker/build-push-actionv7.4.0
aquasecurity/trivy-actionv0.36.0
opentofu/setup-opentofuv2.0.2
gruntwork-io/terragrunt-actionv3.4.1
actions/upload-artifactv7.0.1
actions/github-scriptv9.0.0

Each is referenced by its full commit SHA with the version in a comment, so a moved tag cannot change what runs.

How versions change

A version change is its own pull request. For the infrastructure it is planned against all three stages before it merges; for the code it goes through the normal build and release path. The policy is on the versioning policy page, and the versions across all BuiltForProd repositories are in the release notes.