cfn-guardian 0.6.10 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 355680f054f4e9550f1709780e0b3a5d72c8773c0222bb2307621080a76728b2
4
- data.tar.gz: 840685a1d7f15409e809e71944c90e433d428123d204e38c37113444c9508d44
3
+ metadata.gz: cd1284d70e2862cb14e2aa9f3c97e582ef6776bc54d80f47af8d8bfb561a9386
4
+ data.tar.gz: 6df131dc0d56bb00041f808617dbd856501d6a131d42ab1311a53d8fb3a3e02d
5
5
  SHA512:
6
- metadata.gz: 5c8bb52fbeed1bcad2b05776798e5bd21861e08631801e607b6219bb93c5c1e53993355826b9f561aa6099364af09e9e1defa0ddf93f829db325499cc359ba3d
7
- data.tar.gz: eff695bda7e0e2e9325f0f7ef332f6e2c7f12a1a32ed8dabfca0a04d7c61a93c5616df8711a7daff6f64bcbbf8b3808b9d01b080334d80c163bcc2712f7431cb
6
+ metadata.gz: 3f63a7f508b3b2b235138840ddcf9fbdf4512b646711cc7422da94727bde967e49f7da23e7dff94f10134d15c39e661a8da6e356b1fe60c514897f4bfd7176dc
7
+ data.tar.gz: 9ff94d8f5eeec75778f4b13da7fccd853fd85ff3669966de381c3147a94769b2dc916644069b764d05f560ad9e0f61024c6d776bd60e355cd6a2dbe89d579e04
data/README.md CHANGED
@@ -41,3 +41,4 @@ CfnGuardian is a AWS monitoring tool with a few capabilities:
41
41
  - Redshift Cluster
42
42
  - SQS Queues
43
43
  - LogGroup Metric Filters
44
+ - ElasticSearch
@@ -8,8 +8,8 @@ Alarms can be provided to the function the following ways
8
8
  Alarm names be provided by a space delimited list using the `--alarms` switch.
9
9
 
10
10
  ```bash
11
- cfn-guardian disable-alarms --group alarm-1 alarm-2
12
- cfn-guardian enable-alarms --group alarm-1 alarm-2
11
+ cfn-guardian disable-alarms --alarms alarm-1 alarm-2
12
+ cfn-guardian enable-alarms --alarms alarm-1 alarm-2
13
13
  ```
14
14
 
15
15
  ## Alarm Name Prefix
@@ -60,10 +60,16 @@ Resources:
60
60
  StatusCode: 200
61
61
 
62
62
  # Define the top level key
63
- MaintenaceGroups:
63
+ MaintenanceGroups:
64
64
 
65
65
  # Define the group name
66
66
  AppUpdate:
67
+ # Optionally set a schedule for enabling/disabling
68
+ Schedules:
69
+ Disable: '30 0 * * ? *'
70
+ Enable: '00 1 * * ? *'
71
+ #Optionally specify and set to true to enable logging on lambda
72
+ Debug: true
67
73
  # Define the resource group
68
74
  ECSService:
69
75
  # define the alarms in the resource group
