Skip to content

Rule ​

The Rule resource lets you manage AWS WAFRegional Rules to control and filter web traffic to your applications.

Minimal Example ​

Create a basic WAFRegional Rule with required properties, including a metric name and a name.

ts
import AWS from "alchemy/aws/control";

const basicRule = await AWS.WAFRegional.Rule("basicRule", {
  Name: "BasicRule",
  MetricName: "BasicRuleMetric",
  Predicates: [] // No predicates defined
});

Advanced Configuration ​

Configure a WAFRegional Rule with predicates to filter specific traffic patterns.

ts
import AWS from "alchemy/aws/control";

const advancedRule = await AWS.WAFRegional.Rule("advancedRule", {
  Name: "AdvancedRule",
  MetricName: "AdvancedRuleMetric",
  Predicates: [
    {
      DataId: "exampleDataId",
      Negated: false,
      Type: "IPMatch"
    },
    {
      DataId: "anotherDataId",
      Negated: true,
      Type: "RegexMatch"
    }
  ]
});

Adoption of Existing Resources ​

Create a WAFRegional Rule that adopts an existing resource instead of failing if it already exists.

ts
import AWS from "alchemy/aws/control";

const existingRule = await AWS.WAFRegional.Rule("existingRule", {
  Name: "ExistingRule",
  MetricName: "ExistingRuleMetric",
  adopt: true // Adopt existing resource
});

Rule with Multiple Predicates ​

Define a WAFRegional Rule with multiple predicates to enforce complex filtering logic.

ts
import AWS from "alchemy/aws/control";

const complexRule = await AWS.WAFRegional.Rule("complexRule", {
  Name: "ComplexRule",
  MetricName: "ComplexRuleMetric",
  Predicates: [
    {
      DataId: "ipSetDataId",
      Negated: false,
      Type: "IPMatch"
    },
    {
      DataId: "sqlInjectionMatchSetId",
      Negated: false,
      Type: "SqlInjectionMatch"
    },
    {
      DataId: "xssMatchSetId",
      Negated: true,
      Type: "XssMatch"
    }
  ]
});