naming-convention
Terraform module for naming-convention on aws
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
- Inputs - All input parameters
- Outputs - Output values
- Examples - Usage examples
- Use Cases - Real-world scenarios
- Demonstrations - Step-by-step guides
Registry
Inputs
Environment identifier for resource naming (e.g., dev, stg, prod, sbx, qa)
Project or application name for resource identification
Optional region code for multi-region deployments (e.g., use1, euw1, apse1)
Character used to separate name components (default: hyphen for maximum compatibility)
Additional tags to merge with generated tags
Outputs
Generated naming prefix for resources (combines environment, project, and optional region_code)
Standard tags derived from naming convention inputs
Unique identifier for the naming context