Sha256: 6e0032e37a4d3bbe9e02d551bd3c75884a3593886088d0ad87981c8039977028

Contents?: true

Size: 1.84 KB

Versions: 12

Compression:

Stored size: 1.84 KB

Contents

require 'aws-sdk-ec2'

module CfnGuardian
  module Resource
    class Ec2Instance < Base
      
      def default_alarms    
        alarm = CfnGuardian::Models::Ec2InstanceAlarm.new(@resource)
        alarm.name = 'CPUUtilizationHigh'
        alarm.metric_name = 'CPUUtilization'
        alarm.statistic = 'Minimum'
        alarm.threshold = 90
        alarm.evaluation_periods = 10
        @alarms.push(alarm)
        
        alarm = CfnGuardian::Models::Ec2InstanceAlarm.new(@resource)
        alarm.name = 'StatusCheckFailed'
        alarm.metric_name = 'StatusCheckFailed'
        alarm.threshold = 0
        alarm.evaluation_periods = 1
        alarm.comparison_operator = 'GreaterThanThreshold'
        @alarms.push(alarm)

        alarm = CfnGuardian::Models::Ec2InstanceAlarm.new(@resource)
        alarm.name = 'CPUCreditBalanceLow'
        alarm.metric_name = 'CPUCreditBalance'
        alarm.comparison_operator = 'LessThanThreshold'
        alarm.statistic = 'Minimum'
        alarm.threshold = 100
        alarm.evaluation_periods = 5
        alarm.treat_missing_data = 'notBreaching'
        alarm.datapoints_to_alarm = 5
        @alarms.push(alarm)
      end
      
      def default_event_subscriptions()
        event_subscription = CfnGuardian::Models::Ec2InstanceEventSubscription.new(@resource)
        event_subscription.name = 'InstanceTerminated'
        event_subscription.detail_type = 'EC2 Instance State-change Notification'
        event_subscription.detail = {
          'instance-id' => [@resource['Id']],
          'state' => ['terminated']
        }
        @event_subscriptions.push(event_subscription)
      end

      def resource_exists?
        client = Aws::EC2::Client.new
        resource = Aws::EC2::Resource.new(client: client)
        instance = resource.instance(@resource['Id'])
        return instance.exists?
      end

    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
cfn-guardian-0.11.11 lib/cfnguardian/resources/ec2_instance.rb
cfn-guardian-0.11.10 lib/cfnguardian/resources/ec2_instance.rb
cfn-guardian-0.11.9 lib/cfnguardian/resources/ec2_instance.rb
cfn-guardian-0.11.8 lib/cfnguardian/resources/ec2_instance.rb
cfn-guardian-0.11.7 lib/cfnguardian/resources/ec2_instance.rb
cfn-guardian-0.11.6 lib/cfnguardian/resources/ec2_instance.rb
cfn-guardian-0.11.5 lib/cfnguardian/resources/ec2_instance.rb
cfn-guardian-0.11.4 lib/cfnguardian/resources/ec2_instance.rb
cfn-guardian-0.11.3 lib/cfnguardian/resources/ec2_instance.rb
cfn-guardian-0.11.2 lib/cfnguardian/resources/ec2_instance.rb
cfn-guardian-0.11.1 lib/cfnguardian/resources/ec2_instance.rb
cfn-guardian-0.11.0 lib/cfnguardian/resources/ec2_instance.rb