naming-convention

Category Standards
Latest Version 0.1.0current

Terraform module for naming-convention on aws

Add to your Terraform configuration
module "naming_convention" {
  source  = "registry.patterneddesigns.ca/standardnat/naming-convention/aws"
  version = "0.1.0"

  # Required inputs
  environment = "..."
  project = "..."
}

Overview

The naming-convention module creates consistent, predictable resource names across your AWS infrastructure including:

  • Configurable naming patterns with environment, project, and region components
  • Automatic tag generation derived from naming inputs
  • Customizable separators for service-specific requirements
  • Validation to ensure names meet AWS resource constraints

Category: Standards Provider: AWS Latest Version: 2.0.0

Quick Start

module "naming" {
  source  = "registry.patterneddesigns.ca/standardnat/naming-convention/aws"
  version = "2.0.0"

  environment = "prod"
  project     = "myapp"
  region_code = "use1"
}

# Use the generated prefix
resource "aws_s3_bucket" "data" {
  bucket = "${module.naming.prefix}-data"
  tags   = module.naming.tags
}

Key Features

Consistent Resource Naming

Generate predictable names across all your AWS resources:

module "naming" {
  source  = "registry.patterneddesigns.ca/standardnat/naming-convention/aws"
  version = "2.0.0"

  environment = "prod"
  project     = "myapp"
  region_code = "use1"
}

# S3 Bucket: prod-myapp-use1-data
resource "aws_s3_bucket" "data" {
  bucket = "${module.naming.prefix}-data"
  tags   = module.naming.tags
}

# Lambda Function: prod-myapp-use1-processor
module "processor" {
  source  = "registry.patterneddesigns.ca/patterneddesigns/lambda-function/aws"
  version = "3.1.0"

  function_name = "${module.naming.prefix}-processor"
  # ...
}

Automatic Tag Generation

Derive consistent tags from your naming inputs:

module "naming" {
  source  = "registry.patterneddesigns.ca/standardnat/naming-convention/aws"
  version = "2.0.0"

  environment = "prod"
  project     = "myapp"

  tags = {
    CostCenter = "engineering"
    Owner      = "platform-team"
  }
}

# Tags include: Environment, Project, ManagedBy, plus custom tags
resource "aws_instance" "web" {
  tags = module.naming.tags
}

Multi-Environment Support

Deploy consistently across environments:

locals {
  environments = ["dev", "stg", "prod"]
}

module "naming" {
  for_each = toset(local.environments)

  source  = "registry.patterneddesigns.ca/standardnat/naming-convention/aws"
  version = "2.0.0"

  environment = each.key
  project     = "myapp"
  region_code = "use1"
}

resource "aws_s3_bucket" "data" {
  for_each = toset(local.environments)

  bucket = "${module.naming[each.key].prefix}-data"
  tags   = module.naming[each.key].tags
}

Documentation

Registry

View specification on Registry

Inputs

environment Required
string

Environment identifier for resource naming (e.g., dev, stg, prod, sbx, qa)

project Required
string

Project or application name for resource identification

Optional region code for multi-region deployments (e.g., use1, euw1, apse1)

string Default: -

Character used to separate name components (default: hyphen for maximum compatibility)

map(string)

Additional tags to merge with generated tags

Outputs

prefix

Generated naming prefix for resources (combines environment, project, and optional region_code)

tags

Standard tags derived from naming convention inputs

id

Unique identifier for the naming context