pagerduty_service_integration

A service integration is an integration that belongs to a service.

Example Usage

resource "pagerduty_user" "example" {
  name  = "Earline Greenholt"
  email = "125.greenholt.earline@graham.name"
  teams = [pagerduty_team.example.id]
}

resource "pagerduty_escalation_policy" "foo" {
  name      = "Engineering Escalation Policy"
  num_loops = 2

  rule {
    escalation_delay_in_minutes = 10

    target {
      type = "user"
      id   = pagerduty_user.example.id
    }
  }
}

resource "pagerduty_service" "example" {
  name                    = "My Web App"
  auto_resolve_timeout    = 14400
  acknowledgement_timeout = 600
  escalation_policy       = pagerduty_escalation_policy.example.id
}

resource "pagerduty_service_integration" "example" {
  name    = "Generic API Service Integration"
  type    = "generic_events_api_inbound_integration"
  service = pagerduty_service.example.id
}

resource "pagerduty_service_integration" "apiv2" {
  name            = "API V2"
  type            = "events_api_v2_inbound_integration"
  service         = pagerduty_service.example.id
}

resource "pagerduty_service_integration" "email_x" {
  name              = "Email X"
  type              = "generic_email_inbound_integration"
  integration_email = "ecommerce@subdomain.pagerduty.com"
  service           = pagerduty_service.example.id
}

data "pagerduty_vendor" "datadog" {
  name = "Datadog"
}

resource "pagerduty_service_integration" "datadog" {
  name    = data.pagerduty_vendor.datadog.name
  service = pagerduty_service.example.id
  vendor  = data.pagerduty_vendor.datadog.id
}

data "pagerduty_vendor" "cloudwatch" {
  name = "Cloudwatch"
}

resource "pagerduty_service_integration" "cloudwatch" {
  name    = data.pagerduty_vendor.cloudwatch.name
  service = pagerduty_service.example.id
  vendor  = data.pagerduty_vendor.cloudwatch.id
}

data "pagerduty_vendor" "email" {
  name = "Email"
}

resource "pagerduty_service_integration" "email" {
  name    = data.pagerduty_vendor.email.name
  service = pagerduty_service.example.id
  vendor  = data.pagerduty_vendor.email.id

  integration_email       = "s1@your_account.pagerduty.com"
  email_incident_creation = "use_rules"
  email_filter_mode       = "and-rules-email"
  email_filter {
    body_mode        = "always"
    body_regex       = null
    from_email_mode  = "match"
    from_email_regex = "(@foo.test*)"
    subject_mode     = "match"
    subject_regex    = "(CRITICAL*)"
  }
  email_filter {
    body_mode        = "always"
    body_regex       = null
    from_email_mode  = "match"
    from_email_regex = "(@bar.com*)"
    subject_mode     = "match"
    subject_regex    = "(CRITICAL*)"
  }

  email_parser {
    action = "resolve"
    match_predicate {
      type = "any"
      predicate {
        matcher = "foo"
        part    = "subject"
        type    = "contains"
      }
      predicate {
        type = "not"
        predicate {
          matcher = "(bar*)"
          part    = "body"
          type    = "regex"
        }
      }
    }
    value_extractor {
      ends_before  = "end"
      part         = "subject"
      starts_after = "start"
      type         = "between"
      value_name   = "incident_key"
    }
    value_extractor {
      ends_before  = "end"
      part         = "subject"
      starts_after = "start"
      type         = "between"
      value_name   = "FieldName1"
    }
  }
}

Argument Reference

The following arguments are supported:

Attributes Reference

The following attributes are exported:

To configure an event, please use the integration_key in the following interpolation:

https://events.pagerduty.com/integration/${pagerduty_service_integration.slack.integration_key}/enqueue

Import

Services can be imported using their related service id and service integration id separated by a dot, e.g.

$ terraform import pagerduty_service_integration.main PLSSSSS.PLIIIII