Skip to content

ConfigRule ​

The ConfigRule resource allows you to manage AWS Config Rules which evaluate the configuration settings of your AWS resources.

Minimal Example ​

Create a simple ConfigRule that checks if EC2 instances have a specific tag:

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

const ec2TagRule = await AWS.Config.ConfigRule("ec2TagRule", {
  ConfigRuleName: "ec2-instance-tag-check",
  Description: "Check whether EC2 instances have a 'Project' tag",
  Source: {
    Owner: "AWS",
    SourceIdentifier: "EC2_INSTANCE_TAGS"
  },
  Scope: {
    ComplianceResourceTypes: ["AWS::EC2::Instance"]
  },
  MaximumExecutionFrequency: "Six_Hours"
});

Advanced Configuration ​

This example demonstrates how to set up a ConfigRule with an evaluation mode and custom input parameters:

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

const advancedRule = await AWS.Config.ConfigRule("advancedComplianceRule", {
  ConfigRuleName: "custom-compliance-rule",
  Description: "Custom compliance rule for S3 bucket encryption",
  Source: {
    Owner: "CUSTOM_LAMBDA",
    SourceIdentifier: "arn:aws:lambda:us-east-1:123456789012:function:customComplianceChecker"
  },
  Scope: {
    ComplianceResourceTypes: ["AWS::S3::Bucket"]
  },
  EvaluationModes: [
    {
      Mode: "MANUAL"
    }
  ],
  InputParameters: {
    encryptionStatus: "ENABLED"
  }
});

Compliance Monitoring ​

This example illustrates how to create a ConfigRule that checks for compliance against a specific IAM policy:

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

const iamPolicyComplianceRule = await AWS.Config.ConfigRule("iamPolicyComplianceRule", {
  ConfigRuleName: "iam-policy-compliance-check",
  Description: "Ensure IAM policies do not allow public access",
  Source: {
    Owner: "AWS",
    SourceIdentifier: "IAM_POLICY_COMPLIANCE"
  },
  Scope: {
    ComplianceResourceTypes: ["AWS::IAM::Policy"]
  },
  MaximumExecutionFrequency: "One_Hour"
});

Evaluating Resource Compliance ​

This example demonstrates a ConfigRule that evaluates compliance based on the presence of a specific tag in resources:

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

const tagComplianceRule = await AWS.Config.ConfigRule("tagComplianceRule", {
  ConfigRuleName: "required-tag-check",
  Description: "Checks that all resources have the 'Environment' tag",
  Source: {
    Owner: "AWS",
    SourceIdentifier: "RESOURCE_TAGGING"
  },
  Scope: {
    ComplianceResourceTypes: ["AWS::S3::Bucket", "AWS::EC2::Instance", "AWS::IAM::Role"]
  },
  InputParameters: {
    requiredTagKey: "Environment"
  }
});