AWSStatic-verified

A Service where a Push Is Not a Deploy

auto_deployments takes every push to the image tag straight to production with no review, which quietly makes the deployment gate "who can push". Off by default, egress routed through your VPC, and the pull role kept separate from the run role.

terraformAWSaws
aws-app-runnervizier v1.2.0

Verification

Static-verified

Passed: validated and lint-clean (provider-schema-validated for AWS/Azure/GCP; Terraform-language lint elsewhere).

Conformance

  • Static validation (fmt · validate · tflint)
  • Security scan clean (Checkov)
  • Plan tests (mocked: validation rules · outputs)

Provenance

  • SHA-256 checksum
  • Signature (pending)

Functional

  • Live test pending (no cloud run yet)

Last verified 2026-09-13 · how we verify

Use it from the registry

terraform · opentofu
module "app_runner" {
  source  = "www.iac-bazaar.com/iac-bazaar/aws-app-runner/aws"
  version = "1.0.0"
}

Needs a registry token from /account/tokens. The module itself is free; the account is what identifies you. 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 module in the catalogue. There is no subscription and nothing to buy - the modules are free to download, and they run under Vizier.

Documentation

aws-app-runner

An App Runner service from a container image, with the two settings that decide who can deploy it and where it can reach. Works with Terraform and OpenTofu (>= 1.6), AWS provider >= 6.0, < 7.0.

auto_deployments_enabled turns every push into a deploy. Push a new image to the tag this service watches and App Runner takes it to production - no review, no approval, no pipeline stage in between. It is genuinely convenient, and it means the deployment gate is now "who can push to this ECR repository", which is usually a wider set of people and machines than "who can deploy". Off here, and deploys_on_push is an output so a policy test can assert on it.

Egress defaults to AWS's network, not yours. Without a VPC connector the service reaches the internet directly and cannot reach anything private - so a database in your VPC is unreachable - while a compromised dependency has an unfiltered path out. The connector fixes both at once, and the module creates one when you pass vpc.

Two roles, deliberately separate. access_role_arn is what App Runner assumes to pull the image; instance_role_arn is what the code runs as. Conflating them gives the running container permission to pull from every repository the puller can reach.

runtime_environment_variables are readable through DescribeService and in the console, so a precondition refuses any name matching password, secret, token, api_key, private_key or credential. environment_secrets takes an ARN resolved at start instead.

Smaller things: the health check defaults to HTTP with a real path, because a TCP check passes as soon as something is listening - including an application that cannot reach its database; and the example pins an image digest rather than a tag, since a tag can be moved under you.

Verification

Static validation runs tofu fmt, init, validate, tflint and checkov. This module has not yet had a live test, so it is published as statically validated with its live test pending and does not carry the live-tested mark.

Usage code & full reference need an account

The complete copy-paste usage, the full input/output reference, and operational notes are free with an account - shown here and bundled in the download. Sign in and this section fills in.

  • Usage

Related modules