File tree Expand file tree Collapse file tree 4 files changed +90
-0
lines changed
Expand file tree Collapse file tree 4 files changed +90
-0
lines changed Original file line number Diff line number Diff line change 1+ name : Terraform Example
2+
3+ on :
4+ push :
5+ branches : [main]
6+ pull_request :
7+ branches : [main]
8+
9+ jobs :
10+ validate :
11+ runs-on : ubuntu-latest
12+ steps :
13+ - uses : actions/checkout@v4
14+ - name : Setup Terraform
15+ uses : hashicorp/setup-terraform@v3
16+ with :
17+ terraform_version : 1.7.5
18+ - name : Terraform Init (example)
19+ run : terraform -chdir=terraform-example init -backend=false
20+ - name : Terraform Validate (example)
21+ run : terraform -chdir=terraform-example validate
22+ - name : Setup TFLint
23+ uses : terraform-linters/setup-tflint@v4
24+ - name : TFLint (core rules only)
25+ run : |
26+ tflint --init || true
27+ tflint -c terraform-example/.tflint.hcl terraform-example
Original file line number Diff line number Diff line change 1+ { "Modules" : [{ "Key" : " " , "Source" : " " , "Dir" : " ." }] }
Original file line number Diff line number Diff line change 1+ plugin "terraform" {
2+ enabled = true
3+ }
4+
5+ # Keep linting minimal for example; no cloud plugins required
6+ rule "terraform_unused_declarations" { enabled = true }
7+ rule "terraform_comment_syntax" { enabled = true }
8+ rule "terraform_deprecated_index" { enabled = true }
9+
Original file line number Diff line number Diff line change 1+ terraform {
2+ required_version = " >= 1.3.0"
3+ required_providers {
4+ logstruct = {
5+ source = " DocSpring/logstruct"
6+ version = " >= 0.0.4"
7+ }
8+ aws = {
9+ source = " hashicorp/aws"
10+ version = " >= 5.0"
11+ }
12+ }
13+ }
14+
15+ # Validate allowed events for a canonical source
16+ data "logstruct_source" "mailer" {
17+ source = " mailer"
18+ }
19+
20+ variable "event" {
21+ type = string
22+ default = " delivered"
23+ validation {
24+ condition = contains (keys (data. logstruct_source . mailer . events ), var. event )
25+ error_message = " Invalid event for source=mailer"
26+ }
27+ }
28+
29+ # Compile exact CloudWatch pattern (optional; module also compiles internally)
30+ data "logstruct_pattern" "email" {
31+ source = " mailer"
32+ event = var. event
33+ }
34+
35+ # Example module usage: metric filter
36+ module "email_delivered_metric" {
37+ # Use local relative path for CI/demo; switch to Registry in real usage:
38+ # source = "DocSpring/logstruct/aws//modules/metric-filter"
39+ source = " ../terraform-aws-logstruct/modules/metric-filter"
40+
41+ name = " Email Delivered Count"
42+ log_group_name = var. log_group_name
43+ log_source = " mailer"
44+ log_event = var. event
45+ namespace = var. namespace
46+ }
47+
48+ variable "log_group_name" { type = string }
49+ variable "namespace" { type = string }
50+
51+ output "compiled_pattern" {
52+ value = data. logstruct_pattern . email . pattern
53+ }
You can’t perform that action at this time.
0 commit comments