generator / tf_examples.py
Gia Bao
Initial deploy: XAI Terraform Generator
da4f611
Raw
History Blame Contribute Delete
20.2 kB
"""
Terraform Resource Example Snippets
====================================
Curated minimal working examples for top AWS resources.
Sourced from Terraform Registry docs — NOT from IaC-Eval dataset.
These help cheap LLMs understand correct usage patterns.
"""
# Minimal HCL snippets showing correct usage patterns
# Key: resource_type -> example code snippet
RESOURCE_EXAMPLES = {
"aws_instance": '''resource "aws_instance" "example" {
ami = data.aws_ami.ubuntu.id
instance_type = "t3.micro"
subnet_id = aws_subnet.example.id
vpc_security_group_ids = [aws_security_group.example.id]
tags = { Name = "example" }
}''',
"aws_vpc": '''resource "aws_vpc" "example" {
cidr_block = "10.0.0.0/16"
enable_dns_support = true
enable_dns_hostnames = true
tags = { Name = "example" }
}''',
"aws_subnet": '''resource "aws_subnet" "example" {
vpc_id = aws_vpc.example.id
cidr_block = "10.0.1.0/24"
availability_zone = "us-east-1a"
tags = { Name = "example" }
}''',
"aws_security_group": '''resource "aws_security_group" "example" {
name = "example"
description = "Example security group"
vpc_id = aws_vpc.example.id
ingress {
from_port = 443
to_port = 443
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}''',
"aws_s3_bucket": '''resource "aws_s3_bucket" "example" {
bucket = "my-example-bucket"
tags = { Name = "example" }
}''',
"aws_s3_bucket_versioning": '''resource "aws_s3_bucket_versioning" "example" {
bucket = aws_s3_bucket.example.id
versioning_configuration {
status = "Enabled"
}
}''',
"aws_s3_bucket_acl": '''resource "aws_s3_bucket_acl" "example" {
bucket = aws_s3_bucket.example.id
acl = "private"
depends_on = [aws_s3_bucket_ownership_controls.example]
}''',
"aws_s3_bucket_ownership_controls": '''resource "aws_s3_bucket_ownership_controls" "example" {
bucket = aws_s3_bucket.example.id
rule {
object_ownership = "BucketOwnerPreferred"
}
}''',
"aws_iam_role": '''resource "aws_iam_role" "example" {
name = "example-role"
assume_role_policy = data.aws_iam_policy_document.assume.json
}''',
"aws_iam_policy_document": '''data "aws_iam_policy_document" "assume" {
statement {
actions = ["sts:AssumeRole"]
principals {
type = "Service"
identifiers = ["ec2.amazonaws.com"]
}
}
}''',
"aws_iam_role_policy_attachment": '''resource "aws_iam_role_policy_attachment" "example" {
role = aws_iam_role.example.name
policy_arn = "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess"
}''',
"aws_iam_instance_profile": '''resource "aws_iam_instance_profile" "example" {
name = "example-profile"
role = aws_iam_role.example.name
}''',
"aws_iam_policy": '''resource "aws_iam_policy" "example" {
name = "example-policy"
policy = data.aws_iam_policy_document.example.json
}''',
"aws_db_instance": '''resource "aws_db_instance" "example" {
identifier = "example-db"
engine = "postgres"
engine_version = "15"
instance_class = "db.t3.micro"
allocated_storage = 20
storage_type = "gp3"
storage_encrypted = true
username = "admin"
password = var.db_password
db_subnet_group_name = aws_db_subnet_group.example.name
vpc_security_group_ids = [aws_security_group.db.id]
multi_az = false
publicly_accessible = false
skip_final_snapshot = true
backup_retention_period = 7
}''',
"aws_db_subnet_group": '''resource "aws_db_subnet_group" "example" {
name = "example"
subnet_ids = [aws_subnet.a.id, aws_subnet.b.id]
tags = { Name = "example" }
}''',
"aws_lambda_function": '''resource "aws_lambda_function" "example" {
function_name = "example-function"
role = aws_iam_role.example.arn
handler = "index.handler"
runtime = "nodejs18.x"
filename = data.archive_file.example.output_path
source_code_hash = data.archive_file.example.output_base64sha256
}''',
"archive_file": '''data "archive_file" "example" {
type = "zip"
source_file = "${path.module}/lambda/index.js"
output_path = "${path.module}/lambda.zip"
}''',
"aws_lambda_permission": '''resource "aws_lambda_permission" "example" {
statement_id = "AllowAPIGatewayInvoke"
action = "lambda:InvokeFunction"
function_name = aws_lambda_function.example.function_name
principal = "apigateway.amazonaws.com"
}''',
"aws_route53_zone": '''resource "aws_route53_zone" "example" {
name = "example.com"
comment = "Example hosted zone"
tags = { Name = "example" }
}
resource "aws_route53_zone" "private" {
name = "private.example.com"
vpc {
vpc_id = aws_vpc.example.id
}
}''',
"aws_route53_record": '''resource "aws_route53_record" "example" {
zone_id = aws_route53_zone.example.zone_id
name = "www.example.com"
type = "A"
ttl = 300
records = [aws_instance.example.public_ip]
}
resource "aws_route53_record" "weighted" {
zone_id = aws_route53_zone.example.zone_id
name = "api.example.com"
type = "A"
ttl = 60
set_identifier = "primary"
weighted_routing_policy {
weight = 70
}
records = ["1.2.3.4"]
}''',
"aws_route53_query_log": '''resource "aws_route53_query_log" "example" {
cloudwatch_log_group_arn = aws_cloudwatch_log_group.example.arn
zone_id = aws_route53_zone.example.zone_id
}''',
"aws_route53_zone_association": '''resource "aws_route53_zone_association" "example" {
zone_id = aws_route53_zone.example.zone_id
vpc_id = aws_vpc.example.id
}''',
"aws_route53_vpc_association_authorization": '''resource "aws_route53_vpc_association_authorization" "example" {
zone_id = aws_route53_zone.example.zone_id
vpc_id = aws_vpc.example.id
}''',
"aws_lb": '''resource "aws_lb" "example" {
name = "example-lb"
internal = false
load_balancer_type = "application"
security_groups = [aws_security_group.example.id]
subnets = [aws_subnet.a.id, aws_subnet.b.id]
}''',
"aws_lb_target_group": '''resource "aws_lb_target_group" "example" {
name = "example-tg"
port = 80
protocol = "HTTP"
vpc_id = aws_vpc.example.id
}''',
"aws_lb_listener": '''resource "aws_lb_listener" "example" {
load_balancer_arn = aws_lb.example.arn
port = 80
protocol = "HTTP"
default_action {
type = "forward"
target_group_arn = aws_lb_target_group.example.arn
}
}''',
"aws_lb_target_group_attachment": '''resource "aws_lb_target_group_attachment" "example" {
target_group_arn = aws_lb_target_group.example.arn
target_id = aws_instance.example.id
port = 80
}''',
"aws_elb": '''resource "aws_elb" "example" {
name = "example-elb"
availability_zones = ["us-east-1a"]
listener {
instance_port = 80
instance_protocol = "http"
lb_port = 80
lb_protocol = "http"
}
health_check {
target = "HTTP:80/"
interval = 30
timeout = 5
healthy_threshold = 2
unhealthy_threshold = 2
}
}''',
"aws_eks_cluster": '''resource "aws_eks_cluster" "example" {
name = "example-cluster"
role_arn = aws_iam_role.example.arn
vpc_config {
subnet_ids = [aws_subnet.a.id, aws_subnet.b.id]
}
}''',
"aws_elastic_beanstalk_application": '''resource "aws_elastic_beanstalk_application" "example" {
name = "example-app"
description = "Example Elastic Beanstalk Application"
}''',
"aws_elastic_beanstalk_environment": '''resource "aws_elastic_beanstalk_environment" "example" {
name = "example-env"
application = aws_elastic_beanstalk_application.example.name
solution_stack_name = "64bit Amazon Linux 2 v5.8.0 running Node.js 18"
}''',
"aws_cloudwatch_log_group": '''resource "aws_cloudwatch_log_group" "example" {
name = "/aws/example"
retention_in_days = 14
}''',
"aws_cloudwatch_log_resource_policy": '''resource "aws_cloudwatch_log_resource_policy" "example" {
policy_document = data.aws_iam_policy_document.example.json
policy_name = "example-policy"
}''',
"aws_cloudfront_distribution": '''resource "aws_cloudfront_distribution" "example" {
origin {
domain_name = aws_s3_bucket.example.bucket_regional_domain_name
origin_id = "S3Origin"
origin_access_control_id = aws_cloudfront_origin_access_control.example.id
}
enabled = true
default_root_object = "index.html"
default_cache_behavior {
allowed_methods = ["GET", "HEAD"]
cached_methods = ["GET", "HEAD"]
target_origin_id = "S3Origin"
viewer_protocol_policy = "redirect-to-https"
forwarded_values {
query_string = false
cookies { forward = "none" }
}
}
restrictions {
geo_restriction { restriction_type = "none" }
}
viewer_certificate {
cloudfront_default_certificate = true
}
}''',
"aws_cloudfront_origin_access_control": '''resource "aws_cloudfront_origin_access_control" "example" {
name = "example-oac"
origin_access_control_origin_type = "s3"
signing_behavior = "always"
signing_protocol = "sigv4"
}''',
"aws_dynamodb_table": '''resource "aws_dynamodb_table" "example" {
name = "example-table"
billing_mode = "PAY_PER_REQUEST"
hash_key = "id"
attribute {
name = "id"
type = "S"
}
}''',
"aws_kinesis_stream": '''resource "aws_kinesis_stream" "example" {
name = "example-stream"
shard_count = 1
retention_period = 24
}''',
"aws_kinesis_stream_consumer": '''resource "aws_kinesis_stream_consumer" "example" {
name = "example-consumer"
stream_arn = aws_kinesis_stream.example.arn
}''',
"aws_kinesis_firehose_delivery_stream": '''resource "aws_kinesis_firehose_delivery_stream" "s3_example" {
name = "example-stream"
destination = "extended_s3"
extended_s3_configuration {
role_arn = aws_iam_role.example.arn
bucket_arn = aws_s3_bucket.example.arn
}
}
resource "aws_kinesis_firehose_delivery_stream" "es_example" {
name = "es-stream"
destination = "elasticsearch"
s3_configuration {
role_arn = aws_iam_role.example.arn
bucket_arn = aws_s3_bucket.example.arn
}
elasticsearch_configuration {
domain_arn = aws_elasticsearch_domain.example.arn
index_name = "example"
role_arn = aws_iam_role.example.arn
}
}''',
"aws_codebuild_project": '''resource "aws_codebuild_project" "example" {
name = "example-project"
service_role = aws_iam_role.example.arn
artifacts { type = "NO_ARTIFACTS" }
environment {
compute_type = "BUILD_GENERAL1_SMALL"
image = "aws/codebuild/standard:5.0"
type = "LINUX_CONTAINER"
}
source {
type = "GITHUB"
location = "https://github.com/example/repo.git"
}
}''',
"aws_internet_gateway": '''resource "aws_internet_gateway" "example" {
vpc_id = aws_vpc.example.id
tags = { Name = "example" }
}''',
"aws_route_table": '''resource "aws_route_table" "example" {
vpc_id = aws_vpc.example.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.example.id
}
tags = { Name = "example" }
}''',
"aws_route_table_association": '''resource "aws_route_table_association" "example" {
subnet_id = aws_subnet.example.id
route_table_id = aws_route_table.example.id
}''',
"aws_elasticache_cluster": '''resource "aws_elasticache_cluster" "example" {
cluster_id = "example-cluster"
engine = "redis"
node_type = "cache.t3.micro"
num_cache_nodes = 1
port = 6379
}''',
"aws_ami": '''data "aws_ami" "example" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["amzn2-ami-hvm-*-x86_64-gp2"]
}
}''',
"aws_availability_zones": '''data "aws_availability_zones" "available" {
state = "available"
filter {
name = "opt-in-status"
values = ["opt-in-not-required"]
}
}''',
"aws_lex_intent": '''resource "aws_lex_intent" "example" {
name = "ExampleIntent"
fulfillment_activity {
type = "ReturnIntent"
}
conclusion_statement {
message {
content = "Your order has been placed."
content_type = "PlainText"
}
}
}''',
"aws_redshift_cluster": '''resource "aws_redshift_cluster" "example" {
cluster_identifier = "example-cluster"
database_name = "exampledb"
master_username = "admin"
master_password = "Password123!"
node_type = "dc2.large"
cluster_type = "single-node"
skip_final_snapshot = true
}''',
"aws_sns_topic": '''resource "aws_sns_topic" "example" {
name = "example-topic"
display_name = "Example Topic"
tags = { Name = "example" }
}''',
"aws_sqs_queue": '''resource "aws_sqs_queue" "example" {
name = "example-queue"
delay_seconds = 0
max_message_size = 262144
message_retention_seconds = 86400
visibility_timeout_seconds = 30
tags = { Name = "example" }
}''',
"aws_cloudwatch_event_rule": '''resource "aws_cloudwatch_event_rule" "example" {
name = "example-rule"
schedule_expression = "rate(1 hour)"
}''',
"aws_cloudwatch_event_target": '''resource "aws_cloudwatch_event_target" "example" {
rule = aws_cloudwatch_event_rule.example.name
target_id = "ExampleTarget"
arn = aws_lambda_function.example.arn
}''',
"aws_api_gateway_rest_api": '''resource "aws_api_gateway_rest_api" "example" {
name = "example-api"
description = "Example REST API"
}''',
"aws_api_gateway_resource": '''resource "aws_api_gateway_resource" "example" {
rest_api_id = aws_api_gateway_rest_api.example.id
parent_id = aws_api_gateway_rest_api.example.root_resource_id
path_part = "example"
}''',
"aws_api_gateway_method": '''resource "aws_api_gateway_method" "example" {
rest_api_id = aws_api_gateway_rest_api.example.id
resource_id = aws_api_gateway_resource.example.id
http_method = "GET"
authorization = "NONE"
}''',
"aws_api_gateway_integration": '''resource "aws_api_gateway_integration" "example" {
rest_api_id = aws_api_gateway_rest_api.example.id
resource_id = aws_api_gateway_resource.example.id
http_method = aws_api_gateway_method.example.http_method
integration_http_method = "POST"
type = "AWS_PROXY"
uri = aws_lambda_function.example.invoke_arn
}''',
"aws_efs_file_system": '''resource "aws_efs_file_system" "example" {
creation_token = "example-efs"
tags = { Name = "example" }
}''',
"aws_efs_mount_target": '''resource "aws_efs_mount_target" "example" {
file_system_id = aws_efs_file_system.example.id
subnet_id = aws_subnet.example.id
security_groups = [aws_security_group.example.id]
}''',
"aws_msk_cluster": '''resource "aws_msk_cluster" "example" {
cluster_name = "example"
kafka_version = "3.5.1"
number_of_broker_nodes = 3
broker_node_group_info {
instance_type = "kafka.m5.large"
client_subnets = [aws_subnet.a.id, aws_subnet.b.id, aws_subnet.c.id]
storage_info {
ebs_storage_info {
volume_size = 100
}
}
security_groups = [aws_security_group.example.id]
}
}''',
"aws_msk_serverless_cluster": '''resource "aws_msk_serverless_cluster" "example" {
cluster_name = "example"
vpc_config {
subnet_ids = [aws_subnet.a.id, aws_subnet.b.id]
security_group_ids = [aws_security_group.example.id]
}
client_authentication {
sasl {
iam { enabled = true }
}
}
}''',
"aws_backup_vault": '''resource "aws_backup_vault" "example" {
name = "example-backup-vault"
kms_key_arn = aws_kms_key.example.arn
tags = { Name = "example" }
}''',
"aws_backup_plan": '''resource "aws_backup_plan" "example" {
name = "example-plan"
rule {
rule_name = "example-rule"
target_vault_name = aws_backup_vault.example.name
schedule = "cron(0 12 * * ? *)"
}
}''',
"aws_backup_selection": '''resource "aws_backup_selection" "example" {
iam_role_arn = aws_iam_role.example.arn
name = "example-selection"
plan_id = aws_backup_plan.example.id
resources = [aws_instance.example.arn]
}''',
"aws_kinesis_analytics_application": '''resource "aws_kinesis_analytics_application" "example" {
name = "example-application"
inputs {
name_prefix = "example"
schema {
record_columns {
name = "example"
sql_type = "VARCHAR(64)"
}
record_format {
mapping_parameters {
json {
record_row_path = "$"
}
}
}
}
kinesis_stream {
resource_arn = aws_kinesis_stream.example.arn
role_arn = aws_iam_role.example.arn
}
}
}''',
"aws_kinesisanalyticsv2_application": '''resource "aws_kinesisanalyticsv2_application" "example" {
name = "example-application"
runtime_environment = "FLINK-1_18"
service_execution_role = aws_iam_role.example.arn
}''',
"aws_chime_voice_connector": '''resource "aws_chime_voice_connector" "example" {
name = "example-vc"
require_encryption = true
}''',
"aws_chime_voice_connector_streaming": '''resource "aws_chime_voice_connector_streaming" "example" {
voice_connector_id = aws_chime_voice_connector.example.id
disabled = false
data_retention = 7
streaming_notification_targets = ["SQS"]
}''',
"aws_redshift_subnet_group": '''resource "aws_redshift_subnet_group" "example" {
name = "example"
subnet_ids = [aws_subnet.a.id, aws_subnet.b.id]
}''',
"aws_redshift_endpoint_access": '''resource "aws_redshift_endpoint_access" "example" {
endpoint_name = "example"
subnet_group_name = aws_redshift_subnet_group.example.name
cluster_identifier = aws_redshift_cluster.example.cluster_identifier
}''',
"aws_redshift_event_subscription": '''resource "aws_redshift_event_subscription" "example" {
name = "example"
sns_topic_arn = aws_sns_topic.example.arn
source_type = "cluster"
source_ids = [aws_redshift_cluster.example.id]
event_categories = ["configuration", "management"]
}''',
"aws_redshift_parameter_group": '''resource "aws_redshift_parameter_group" "example" {
name = "example"
family = "redshift-1.0"
}''',
"aws_s3_bucket_request_payment_configuration": '''resource "aws_s3_bucket_request_payment_configuration" "example" {
bucket = aws_s3_bucket.example.id
payer = "Requester"
}''',
}
def get_examples_for_resources(resource_types: list[str]) -> str:
"""Return formatted example snippets for given resource types."""
# Merge hand-curated and auto-generated examples
try:
from tf_examples_generated import GENERATED_EXAMPLES
except ImportError:
GENERATED_EXAMPLES = {}
snippets = []
for rt in resource_types:
if rt in RESOURCE_EXAMPLES:
snippets.append(f"# Example: {rt}\n{RESOURCE_EXAMPLES[rt]}")
elif rt in GENERATED_EXAMPLES:
snippets.append(f"# Example: {rt}\n{GENERATED_EXAMPLES[rt]}")
if not snippets:
return ""
return "Reference examples (adapt names and values to the request):\n\n" + "\n\n".join(snippets)
if __name__ == "__main__":
test = ["aws_instance", "aws_vpc", "aws_subnet", "aws_security_group"]
print(get_examples_for_resources(test))
print(f"\nTotal examples: {len(RESOURCE_EXAMPLES)}")