Skip to content

RuleGroup ​

The RuleGroup resource allows you to manage AWS NetworkFirewall RuleGroups for creating and applying firewall rules to your network traffic.

Minimal Example ​

Create a basic RuleGroup with required properties and one optional description.

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

const basicRuleGroup = await AWS.NetworkFirewall.RuleGroup("basicRuleGroup", {
  Type: "STATEFUL",
  Capacity: 100,
  RuleGroupName: "BasicRuleGroup",
  Description: "A simple stateful rule group for basic traffic filtering."
});

Advanced Configuration ​

Configure a RuleGroup with detailed rules and tags for better management.

ts
const advancedRuleGroup = await AWS.NetworkFirewall.RuleGroup("advancedRuleGroup", {
  Type: "STATEFUL",
  Capacity: 200,
  RuleGroupName: "AdvancedRuleGroup",
  RuleGroup: {
    RulesSource: {
      RulesString: `
        rule1: {
          action: "PASS",
          protocol: "TCP",
          destination: {
            addresses: ["192.168.1.0/24"],
            ports: ["80", "443"]
          }
        }
      `
    }
  },
  Tags: [
    { Key: "Environment", Value: "Production" },
    { Key: "Department", Value: "IT" }
  ]
});

Custom Firewall Rules ​

Demonstrate how to create a RuleGroup with custom firewall rules that include complex conditions.

ts
const customRulesGroup = await AWS.NetworkFirewall.RuleGroup("customRulesGroup", {
  Type: "STATEFUL",
  Capacity: 150,
  RuleGroupName: "CustomRulesGroup",
  RuleGroup: {
    RulesSource: {
      RulesString: `
        rule2: {
          action: "DROP",
          protocol: "UDP",
          source: {
            addresses: ["10.0.0.0/16"],
            ports: ["53"]
          },
          destination: {
            addresses: ["0.0.0.0/0"],
            ports: ["53"]
          }
        }
      `
    }
  }
});

Adoption of Existing RuleGroups ​

Create a new RuleGroup and adopt an existing one if it already exists.

ts
const adoptRuleGroup = await AWS.NetworkFirewall.RuleGroup("adoptRuleGroup", {
  Type: "STATELESS",
  Capacity: 100,
  RuleGroupName: "AdoptedRuleGroup",
  adopt: true
});