@@ -82,4 +88,6 @@ MaintenaceGroups:
82
88
  ```bash
83
89
  cfn-guardian disable-alarms --group AppUpdate
84
90
  cfn-guardian enable-alarms --group AppUpdate
85
- ```
91
+ ```
92
+
93
+ Optionally add a Schedule for disabling and enabling alarm actions as shown in the example above to deploy a lambda function that will be invoked by event rules created with the given cron expressions.
data/docs/resources.md CHANGED
@@ -54,6 +54,7 @@ Resources:
54
54
  | Lambda | Id |
55
55
  | CloudFrontDistribution | Id |
56
56
  | SQSQueue | Id |
57
+ | ElasticSearch | Id, Domain |
57
58
 
58
59
 
59
60
  ## Custom Resource Groups
@@ -16,6 +16,7 @@ require 'cfnguardian/resources/dynamodb_table'
16
16
  require 'cfnguardian/resources/ec2_instance'
17
17
  require 'cfnguardian/resources/ecs_cluster'
18
18
  require 'cfnguardian/resources/ecs_service'
19
+ require 'cfnguardian/resources/eks_container_insights'
19
20
  require 'cfnguardian/resources/elastic_file_system'
20
21
  require 'cfnguardian/resources/elasticache_replication_group'
21
22
  require 'cfnguardian/resources/elastic_loadbalancer'
@@ -42,9 +43,11 @@ require 'cfnguardian/resources/glue'
42
43
  require 'cfnguardian/resources/step_functions'
43
44
  require 'cfnguardian/resources/vpn_tunnel'
44
45
  require 'cfnguardian/resources/vpn_connection'
46
+ require 'cfnguardian/resources/elastic_search'
45
47
  require 'cfnguardian/version'
46
48
  require 'cfnguardian/error'
47
49
 
50
+
48
51
  module CfnGuardian
49
52
  class Compile
50
53
  include Logging
@@ -58,7 +61,7 @@ module CfnGuardian
58
61
  @composites = config.fetch('Composites',{})
59
62
  @templates = config.fetch('Templates',{})
60
63
  @topics = config.fetch('Topics',{})
61
- @maintenance_groups = config.fetch('MaintenaceGroups', {})
64
+ @maintenance_groups = config.fetch('MaintenanceGroups', {})
62
65
  @event_subscriptions = config.fetch('EventSubscriptions', {})
63
66
 
64
67
  # Make sure the default topics exist if they aren't supplied in the alarms.yaml
@@ -66,7 +69,6 @@ module CfnGuardian
66
69
  @topics[topic] = '' unless @topics.has_key?(topic)
67
70
  end
68
71
 
69
- @maintenance_group_list = @maintenance_groups.keys.map {|group| "#{group}MaintenanceGroup"}
70
72
  @resources = []
71
73
  @stacks = []
72
74
  @checks = []
@@ -113,6 +115,9 @@ module CfnGuardian
113
115
 
114
116
  @maintenance_groups.each do |maintenance_group,resource_groups|
115
117
  resource_groups.each do |group, alarms|
118
+ if group == 'Schedules'
119
+ next
120
+ end
116
121
  alarms.each do |alarm, resources|
117
122
  resources.each do |resource|
118
123
 
@@ -187,7 +192,7 @@ module CfnGuardian
187
192
  resources = split_resources(bucket,path)
188
193
 
189
194
  main_stack = CfnGuardian::Stacks::Main.new()
190
- main_stack.build_template(@stacks,@checks,@topics,@maintenance_group_list,@ssm_parameters)
195
+ main_stack.build_template(@stacks,@checks,@topics,@maintenance_groups,@ssm_parameters)
191
196
  valid = main_stack.template.validate
192
197
  FileUtils.mkdir_p 'out'
193
198
  File.write("out/guardian.compiled.yaml", JSON.parse(valid.to_json).to_yaml)
@@ -28,12 +28,20 @@ Resources:
28
28
  ECSCluster:
29
29
  - Id: Default
30
30
  ECSService:
31
+ - Id: Default
32
+ Cluster: Default
33
+ EKSContainerInsightsCluster:
34
+ - Id: Default
35
+ EKSContainerInsightsNamespace:
31
36
  - Id: Default
32
37
  Cluster: Default
33
38
  ElasticFileSystem:
34
39
  - Id: Default
35
40
  ElasticLoadBalancer:
36
41
  - Id: Default
42
+ ElasticSearch:
43
+ - Id: Default
44
+ Domain: Default
37
45
  ElastiCacheReplicationGroup:
38
46
  - Id: Default
39
47
  Http:
@@ -203,7 +203,28 @@ module CfnGuardian
203
203
  }
204
204
  end
205
205
  end
206
+
207
+ class EKSContainerInsightsClusterAlarm < BaseAlarm
208
+ def initialize(resource)
209
+ super(resource)
210
+ @group = 'EKSContainerInsightsCluster'
211
+ @namespace = 'ContainerInsights'
212
+ @dimensions = { ClusterName: resource['Id'] }
213
+ end
214
+ end
206
215
 
216
+ class EKSContainerInsightsNamespaceAlarm < BaseAlarm
217
+ def initialize(resource)
218
+ super(resource)
219
+ @group = 'EKSContainerInsightsNamespace'
220
+ @namespace = 'ContainerInsights'
221
+ @dimensions = {
222
+ ClusterName: resource['Cluster'],
223
+ Namespace: resource['Id']
224
+ }
225
+ end
226
+ end
227
+
207
228
  class ElastiCacheReplicationGroupAlarm < BaseAlarm
208
229
  def initialize(resource)
209
230
  super(resource)
@@ -212,6 +233,24 @@ module CfnGuardian
212
233
  @dimensions = { CacheClusterId: resource['Id'] }
213
234
  end
214
235
  end
236
+
237
+ class ElasticSearchAlarm < BaseAlarm
238
+ def initialize(resource)
239
+ super(resource)
240
+ @group = 'ElasticSearch'
241
+ @namespace = 'AWS/ES'
242
+ @dimensions = {
243
+ DomainName: resource['Domain'],
244
+ ClientId: resource['Id']
245
+ }
246
+ @comparison_operator = 'GreaterThanOrEqualToThreshold'
247
+ @threshold = 1
248
+ @evaluation_periods = 5
249
+ @treat_missing_data = 'breaching'
250
+ @period = 60
251
+ @data_points_to_alarm = 1
252
+ end
253
+ end
215
254
 
216
255
  class ElasticLoadBalancerAlarm < BaseAlarm
217
256
  def initialize(resource)
@@ -205,5 +205,16 @@ module CfnGuardian
205
205
  end
206
206
  end
207
207
 
208
+ class MaintenanceGroupCheck < BaseCheck
209
+ def initialize(resource)
210
+ super(resource)
211
+ @name = 'MaintenanceGroupCheck'
212
+ @package = 'maintenance-group-check'
213
+ @handler = 'handler.maintenance_group_check'
214
+ @version = '5b795e6509068d1767e4be80f2e6868cbeb3b425'
215
+ @runtime = 'python3.7'
216
+ end
217
+ end
218
+
208
219
  end
209
220
  end
@@ -0,0 +1,99 @@
1
+ module CfnGuardian::Resource
2
+ class EKSContainerInsightsCluster < Base
3
+
4
+ def default_alarms
5
+
6
+ alarm = CfnGuardian::Models::EKSContainerInsightsClusterAlarm.new(@resource)
7
+ alarm.name = 'NodeCpuUtilisationBase'
8
+ alarm.metric_name = 'node_cpu_utilization'
9
+ alarm.comparison_operator = 'GreaterThanThreshold'
10
+ alarm.statistic = 'Maximum'
11
+ alarm.threshold = 75
12
+ alarm.evaluation_periods = 60
13
+ alarm.alarm_action = 'Warning'
14
+ @alarms.push(alarm)
15
+
16
+ alarm = CfnGuardian::Models::EKSContainerInsightsClusterAlarm.new(@resource)
17
+ alarm.name = 'NodeCpuUtilisationSpike'
18
+ alarm.metric_name = 'node_cpu_utilization'
19
+ alarm.comparison_operator = 'GreaterThanThreshold'
20
+ alarm.statistic = 'Maximum'
21
+ alarm.threshold = 95
22
+ alarm.evaluation_periods = 5
23
+ @alarms.push(alarm)
24
+
25
+ alarm = CfnGuardian::Models::EKSContainerInsightsClusterAlarm.new(@resource)
26
+ alarm.name = 'NodeFileSystemUtilisationCrit'
27
+ alarm.metric_name = 'node_filesystem_utilization'
28
+ alarm.comparison_operator = 'GreaterThanThreshold'
29
+ alarm.statistic = 'Maximum'
30
+ alarm.threshold = 90
31
+ alarm.evaluation_periods = 1
32
+ @alarms.push(alarm)
33
+
34
+ alarm = CfnGuardian::Models::EKSContainerInsightsClusterAlarm.new(@resource)
35
+ alarm.name = 'NodeFileSystemUtilisationWarning'
36
+ alarm.metric_name = 'node_filesystem_utilization'
37
+ alarm.comparison_operator = 'GreaterThanThreshold'
38
+ alarm.statistic = 'Maximum'
39
+ alarm.threshold = 75
40
+ alarm.evaluation_periods = 1
41
+ alarm.alarm_action = 'Warning'
42
+ @alarms.push(alarm)
43
+
44
+ alarm = CfnGuardian::Models::EKSContainerInsightsClusterAlarm.new(@resource)
45
+ alarm.name = 'NodeMemoryUtilisationBase'
46
+ alarm.metric_name = 'node_memory_utilization'
47
+ alarm.comparison_operator = 'GreaterThanThreshold'
48
+ alarm.statistic = 'Maximum'
49
+ alarm.threshold = 80
50
+ alarm.evaluation_periods = 60
51
+ alarm.alarm_action = 'Warning'
52
+ @alarms.push(alarm)
53
+
54
+ alarm = CfnGuardian::Models::EKSContainerInsightsClusterAlarm.new(@resource)
55
+ alarm.name = 'NodeMemoryUtilisationSpike'
56
+ alarm.metric_name = 'node_memory_utilization'
57
+ alarm.comparison_operator = 'GreaterThanThreshold'
58
+ alarm.statistic = 'Maximum'
59
+ alarm.threshold = 90
60
+ alarm.evaluation_periods = 5
61
+ @alarms.push(alarm)
62
+
63
+ alarm = CfnGuardian::Models::EKSContainerInsightsClusterAlarm.new(@resource)
64
+ alarm.name = 'ClusterFailedNodeCount'
65
+ alarm.metric_name = 'cluster_failed_node_count'
66
+ alarm.comparison_operator = 'GreaterThanThreshold'
67
+ alarm.statistic = 'Minimum'
68
+ alarm.threshold = 0
69
+ alarm.evaluation_periods = 1
70
+ @alarms.push(alarm)
71
+
72
+ end
73
+ end
74
+
75
+ class EKSContainerInsightsNamespace < Base
76
+
77
+ def default_alarms
78
+
79
+ alarm = CfnGuardian::Models::EKSContainerInsightsNamespaceAlarm.new(@resource)
80
+ alarm.name = 'PodCpuUtilisation'
81
+ alarm.metric_name = 'pod_cpu_utilization'
82
+ alarm.comparison_operator = 'GreaterThanThreshold'
83
+ alarm.statistic = 'Maximum'
84
+ alarm.threshold = 90
85
+ alarm.evaluation_periods = 5
86
+ @alarms.push(alarm)
87
+
88
+ alarm = CfnGuardian::Models::EKSContainerInsightsNamespaceAlarm.new(@resource)
89
+ alarm.name = 'PodMemoryUtilisation'
90
+ alarm.metric_name = 'pod_memory_utilization'
91
+ alarm.comparison_operator = 'GreaterThanThreshold'
92
+ alarm.statistic = 'Maximum'
93
+ alarm.threshold = 90
94
+ alarm.evaluation_periods = 5
95
+ @alarms.push(alarm)
96
+
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,136 @@
1
+ module CfnGuardian::Resource
2
+ class ElasticSearch < Base
3
+
4
+ def default_alarms
5
+ alarm = CfnGuardian::Models::ElasticSearchAlarm.new(@resource)
6
+ alarm.name = 'NodeCount'
7
+ alarm.metric_name = 'Nodes'
8
+ alarm.threshold = 3
9
+ alarm.evaluation_periods = 1440 # 24 hours
10
+ alarm.datapoints_to_alarm = 1
11
+ alarm.comparison_operator = 'LessThanOrEqualToThreshold'
12
+ alarm.alarm_action = 'Critical'
13
+ alarm.enabled = false
14
+ @alarms.push(alarm)
15
+
16
+ alarm = CfnGuardian::Models::ElasticSearchAlarm.new(@resource)
17
+ alarm.name = 'JVMMemoryPressureWarning'
18
+ alarm.metric_name = 'JVMMemoryPressure'
19
+ alarm.threshold = 72
20
+ alarm.evaluation_periods = 5
21
+ alarm.datapoints_to_alarm = 3
22
+ alarm.alarm_action = 'Warning'
23
+ @alarms.push(alarm)
24
+
25
+ alarm = CfnGuardian::Models::ElasticSearchAlarm.new(@resource)
26
+ alarm.name = 'JVMMemoryPressureCrit'
27
+ alarm.metric_name = 'JVMMemoryPressure'
28
+ alarm.threshold = 92
29
+ alarm.evaluation_periods = 5
30
+ alarm.alarm_action = 'Critical'
31
+ @alarms.push(alarm)
32
+
33
+ alarm = CfnGuardian::Models::ElasticSearchAlarm.new(@resource)
34
+ alarm.name = 'ClusterIndexWritesBlocked'
35
+ alarm.metric_name = 'ClusterIndexWritesBlocked'
36
+ alarm.threshold = 1
37
+ alarm.evaluation_periods = 5
38
+ alarm.alarm_action = 'Critical'
39
+ @alarms.push(alarm)
40
+
41
+ alarm = CfnGuardian::Models::ElasticSearchAlarm.new(@resource)
42
+ alarm.name = 'MasterNodeCPUUtilisationWarning'
43
+ alarm.metric_name = 'MasterCPUUtilization'
44
+ alarm.threshold = 75
45
+ alarm.evaluation_periods = 60
46
+ alarm.alarm_action = 'Warning'
47
+ @alarms.push(alarm)
48
+
49
+ alarm = CfnGuardian::Models::ElasticSearchAlarm.new(@resource)
50
+ alarm.name = 'MasterNodeCPUUtilisationCrit'
51
+ alarm.metric_name = 'MasterCPUUtilization'
52
+ alarm.threshold = 95
53
+ alarm.evaluation_periods = 10
54
+ alarm.alarm_action = 'Critical'
55
+ @alarms.push(alarm)
56
+
57
+ alarm = CfnGuardian::Models::ElasticSearchAlarm.new(@resource)
58
+ alarm.name = 'FreeStorageSpaceWarning'
59
+ alarm.metric_name = 'FreeStorageSpace'
60
+ alarm.threshold = 50000
61
+ alarm.evaluation_periods = 1
62
+ alarm.alarm_action = 'Warning'
63
+ alarm.statistic = 'Minimum'
64
+ alarm.comparison_operator = 'LessThanOrEqualToThreshold'
65
+ @alarms.push(alarm)
66
+
67
+ alarm = CfnGuardian::Models::ElasticSearchAlarm.new(@resource)
68
+ alarm.name = 'FreeStorageSpaceCrit'
69
+ alarm.metric_name = 'FreeStorageSpace'
70
+ alarm.threshold = 25000
71
+ alarm.evaluation_periods = 1
72
+ alarm.alarm_action = 'Critical'
73
+ alarm.statistic = 'Minimum'
74
+ alarm.comparison_operator = 'LessThanOrEqualToThreshold'
75
+ @alarms.push(alarm)
76
+
77
+ alarm = CfnGuardian::Models::ElasticSearchAlarm.new(@resource)
78
+ alarm.name = 'CPUUtilizationWarning'
79
+ alarm.metric_name = 'CPUUtilization'
80
+ alarm.threshold = 75
81
+ alarm.evaluation_periods = 15
82
+ alarm.datapoints_to_alarm = 3
83
+ alarm.alarm_action = 'Warning'
84
+ alarm.statistic = 'Average'
85
+ @alarms.push(alarm)
86
+
87
+ alarm = CfnGuardian::Models::ElasticSearchAlarm.new(@resource)
88
+ alarm.name = 'CPUUtilizationCrit'
89
+ alarm.metric_name = 'CPUUtilization'
90
+ alarm.threshold = 95
91
+ alarm.evaluation_periods = 5
92
+ alarm.datapoints_to_alarm = 3
93
+ alarm.alarm_action = 'Critical'
94
+ alarm.statistic = 'Average'
95
+ @alarms.push(alarm)
96
+
97
+ alarm = CfnGuardian::Models::ElasticSearchAlarm.new(@resource)
98
+ alarm.name = 'KMSKeyError'
99
+ alarm.metric_name = 'KMSKeyError'
100
+ alarm.threshold = 1
101
+ alarm.evaluation_periods = 1
102
+ alarm.alarm_action = 'Warning'
103
+ alarm.statistic = 'Minimum'
104
+ @alarms.push(alarm)
105
+
106
+ alarm = CfnGuardian::Models::ElasticSearchAlarm.new(@resource)
107
+ alarm.name = 'KMSKeyInaccessible'
108
+ alarm.metric_name = 'KMSKeyInaccessible'
109
+ alarm.threshold = 1
110
+ alarm.evaluation_periods = 1
111
+ alarm.alarm_action = 'Critical'
112
+ alarm.statistic = 'Minimum'
113
+ alarm.enabled = false
114
+ @alarms.push(alarm)
115
+
116
+ alarm = CfnGuardian::Models::ElasticSearchAlarm.new(@resource)
117
+ alarm.name = 'ClusterStatusRed'
118
+ alarm.metric_name = 'ClusterStatus.red'
119
+ alarm.threshold = 1
120
+ alarm.evaluation_periods = 1
121
+ alarm.alarm_action = 'Critical'
122
+ alarm.statistic = 'Minimum'
123
+ @alarms.push(alarm)
124
+
125
+ alarm = CfnGuardian::Models::ElasticSearchAlarm.new(@resource)
126
+ alarm.name = 'ClusterStatusYellow'
127
+ alarm.metric_name = 'ClusterStatus.yellow'
128
+ alarm.threshold = 1
129
+ alarm.evaluation_periods = 1
130
+ alarm.alarm_action = 'Warning'
131
+ alarm.statistic = 'Minimum'
132
+ @alarms.push(alarm)
133
+
134
+ end
135
+ end
136
+ end
@@ -4,6 +4,7 @@ module CfnGuardian
4
4
  module Stacks
5
5
  class Main
6
6
  include CfnDsl::CloudFormation
7
+ include Logging
7
8
 
8
9
  attr_reader :parameters, :template
9
10
 
@@ -22,12 +23,10 @@ module CfnGuardian
22
23
  parameter.Default sns
23
24
  parameters[name] = Ref(name)
24
25
  end
25
-
26
- maintenance_groups.each do |group|
27
- topic = @template.SNS_Topic(group)
28
- topic.TopicName group
29
- topic.Tags([{ Key: 'Environment', Value: 'guardian' }])
30
- parameters[group] = Ref(group)
26
+
27
+ if maintenance_groups.any?
28
+ add_lambda(CfnGuardian::Models::MaintenanceGroupCheck.new(maintenance_groups))
29
+ maintenance_groups.each {|group,config| add_maintenance_group(group,config,parameters)}
31
30
  end
32
31
 
33
32
  add_iam_role(ssm_parameters)
@@ -73,6 +72,17 @@ module CfnGuardian
73
72
  }]
74
73
  }
75
74
  }
75
+ policies << {
76
+ PolicyName: 'maintenance-group-actions',
77
+ PolicyDocument: {
78
+ Version: '2012-10-17',
79
+ Statement: [{
80
+ Effect: 'Allow',
81
+ Action: [ 'cloudwatch:DescribeAlarms', 'cloudwatch:DisableAlarmActions', 'cloudwatch:EnableAlarmActions', 'cloudwatch:SetAlarmState' ],
82
+ Resource: FnSub("arn:aws:cloudwatch:${AWS::Region}:${AWS::AccountId}:alarm:*")
83
+ }]
84
+ }
85
+ }
76
86
  if ssm_parameters.any?
77
87
  policies << {
78
88
  PolicyName: 'ssm-parameters',
@@ -165,7 +175,37 @@ module CfnGuardian
165
175
  end
166
176
  end
167
177
  end
168
-
178
+
179
+ def add_maintenance_group(group,config,parameters)
180
+ group_name = "#{group}MaintenanceGroup"
181
+ schedules = config.fetch('Schedules', {})
182
+ logging = config.dig('Schedules', 'Debug').to_s
183
+
184
+ topic = @template.SNS_Topic(group_name)
185
+ topic.TopicName group_name
186
+ topic.Tags([{ Key: 'Environment', Value: 'guardian' }])
187
+ parameters[group_name] = Ref(group_name)
188
+
189
+ if schedules.any?
190
+ event = @template.Events_Rule("#{group_name}EnableEvent")
191
+ event.Name "#{group_name}EnableEvent"
192
+ event.ScheduleExpression "cron(#{schedules['Enable']})"
193
+ event.Targets([{
194
+ Arn: FnGetAtt('MaintenanceGroupCheckFunction', 'Arn'),
195
+ Id: "#{group_name}EnableTarget",
196
+ Input: {action:"enable_alarms", maintenance_group: group_name, logging: logging}.to_json
197
+ }])
198
+
199
+ event = @template.Events_Rule("#{group_name}DisableEvent")
200
+ event.Name "#{group_name}DisableEvent"
201
+ event.ScheduleExpression "cron(#{schedules['Disable']})"
202
+ event.Targets([{
203
+ Arn: FnGetAtt('MaintenanceGroupCheckFunction', 'Arn'),
204
+ Id: "#{group_name}DisableTarget",
205
+ Input: {action:"disable_alarms", maintenance_group: group_name, logging: logging}.to_json
206
+ }])
207
+ end
208
+ end
169
209
  end
170
210
  end
171
211
  end
@@ -1,4 +1,4 @@
1
1
  module CfnGuardian
2
- VERSION = "0.6.10"
2
+ VERSION = "0.7.0"
3
3
  CHANGE_SET_VERSION = VERSION.gsub('.', '-').freeze
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfn-guardian
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.10
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guslington
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-25 00:00:00.000000000 Z
11
+ date: 2021-08-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -285,8 +285,10 @@ files:
285
285
  - lib/cfnguardian/resources/ec2_instance.rb
286
286
  - lib/cfnguardian/resources/ecs_cluster.rb
287
287
  - lib/cfnguardian/resources/ecs_service.rb
288
+ - lib/cfnguardian/resources/eks_container_insights.rb
288
289
  - lib/cfnguardian/resources/elastic_file_system.rb
289
290
  - lib/cfnguardian/resources/elastic_loadbalancer.rb
291
+ - lib/cfnguardian/resources/elastic_search.rb
290
292
  - lib/cfnguardian/resources/elasticache_replication_group.rb
291
293
  - lib/cfnguardian/resources/glue.rb
292
294
  - lib/cfnguardian/resources/http.rb