from c7n.filters import ( Filter, FilterRegistry, FilterValidationError, DefaultVpcBase, MetricsFilter, ValueFilter) import c7n.filters.vpc as net_filters from c7n import tags from c7n.manager import resources from c7n.query import QueryResourceManager, DescribeSource, ConfigSource from c7n.utils import ( local_session, chunks, type_schema, get_retry, set_annotation) from c7n.resources.shield import IsShieldProtected, SetShieldProtection log = logging.getLogger('custodian.app-elb') filters = FilterRegistry('app-elb.filters') actions = ActionRegistry('app-elb.actions') filters.register('tag-count', tags.TagCountFilter) filters.register('marked-for-op', tags.TagActionFilter) @resources.register('app-elb') class AppELB(QueryResourceManager): """Resource manager for v2 ELBs (AKA ALBs). """ class resource_type(object): service = 'elbv2' type = 'loadbalancer/app'
class Snapshot(QueryResourceManager): resource_type = "aws.ec2.snapshot" filter_registry = FilterRegistry('ebs-snapshot.filters') action_registry = ActionRegistry('ebs-snapshot.actions')
FilterRegistry, Filter, CrossAccountAccessFilter, MetricsFilter) from c7n.manager import resources from c7n.query import QueryResourceManager, ResourceQuery from c7n.tags import RemoveTag, Tag, TagActionFilter, TagDelayedAction from c7n.utils import ( chunks, local_session, set_annotation, type_schema, dumps, get_account_id) """ TODO: - How does replication status effect in place encryption. - Test glacier support """ log = logging.getLogger('custodian.s3') filters = FilterRegistry('s3.filters') actions = ActionRegistry('s3.actions') filters.register('marked-for-op', TagActionFilter) actions.register('auto-tag-user', AutoTagUser) MAX_COPY_SIZE = 1024 * 1024 * 1024 * 2 @resources.register('s3') class S3(QueryResourceManager): #resource_type = "aws.s3.bucket" class resource_type(ResourceQuery.resolve("aws.s3.bucket")): dimension = 'BucketName'
from botocore.exceptions import ClientError from concurrent.futures import as_completed from c7n.actions import ActionRegistry, BaseAction from c7n.filters import (FilterRegistry, AgeFilter, ValueFilter, ANNOTATION_KEY, FilterValidationError) from c7n.manager import resources from c7n.query import QueryResourceManager, ResourceQuery from c7n import tags from c7n.utils import (local_session, set_annotation, query_instances, chunks, type_schema) log = logging.getLogger('custodian.ebs') filters = FilterRegistry('ebs.filters') actions = ActionRegistry('ebs.actions') tags.register_tags(filters, actions, 'VolumeId') @resources.register('ebs-snapshot') class Snapshot(QueryResourceManager): resource_type = "aws.ec2.snapshot" filter_registry = FilterRegistry('ebs-snapshot.filters') action_registry = ActionRegistry('ebs-snapshot.actions') @Snapshot.filter_registry.register('age') class SnapshotAge(AgeFilter):
""" import logging import itertools from botocore.exceptions import ClientError from c7n.actions import ActionRegistry, BaseAction from c7n.filters import FilterRegistry, Filter from c7n.manager import ResourceManager, resources from c7n.utils import local_session, type_schema log = logging.getLogger('custodian.rds') filters = FilterRegistry('rds.filters') actions = ActionRegistry('rds.actions') @resources.register('rds') class RDS(ResourceManager): filter_registry = filters action_registry = actions def resources(self): c = self.session_factory().client('rds') query = self.resource_query() if self._cache.load(): dbs = self._cache.get({'resource': 'rds', 'q': query}) if dbs is not None:
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from __future__ import absolute_import, division, print_function, unicode_literals import time import logging from c7n.manager import resources from c7n.actions import ActionRegistry, BaseAction from c7n.filters import FilterRegistry from c7n.query import QueryResourceManager from c7n.utils import (local_session, type_schema, get_retry) from c7n.tags import (TagDelayedAction, RemoveTag, TagActionFilter, Tag) filters = FilterRegistry('emr.filters') actions = ActionRegistry('emr.actions') log = logging.getLogger('custodian.emr') filters.register('marked-for-op', TagActionFilter) @resources.register('emr') class EMRCluster(QueryResourceManager): """Resource manager for Elastic MapReduce clusters """ class resource_type(object): service = 'emr' type = 'emr' cluster_states = ['WAITING', 'BOOTSTRAPPING', 'RUNNING', 'STARTING'] enum_spec = ('list_clusters', 'Clusters', {
# limitations under the License. import logging from botocore.exceptions import ClientError from concurrent.futures import as_completed from c7n.actions import ActionRegistry, BaseAction from c7n.filters import FilterRegistry, AgeFilter, OPERATORS import c7n.filters.vpc as net_filters from c7n.manager import resources from c7n.query import QueryResourceManager from c7n.utils import (type_schema, local_session, snapshot_identifier, chunks) log = logging.getLogger('custodian.rds-cluster') filters = FilterRegistry('rds-cluster.filters') actions = ActionRegistry('rds-cluster.actions') @resources.register('rds-cluster') class RDSCluster(QueryResourceManager): """Resource manager for RDS clusters. """ class resource_type(object): service = 'rds' type = 'rds-cluster' enum_spec = ('describe_db_clusters', 'DBClusters', None) name = id = 'DBClusterIdentifier' filter_name = None filter_type = None
import time from c7n.actions import ActionRegistry, BaseAction, AutoTagUser from c7n.filters import (FilterRegistry, ValueFilter, AgeFilter, Filter, FilterValidationError, OPERATORS) from c7n.filters.offhours import OffHour, OnHour from c7n.manager import resources from c7n.query import QueryResourceManager from c7n.tags import TagActionFilter, DEFAULT_TAG, TagCountFilter, TagTrim from c7n.utils import (local_session, query_instances, type_schema, chunks, get_retry) log = logging.getLogger('custodian.asg') filters = FilterRegistry('asg.filters') actions = ActionRegistry('asg.actions') filters.register('offhour', OffHour) filters.register('onhour', OnHour) filters.register('tag-count', TagCountFilter) filters.register('marked-for-op', TagActionFilter) actions.register('auto-tag-user', AutoTagUser) @resources.register('asg') class ASG(QueryResourceManager): resource_type = "aws.autoscaling.autoScalingGroup" filter_registry = filters action_registry = actions