/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, 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.
*/
/*
* Do not modify this file. This file is generated from the config-2014-11-12.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.ConfigService.Model
{
///
/// Config rules evaluate the configuration settings of your Amazon Web Services resources.
/// A rule can run when Config detects a configuration change to an Amazon Web Services
/// resource or at a periodic frequency that you choose (for example, every 24 hours).
/// There are two types of rules: Config Managed Rules and Config Custom Rules.
///
///
///
/// Config Managed Rules are predefined, customizable rules created by Config. For a list
/// of managed rules, see List
/// of Config Managed Rules.
///
///
///
/// Config Custom Rules are rules that you create from scratch. There are two ways to
/// create Config custom rules: with Lambda functions (
/// Lambda Developer Guide) and with Guard (Guard
/// GitHub Repository), a policy-as-code language. Config custom rules created with
/// Lambda are called Config Custom Lambda Rules and Config custom rules created
/// with Guard are called Config Custom Policy Rules.
///
///
///
/// For more information about developing and using Config rules, see Evaluating
/// Resource with Config Rules in the Config Developer Guide.
///
///
///
/// You can use the Amazon Web Services CLI and Amazon Web Services SDKs if you want to
/// create a rule that triggers evaluations for your resources when Config delivers the
/// configuration snapshot. For more information, see ConfigSnapshotDeliveryProperties.
///
///
///
public partial class ConfigRule
{
private string _configRuleArn;
private string _configRuleId;
private string _configRuleName;
private ConfigRuleState _configRuleState;
private string _createdBy;
private string _description;
private List _evaluationModes = new List();
private string _inputParameters;
private MaximumExecutionFrequency _maximumExecutionFrequency;
private Scope _scope;
private Source _source;
///
/// Gets and sets the property ConfigRuleArn.
///
/// The Amazon Resource Name (ARN) of the Config rule.
///
///
[AWSProperty(Min=1, Max=256)]
public string ConfigRuleArn
{
get { return this._configRuleArn; }
set { this._configRuleArn = value; }
}
// Check to see if ConfigRuleArn property is set
internal bool IsSetConfigRuleArn()
{
return this._configRuleArn != null;
}
///
/// Gets and sets the property ConfigRuleId.
///
/// The ID of the Config rule.
///
///
[AWSProperty(Min=1, Max=64)]
public string ConfigRuleId
{
get { return this._configRuleId; }
set { this._configRuleId = value; }
}
// Check to see if ConfigRuleId property is set
internal bool IsSetConfigRuleId()
{
return this._configRuleId != null;
}
///
/// Gets and sets the property ConfigRuleName.
///
/// The name that you assign to the Config rule. The name is required if you are adding
/// a new rule.
///
///
[AWSProperty(Min=1, Max=128)]
public string ConfigRuleName
{
get { return this._configRuleName; }
set { this._configRuleName = value; }
}
// Check to see if ConfigRuleName property is set
internal bool IsSetConfigRuleName()
{
return this._configRuleName != null;
}
///
/// Gets and sets the property ConfigRuleState.
///
/// Indicates whether the Config rule is active or is currently being deleted by Config.
/// It can also indicate the evaluation status for the Config rule.
///
///
///
/// Config sets the state of the rule to EVALUATING
temporarily after you
/// use the StartConfigRulesEvaluation
request to evaluate your resources
/// against the Config rule.
///
///
///
/// Config sets the state of the rule to DELETING_RESULTS
temporarily after
/// you use the DeleteEvaluationResults
request to delete the current evaluation
/// results for the Config rule.
///
///
///
/// Config temporarily sets the state of a rule to DELETING
after you use
/// the DeleteConfigRule
request to delete the rule. After Config deletes
/// the rule, the rule and all of its evaluations are erased and are no longer available.
///
///
public ConfigRuleState ConfigRuleState
{
get { return this._configRuleState; }
set { this._configRuleState = value; }
}
// Check to see if ConfigRuleState property is set
internal bool IsSetConfigRuleState()
{
return this._configRuleState != null;
}
///
/// Gets and sets the property CreatedBy.
///
/// Service principal name of the service that created the rule.
///
///
///
/// The field is populated only if the service-linked rule is created by a service. The
/// field is empty if you create your own rule.
///
///
///
[AWSProperty(Min=1, Max=256)]
public string CreatedBy
{
get { return this._createdBy; }
set { this._createdBy = value; }
}
// Check to see if CreatedBy property is set
internal bool IsSetCreatedBy()
{
return this._createdBy != null;
}
///
/// Gets and sets the property Description.
///
/// The description that you provide for the Config rule.
///
///
[AWSProperty(Min=0, Max=256)]
public string Description
{
get { return this._description; }
set { this._description = value; }
}
// Check to see if Description property is set
internal bool IsSetDescription()
{
return this._description != null;
}
///
/// Gets and sets the property EvaluationModes.
///
/// The modes the Config rule can be evaluated in. The valid values are distinct objects.
/// By default, the value is Detective evaluation mode only.
///
///
public List EvaluationModes
{
get { return this._evaluationModes; }
set { this._evaluationModes = value; }
}
// Check to see if EvaluationModes property is set
internal bool IsSetEvaluationModes()
{
return this._evaluationModes != null && this._evaluationModes.Count > 0;
}
///
/// Gets and sets the property InputParameters.
///
/// A string, in JSON format, that is passed to the Config rule Lambda function.
///
///
[AWSProperty(Min=1, Max=1024)]
public string InputParameters
{
get { return this._inputParameters; }
set { this._inputParameters = value; }
}
// Check to see if InputParameters property is set
internal bool IsSetInputParameters()
{
return this._inputParameters != null;
}
///
/// Gets and sets the property MaximumExecutionFrequency.
///
/// The maximum frequency with which Config runs evaluations for a rule. You can specify
/// a value for MaximumExecutionFrequency
when:
///
/// -
///
/// This is for an Config managed rule that is triggered at a periodic frequency.
///
///
-
///
/// Your custom rule is triggered when Config delivers the configuration snapshot. For
/// more information, see ConfigSnapshotDeliveryProperties.
///
///
///
/// By default, rules with a periodic trigger are evaluated every 24 hours. To change
/// the frequency, specify a valid value for the MaximumExecutionFrequency
/// parameter.
///
///
///
public MaximumExecutionFrequency MaximumExecutionFrequency
{
get { return this._maximumExecutionFrequency; }
set { this._maximumExecutionFrequency = value; }
}
// Check to see if MaximumExecutionFrequency property is set
internal bool IsSetMaximumExecutionFrequency()
{
return this._maximumExecutionFrequency != null;
}
///
/// Gets and sets the property Scope.
///
/// Defines which resources can trigger an evaluation for the rule. The scope can include
/// one or more resource types, a combination of one resource type and one resource ID,
/// or a combination of a tag key and value. Specify a scope to constrain the resources
/// that can trigger an evaluation for the rule. If you do not specify a scope, evaluations
/// are triggered when any resource in the recording group changes.
///
///
///
/// The scope can be empty.
///
///
///
public Scope Scope
{
get { return this._scope; }
set { this._scope = value; }
}
// Check to see if Scope property is set
internal bool IsSetScope()
{
return this._scope != null;
}
///
/// Gets and sets the property Source.
///
/// Provides the rule owner (Amazon Web Services
for managed rules, CUSTOM_POLICY
/// for Custom Policy rules, and CUSTOM_LAMBDA
for Custom Lambda rules),
/// the rule identifier, and the notifications that cause the function to evaluate your
/// Amazon Web Services resources.
///
///
[AWSProperty(Required=true)]
public Source Source
{
get { return this._source; }
set { this._source = value; }
}
// Check to see if Source property is set
internal bool IsSetSource()
{
return this._source != null;
}
}
}