class AwsConfigurationRecorder
def fetch_from_api
def fetch_from_api backend = BackendFactory.create(inspec_runner) query = @recorder_name ? { configuration_recorder_names: [@recorder_name] } : {} response = backend.describe_configuration_recorders(query) @exists = !response.configuration_recorders.empty? return unless exists? if response.configuration_recorders.count > 1 raise ArgumentError, 'Internal error: unexpectedly received multiple AWS Config Recorder objects from API; expected to be singleton per-region. Please file a bug report at https://github.com/chef/inspec/issues .' end recorder = response.configuration_recorders.first.to_h @recorder_name = recorder[:name] @role_arn = recorder[:role_arn] @recording_all_resource_types = recorder[:recording_group][:all_supported] @recording_all_global_types = recorder[:recording_group][:include_global_resource_types] @resource_types = recorder[:recording_group][:resource_types] rescue Aws::ConfigService::Errors::NoSuchConfigurationRecorderException @exists = false return end
def recording?
def recording? return unless @exists status[:recording] end
def recording_all_global_types?
def recording_all_global_types? @recording_all_global_types end
def recording_all_resource_types?
def recording_all_resource_types? @recording_all_resource_types end
def status
def status return {} unless @exists backend = BackendFactory.create(inspec_runner) catch_aws_errors do response = backend.describe_configuration_recorder_status(configuration_recorder_names: [@recorder_name]) @status = response.configuration_recorders_status.first.to_h end end
def to_s
def to_s "Configuration_Recorder: #{@recorder_name}" end
def validate_params(raw_params)
def validate_params(raw_params) validated_params = check_resource_param_names( raw_params: raw_params, allowed_params: [:recorder_name], allowed_scalar_name: :recorder_name, allowed_scalar_type: String, ) validated_params end