Create reusable infrastructure components with Terraform modules for consistency and DRY code.
Code Snippet
# modules/api-gateway/main.tf
variable "name" {
type = string
}
variable "lambda_arn" {
type = string
}
resource "aws_apigatewayv2_api" "this" {
name = var.name
protocol_type = "HTTP"
}
resource "aws_apigatewayv2_integration" "this" {
api_id = aws_apigatewayv2_api.this.id
integration_type = "AWS_PROXY"
integration_uri = var.lambda_arn
}
output "api_endpoint" {
value = aws_apigatewayv2_api.this.api_endpoint
}
# Usage in main.tf
module "user_api" {
source = "./modules/api-gateway"
name = "user-api"
lambda_arn = aws_lambda_function.users.arn
}
Why This Helps
- Consistent infrastructure across environments
- Reduces code duplication by 70%+
- Easier to maintain and update
How to Test
- terraform plan to verify changes
- Deploy to staging environment first
When to Use
Any repeated infrastructure pattern. API gateways, databases, networking, etc.
Performance/Security Notes
Version your modules. Use terraform-docs to generate documentation automatically.
References
Try this tip in your next project and share your results in the comments!
Discover more from Byte Architect
Subscribe to get the latest posts sent to your email.