# Copyright (c) 2012-2022, Mark Peek <mark@peek.org>
# All rights reserved.
#
# See LICENSE file for full license.
#
# *** Do not modify - this file is autogenerated ***
from . import AWSObject, AWSProperty, PropsDictType, Tags
from .validators import boolean, integer
from .validators.config import ONE_HOUR # noqa: F401
from .validators.config import SIX_HOURS # noqa: F401
from .validators.config import THREE_HOURS # noqa: F401
from .validators.config import TWELVE_HOURS # noqa: F401
from .validators.config import TWENTYFOUR_HOURS # noqa: F401
from .validators.config import validate_source_details
[docs]class AggregationAuthorization(AWSObject):
"""
`AggregationAuthorization <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-aggregationauthorization.html>`__
"""
resource_type = "AWS::Config::AggregationAuthorization"
props: PropsDictType = {
"AuthorizedAccountId": (str, True),
"AuthorizedAwsRegion": (str, True),
"Tags": (Tags, False),
}
[docs]class Compliance(AWSProperty):
"""
`Compliance <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-compliance.html>`__
"""
props: PropsDictType = {
"Type": (str, False),
}
[docs]class EvaluationModeConfiguration(AWSProperty):
"""
`EvaluationModeConfiguration <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-evaluationmodeconfiguration.html>`__
"""
props: PropsDictType = {
"Mode": (str, False),
}
[docs]class Scope(AWSProperty):
"""
`Scope <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-scope.html>`__
"""
props: PropsDictType = {
"ComplianceResourceId": (str, False),
"ComplianceResourceTypes": ([str], False),
"TagKey": (str, False),
"TagValue": (str, False),
}
[docs]class CustomPolicyDetails(AWSProperty):
"""
`CustomPolicyDetails <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-custompolicydetails.html>`__
"""
props: PropsDictType = {
"EnableDebugLogDelivery": (boolean, False),
"PolicyRuntime": (str, False),
"PolicyText": (str, False),
}
[docs]class SourceDetails(AWSProperty):
"""
`SourceDetails <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-sourcedetail.html>`__
"""
props: PropsDictType = {
"EventSource": (str, True),
"MaximumExecutionFrequency": (str, False),
"MessageType": (str, True),
}
[docs] def validate(self):
validate_source_details(self)
[docs]class Source(AWSProperty):
"""
`Source <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configrule-source.html>`__
"""
props: PropsDictType = {
"CustomPolicyDetails": (CustomPolicyDetails, False),
"Owner": (str, True),
"SourceDetails": ([SourceDetails], False),
"SourceIdentifier": (str, False),
}
[docs]class ConfigRule(AWSObject):
"""
`ConfigRule <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configrule.html>`__
"""
resource_type = "AWS::Config::ConfigRule"
props: PropsDictType = {
"Compliance": (Compliance, False),
"ConfigRuleName": (str, False),
"Description": (str, False),
"EvaluationModes": ([EvaluationModeConfiguration], False),
"InputParameters": (dict, False),
"MaximumExecutionFrequency": (str, False),
"Scope": (Scope, False),
"Source": (Source, True),
}
[docs]class AccountAggregationSources(AWSProperty):
"""
`AccountAggregationSources <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-accountaggregationsource.html>`__
"""
props: PropsDictType = {
"AccountIds": ([str], True),
"AllAwsRegions": (boolean, False),
"AwsRegions": ([str], False),
}
[docs]class OrganizationAggregationSource(AWSProperty):
"""
`OrganizationAggregationSource <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-organizationaggregationsource.html>`__
"""
props: PropsDictType = {
"AllAwsRegions": (boolean, False),
"AwsRegions": ([str], False),
"RoleArn": (str, True),
}
[docs]class ConfigurationAggregator(AWSObject):
"""
`ConfigurationAggregator <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationaggregator.html>`__
"""
resource_type = "AWS::Config::ConfigurationAggregator"
props: PropsDictType = {
"AccountAggregationSources": ([AccountAggregationSources], False),
"ConfigurationAggregatorName": (str, False),
"OrganizationAggregationSource": (OrganizationAggregationSource, False),
"Tags": (Tags, False),
}
[docs]class ExclusionByResourceTypes(AWSProperty):
"""
`ExclusionByResourceTypes <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-exclusionbyresourcetypes.html>`__
"""
props: PropsDictType = {
"ResourceTypes": ([str], True),
}
[docs]class RecordingStrategy(AWSProperty):
"""
`RecordingStrategy <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordingstrategy.html>`__
"""
props: PropsDictType = {
"UseOnly": (str, True),
}
[docs]class RecordingGroup(AWSProperty):
"""
`RecordingGroup <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html>`__
"""
props: PropsDictType = {
"AllSupported": (boolean, False),
"ExclusionByResourceTypes": (ExclusionByResourceTypes, False),
"IncludeGlobalResourceTypes": (boolean, False),
"RecordingStrategy": (RecordingStrategy, False),
"ResourceTypes": ([str], False),
}
[docs]class RecordingModeOverride(AWSProperty):
"""
`RecordingModeOverride <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordingmodeoverride.html>`__
"""
props: PropsDictType = {
"Description": (str, False),
"RecordingFrequency": (str, True),
"ResourceTypes": ([str], True),
}
[docs]class RecordingMode(AWSProperty):
"""
`RecordingMode <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordingmode.html>`__
"""
props: PropsDictType = {
"RecordingFrequency": (str, True),
"RecordingModeOverrides": ([RecordingModeOverride], False),
}
[docs]class ConfigurationRecorder(AWSObject):
"""
`ConfigurationRecorder <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationrecorder.html>`__
"""
resource_type = "AWS::Config::ConfigurationRecorder"
props: PropsDictType = {
"Name": (str, False),
"RecordingGroup": (RecordingGroup, False),
"RecordingMode": (RecordingMode, False),
"RoleARN": (str, True),
}
[docs]class TemplateSSMDocumentDetails(AWSProperty):
"""
`TemplateSSMDocumentDetails <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-conformancepack-templatessmdocumentdetails.html>`__
"""
props: PropsDictType = {
"DocumentName": (str, False),
"DocumentVersion": (str, False),
}
[docs]class ConfigSnapshotDeliveryProperties(AWSProperty):
"""
`ConfigSnapshotDeliveryProperties <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-deliverychannel-configsnapshotdeliveryproperties.html>`__
"""
props: PropsDictType = {
"DeliveryFrequency": (str, False),
}
[docs]class DeliveryChannel(AWSObject):
"""
`DeliveryChannel <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-deliverychannel.html>`__
"""
resource_type = "AWS::Config::DeliveryChannel"
props: PropsDictType = {
"ConfigSnapshotDeliveryProperties": (ConfigSnapshotDeliveryProperties, False),
"Name": (str, False),
"S3BucketName": (str, True),
"S3KeyPrefix": (str, False),
"S3KmsKeyArn": (str, False),
"SnsTopicARN": (str, False),
}
[docs]class OrganizationConfigRule(AWSObject):
"""
`OrganizationConfigRule <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-organizationconfigrule.html>`__
"""
resource_type = "AWS::Config::OrganizationConfigRule"
props: PropsDictType = {
"ExcludedAccounts": ([str], False),
"OrganizationConfigRuleName": (str, True),
"OrganizationCustomPolicyRuleMetadata": (
OrganizationCustomPolicyRuleMetadata,
False,
),
"OrganizationCustomRuleMetadata": (OrganizationCustomRuleMetadata, False),
"OrganizationManagedRuleMetadata": (OrganizationManagedRuleMetadata, False),
}
[docs]class SsmControls(AWSProperty):
"""
`SsmControls <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-ssmcontrols.html>`__
"""
props: PropsDictType = {
"ConcurrentExecutionRatePercentage": (integer, False),
"ErrorPercentage": (integer, False),
}
[docs]class ExecutionControls(AWSProperty):
"""
`ExecutionControls <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-executioncontrols.html>`__
"""
props: PropsDictType = {
"SsmControls": (SsmControls, False),
}
[docs]class StoredQuery(AWSObject):
"""
`StoredQuery <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html>`__
"""
resource_type = "AWS::Config::StoredQuery"
props: PropsDictType = {
"QueryDescription": (str, False),
"QueryExpression": (str, True),
"QueryName": (str, True),
"Tags": (Tags, False),
}
[docs]class ResourceValue(AWSProperty):
"""
`ResourceValue <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-resourcevalue.html>`__
"""
props: PropsDictType = {
"Value": (str, False),
}
[docs]class StaticValue(AWSProperty):
"""
`StaticValue <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-remediationconfiguration-staticvalue.html>`__
"""
props: PropsDictType = {
"Values": ([str], False),
}