ECR Repository
ECR repo with lifecycle rules, scan-on-push, immutable tags, and cross-account/replication policies.
Compare Container Registry across clouds →
Part of: AWS Container Platform (EKS)
Verification
Live-testedReally deployed to a cloud sandbox, verified against its outputs and assertions, then destroyed - with the teardown confirmed.
Conformance
- Static validation (fmt · validate · tflint)
- Security scan clean (Checkov)
- Plan test superseded by live test
Provenance
- SHA-256 checksum
- Cosign signature
Functional
- Live-tested - applied, verified, destroyed
Last verified 2026-06-11 · how we verify
Verify this download
cosign · sha-256Don't take our word for it. Every release is signed with cosign - check the bytes against our pinned public key before you trust them.
# 1. Our pinned public key - fetch once, trust out-of-band
curl -O https://www.iac-bazaar.com/cosign.pub
# 2. This module's Sigstore bundle
curl -o aws-ecr-1.0.0.sigstore.json \
https://www.iac-bazaar.com/api/artifacts/aws-ecr/signature
# 3. Verify the tarball you downloaded
cosign verify-blob \
--key cosign.pub \
--bundle aws-ecr-1.0.0.sigstore.json \
aws-ecr-1.0.0.tar.gz
# → Verified OK
# 4. (optional) confirm the checksum too
echo "3a4588f15fb261ae0db75a1d69fc5190302c58f63b004546ca2fb698b630b950 aws-ecr-1.0.0.tar.gz" | sha256sum -cUse it from the registry
terraform · opentofumodule "ecr" {
source = "www.iac-bazaar.com/iac-bazaar/aws-ecr/aws"
version = "1.0.0"
}Paid module — needs a purchase (or a subscription that covers it) plus a registry token from /account/tokens. Full setup: registry docs.
Inputs & outputs
Create a free account to read this module's contract
The declared contract — every input name, type, default and description, plus every output — is shown to signed-in accounts, not to anonymous visitors.
A free account sees the contract of every Free module. This one is Basic, so its contract unlocks when you buy it.
Documentation
aws-ecr
ECR repository with lifecycle rules, scan-on-push, immutable tags, and
cross-account/replication policies — the lifecycle-policy JSON and
least-privilege repository policy are generated for you from typed inputs.
Works with Terraform and OpenTofu (>= 1.6), AWS provider >= 6.0, < 7.0.
Secure defaults:
- Immutable tags — pushed tags can never be silently overwritten
- Scan on push enabled
- Images always encrypted at rest (AES256, or your CMK via
kms_key_arn) force_delete = false— Terraform refuses to destroy a repository that still holds images- Untagged images (superseded layers, failed pushes) expire after 14 days
Lifecycle presets compose into one correctly-prioritized policy:
tagged_image_retention— keep-last-N rules per tag-prefix setuntagged_expiry_days— age out untagged imagesmax_image_count— hard cap on total images (ECR requires thistagStatus=anyrule to carry the highest priority — handled for you)
Cross-account access is least-privilege: pull_principal_arns get exactly the
three pull actions, push_principal_arns add the four push actions, and
allow_lambda_pull grants the Lambda service principal scoped to functions in
your own account. Pass repository_policy / lifecycle_policy JSON to take
full manual control.
Requirements
- Terraform or OpenTofu
>= 1.6 hashicorp/aws>= 6.0, < 7.0
License
Commercial — IaC Bazaar EULA. © IaC Bazaar. Original work (not derived from a third-party module).
Usage code & full reference unlock after purchase
The complete copy-paste usage, the full input/output reference, and operational notes ship with your licence - shown here and bundled in the download.
- Usage
- Inputs
- Outputs
Related modules
Artifact Registry Repositories
Docker/Maven/npm repos with cleanup policies, remote and virtual repositories, CMEK and reader/writer IAM.
Azure Container Registry
ACR with geo-replication, retention/trust policies, private endpoint and AcrPull role wiring for AKS/Container Apps.