{ "$schema": "https://json-structure.org/meta/core/v0/#", "$id": "https://raw.githubusercontent.com/api-evangelist/amazon-config/refs/heads/main/json-structure/amazon-config-rule-structure.json", "name": "AWS Config Rule", "description": "Schema for an AWS Config rule resource, representing a compliance rule that evaluates whether AWS resources conform to desired configurations.", "type": "object", "properties": { "ConfigRuleName": { "type": "string", "description": "The name that you assign to the AWS Config rule.", "pattern": "^[a-zA-Z0-9-_]+$", "minLength": 1, "maxLength": 128 }, "ConfigRuleArn": { "type": "string", "description": "The ARN of the AWS Config rule.", "pattern": "^arn:aws:config:[a-z0-9-]+:[0-9]{12}:config-rule/.+" }, "ConfigRuleId": { "type": "string", "description": "The ID of the AWS Config rule." }, "Description": { "type": "string", "description": "The description that you provide for the AWS Config rule.", "maxLength": 256 }, "Scope": { "type": "object", "description": "Defines which resources trigger an evaluation for the rule.", "properties": { "ComplianceResourceTypes": { "type": "array", "description": "The resource types of only those AWS resources that you want to trigger an evaluation.", "items": { "type": "string" }, "maxItems": 100 }, "TagKey": { "type": "string", "description": "The tag key that is applied to only those AWS resources that you want to trigger an evaluation.", "maxLength": 128 }, "TagValue": { "type": "string", "description": "The tag value applied to only those AWS resources that you want to trigger an evaluation.", "maxLength": 256 }, "ComplianceResourceId": { "type": "string", "description": "The ID of the only AWS resource that you want to trigger an evaluation.", "maxLength": 256 } } }, "Source": { "type": "object", "description": "Provides the rule owner, rule identifier, and notifications that cause the function to evaluate your AWS resources.", "properties": { "Owner": { "type": "string", "description": "Indicates whether AWS or the customer owns and manages the AWS Config rule.", "enum": [ "CUSTOM_LAMBDA", "AWS", "CUSTOM_POLICY" ] }, "SourceIdentifier": { "type": "string", "description": "For AWS managed rules, a predefined identifier. For custom rules, the ARN of the Lambda function." }, "SourceDetails": { "type": "array", "description": "Provides the source and type of the event that causes AWS Config to evaluate your resources.", "items": { "type": "object", "properties": { "EventSource": { "type": "string", "enum": [ "aws.config" ] }, "MessageType": { "type": "string", "enum": [ "ConfigurationItemChangeNotification", "ConfigurationSnapshotDeliveryCompleted", "ScheduledNotification", "OversizedConfigurationItemChangeNotification" ] }, "MaximumExecutionFrequency": { "type": "string", "enum": [ "One_Hour", "Three_Hours", "Six_Hours", "Twelve_Hours", "TwentyFour_Hours" ] } } } } }, "required": [ "Owner", "SourceIdentifier" ] }, "InputParameters": { "type": "string", "description": "A string, in JSON format, that is passed to the AWS Config rule Lambda function.", "maxLength": 1024 }, "MaximumExecutionFrequency": { "type": "string", "description": "The maximum frequency with which AWS Config runs evaluations for a rule.", "enum": [ "One_Hour", "Three_Hours", "Six_Hours", "Twelve_Hours", "TwentyFour_Hours" ] }, "ConfigRuleState": { "type": "string", "description": "Indicates whether the AWS Config rule is active or is currently being deleted.", "enum": [ "ACTIVE", "DELETING", "DELETING_RESULTS", "EVALUATING" ] } }, "required": [ "ConfigRuleName", "Source" ] }