1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/config/ConfigService_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <aws/config/model/Scope.h>
10 #include <aws/config/model/Source.h>
11 #include <aws/config/model/MaximumExecutionFrequency.h>
12 #include <aws/config/model/ConfigRuleState.h>
13 #include <utility>
14 
15 namespace Aws
16 {
17 namespace Utils
18 {
19 namespace Json
20 {
21   class JsonValue;
22   class JsonView;
23 } // namespace Json
24 } // namespace Utils
25 namespace ConfigService
26 {
27 namespace Model
28 {
29 
30   /**
31    * <p>An Config rule represents an Lambda function that you create for a custom
32    * rule or a predefined function for an Config managed rule. The function evaluates
33    * configuration items to assess whether your Amazon Web Services resources comply
34    * with your desired configurations. This function can run when Config detects a
35    * configuration change to an Amazon Web Services resource and at a periodic
36    * frequency that you choose (for example, every 24 hours).</p>  <p>You can
37    * use the Amazon Web Services CLI and Amazon Web Services SDKs if you want to
38    * create a rule that triggers evaluations for your resources when Config delivers
39    * the configuration snapshot. For more information, see
40    * <a>ConfigSnapshotDeliveryProperties</a>.</p>  <p>For more information
41    * about developing and using Config rules, see <a
42    * href="https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html">Evaluating
43    * Amazon Web Services resource Configurations with Config</a> in the <i>Config
44    * Developer Guide</i>.</p><p><h3>See Also:</h3>   <a
45    * href="http://docs.aws.amazon.com/goto/WebAPI/config-2014-11-12/ConfigRule">AWS
46    * API Reference</a></p>
47    */
48   class AWS_CONFIGSERVICE_API ConfigRule
49   {
50   public:
51     ConfigRule();
52     ConfigRule(Aws::Utils::Json::JsonView jsonValue);
53     ConfigRule& operator=(Aws::Utils::Json::JsonView jsonValue);
54     Aws::Utils::Json::JsonValue Jsonize() const;
55 
56 
57     /**
58      * <p>The name that you assign to the Config rule. The name is required if you are
59      * adding a new rule.</p>
60      */
GetConfigRuleName()61     inline const Aws::String& GetConfigRuleName() const{ return m_configRuleName; }
62 
63     /**
64      * <p>The name that you assign to the Config rule. The name is required if you are
65      * adding a new rule.</p>
66      */
ConfigRuleNameHasBeenSet()67     inline bool ConfigRuleNameHasBeenSet() const { return m_configRuleNameHasBeenSet; }
68 
69     /**
70      * <p>The name that you assign to the Config rule. The name is required if you are
71      * adding a new rule.</p>
72      */
SetConfigRuleName(const Aws::String & value)73     inline void SetConfigRuleName(const Aws::String& value) { m_configRuleNameHasBeenSet = true; m_configRuleName = value; }
74 
75     /**
76      * <p>The name that you assign to the Config rule. The name is required if you are
77      * adding a new rule.</p>
78      */
SetConfigRuleName(Aws::String && value)79     inline void SetConfigRuleName(Aws::String&& value) { m_configRuleNameHasBeenSet = true; m_configRuleName = std::move(value); }
80 
81     /**
82      * <p>The name that you assign to the Config rule. The name is required if you are
83      * adding a new rule.</p>
84      */
SetConfigRuleName(const char * value)85     inline void SetConfigRuleName(const char* value) { m_configRuleNameHasBeenSet = true; m_configRuleName.assign(value); }
86 
87     /**
88      * <p>The name that you assign to the Config rule. The name is required if you are
89      * adding a new rule.</p>
90      */
WithConfigRuleName(const Aws::String & value)91     inline ConfigRule& WithConfigRuleName(const Aws::String& value) { SetConfigRuleName(value); return *this;}
92 
93     /**
94      * <p>The name that you assign to the Config rule. The name is required if you are
95      * adding a new rule.</p>
96      */
WithConfigRuleName(Aws::String && value)97     inline ConfigRule& WithConfigRuleName(Aws::String&& value) { SetConfigRuleName(std::move(value)); return *this;}
98 
99     /**
100      * <p>The name that you assign to the Config rule. The name is required if you are
101      * adding a new rule.</p>
102      */
WithConfigRuleName(const char * value)103     inline ConfigRule& WithConfigRuleName(const char* value) { SetConfigRuleName(value); return *this;}
104 
105 
106     /**
107      * <p>The Amazon Resource Name (ARN) of the Config rule.</p>
108      */
GetConfigRuleArn()109     inline const Aws::String& GetConfigRuleArn() const{ return m_configRuleArn; }
110 
111     /**
112      * <p>The Amazon Resource Name (ARN) of the Config rule.</p>
113      */
ConfigRuleArnHasBeenSet()114     inline bool ConfigRuleArnHasBeenSet() const { return m_configRuleArnHasBeenSet; }
115 
116     /**
117      * <p>The Amazon Resource Name (ARN) of the Config rule.</p>
118      */
SetConfigRuleArn(const Aws::String & value)119     inline void SetConfigRuleArn(const Aws::String& value) { m_configRuleArnHasBeenSet = true; m_configRuleArn = value; }
120 
121     /**
122      * <p>The Amazon Resource Name (ARN) of the Config rule.</p>
123      */
SetConfigRuleArn(Aws::String && value)124     inline void SetConfigRuleArn(Aws::String&& value) { m_configRuleArnHasBeenSet = true; m_configRuleArn = std::move(value); }
125 
126     /**
127      * <p>The Amazon Resource Name (ARN) of the Config rule.</p>
128      */
SetConfigRuleArn(const char * value)129     inline void SetConfigRuleArn(const char* value) { m_configRuleArnHasBeenSet = true; m_configRuleArn.assign(value); }
130 
131     /**
132      * <p>The Amazon Resource Name (ARN) of the Config rule.</p>
133      */
WithConfigRuleArn(const Aws::String & value)134     inline ConfigRule& WithConfigRuleArn(const Aws::String& value) { SetConfigRuleArn(value); return *this;}
135 
136     /**
137      * <p>The Amazon Resource Name (ARN) of the Config rule.</p>
138      */
WithConfigRuleArn(Aws::String && value)139     inline ConfigRule& WithConfigRuleArn(Aws::String&& value) { SetConfigRuleArn(std::move(value)); return *this;}
140 
141     /**
142      * <p>The Amazon Resource Name (ARN) of the Config rule.</p>
143      */
WithConfigRuleArn(const char * value)144     inline ConfigRule& WithConfigRuleArn(const char* value) { SetConfigRuleArn(value); return *this;}
145 
146 
147     /**
148      * <p>The ID of the Config rule.</p>
149      */
GetConfigRuleId()150     inline const Aws::String& GetConfigRuleId() const{ return m_configRuleId; }
151 
152     /**
153      * <p>The ID of the Config rule.</p>
154      */
ConfigRuleIdHasBeenSet()155     inline bool ConfigRuleIdHasBeenSet() const { return m_configRuleIdHasBeenSet; }
156 
157     /**
158      * <p>The ID of the Config rule.</p>
159      */
SetConfigRuleId(const Aws::String & value)160     inline void SetConfigRuleId(const Aws::String& value) { m_configRuleIdHasBeenSet = true; m_configRuleId = value; }
161 
162     /**
163      * <p>The ID of the Config rule.</p>
164      */
SetConfigRuleId(Aws::String && value)165     inline void SetConfigRuleId(Aws::String&& value) { m_configRuleIdHasBeenSet = true; m_configRuleId = std::move(value); }
166 
167     /**
168      * <p>The ID of the Config rule.</p>
169      */
SetConfigRuleId(const char * value)170     inline void SetConfigRuleId(const char* value) { m_configRuleIdHasBeenSet = true; m_configRuleId.assign(value); }
171 
172     /**
173      * <p>The ID of the Config rule.</p>
174      */
WithConfigRuleId(const Aws::String & value)175     inline ConfigRule& WithConfigRuleId(const Aws::String& value) { SetConfigRuleId(value); return *this;}
176 
177     /**
178      * <p>The ID of the Config rule.</p>
179      */
WithConfigRuleId(Aws::String && value)180     inline ConfigRule& WithConfigRuleId(Aws::String&& value) { SetConfigRuleId(std::move(value)); return *this;}
181 
182     /**
183      * <p>The ID of the Config rule.</p>
184      */
WithConfigRuleId(const char * value)185     inline ConfigRule& WithConfigRuleId(const char* value) { SetConfigRuleId(value); return *this;}
186 
187 
188     /**
189      * <p>The description that you provide for the Config rule.</p>
190      */
GetDescription()191     inline const Aws::String& GetDescription() const{ return m_description; }
192 
193     /**
194      * <p>The description that you provide for the Config rule.</p>
195      */
DescriptionHasBeenSet()196     inline bool DescriptionHasBeenSet() const { return m_descriptionHasBeenSet; }
197 
198     /**
199      * <p>The description that you provide for the Config rule.</p>
200      */
SetDescription(const Aws::String & value)201     inline void SetDescription(const Aws::String& value) { m_descriptionHasBeenSet = true; m_description = value; }
202 
203     /**
204      * <p>The description that you provide for the Config rule.</p>
205      */
SetDescription(Aws::String && value)206     inline void SetDescription(Aws::String&& value) { m_descriptionHasBeenSet = true; m_description = std::move(value); }
207 
208     /**
209      * <p>The description that you provide for the Config rule.</p>
210      */
SetDescription(const char * value)211     inline void SetDescription(const char* value) { m_descriptionHasBeenSet = true; m_description.assign(value); }
212 
213     /**
214      * <p>The description that you provide for the Config rule.</p>
215      */
WithDescription(const Aws::String & value)216     inline ConfigRule& WithDescription(const Aws::String& value) { SetDescription(value); return *this;}
217 
218     /**
219      * <p>The description that you provide for the Config rule.</p>
220      */
WithDescription(Aws::String && value)221     inline ConfigRule& WithDescription(Aws::String&& value) { SetDescription(std::move(value)); return *this;}
222 
223     /**
224      * <p>The description that you provide for the Config rule.</p>
225      */
WithDescription(const char * value)226     inline ConfigRule& WithDescription(const char* value) { SetDescription(value); return *this;}
227 
228 
229     /**
230      * <p>Defines which resources can trigger an evaluation for the rule. The scope can
231      * include one or more resource types, a combination of one resource type and one
232      * resource ID, or a combination of a tag key and value. Specify a scope to
233      * constrain the resources that can trigger an evaluation for the rule. If you do
234      * not specify a scope, evaluations are triggered when any resource in the
235      * recording group changes.</p>  <p>The scope can be empty. </p>
236      */
GetScope()237     inline const Scope& GetScope() const{ return m_scope; }
238 
239     /**
240      * <p>Defines which resources can trigger an evaluation for the rule. The scope can
241      * include one or more resource types, a combination of one resource type and one
242      * resource ID, or a combination of a tag key and value. Specify a scope to
243      * constrain the resources that can trigger an evaluation for the rule. If you do
244      * not specify a scope, evaluations are triggered when any resource in the
245      * recording group changes.</p>  <p>The scope can be empty. </p>
246      */
ScopeHasBeenSet()247     inline bool ScopeHasBeenSet() const { return m_scopeHasBeenSet; }
248 
249     /**
250      * <p>Defines which resources can trigger an evaluation for the rule. The scope can
251      * include one or more resource types, a combination of one resource type and one
252      * resource ID, or a combination of a tag key and value. Specify a scope to
253      * constrain the resources that can trigger an evaluation for the rule. If you do
254      * not specify a scope, evaluations are triggered when any resource in the
255      * recording group changes.</p>  <p>The scope can be empty. </p>
256      */
SetScope(const Scope & value)257     inline void SetScope(const Scope& value) { m_scopeHasBeenSet = true; m_scope = value; }
258 
259     /**
260      * <p>Defines which resources can trigger an evaluation for the rule. The scope can
261      * include one or more resource types, a combination of one resource type and one
262      * resource ID, or a combination of a tag key and value. Specify a scope to
263      * constrain the resources that can trigger an evaluation for the rule. If you do
264      * not specify a scope, evaluations are triggered when any resource in the
265      * recording group changes.</p>  <p>The scope can be empty. </p>
266      */
SetScope(Scope && value)267     inline void SetScope(Scope&& value) { m_scopeHasBeenSet = true; m_scope = std::move(value); }
268 
269     /**
270      * <p>Defines which resources can trigger an evaluation for the rule. The scope can
271      * include one or more resource types, a combination of one resource type and one
272      * resource ID, or a combination of a tag key and value. Specify a scope to
273      * constrain the resources that can trigger an evaluation for the rule. If you do
274      * not specify a scope, evaluations are triggered when any resource in the
275      * recording group changes.</p>  <p>The scope can be empty. </p>
276      */
WithScope(const Scope & value)277     inline ConfigRule& WithScope(const Scope& value) { SetScope(value); return *this;}
278 
279     /**
280      * <p>Defines which resources can trigger an evaluation for the rule. The scope can
281      * include one or more resource types, a combination of one resource type and one
282      * resource ID, or a combination of a tag key and value. Specify a scope to
283      * constrain the resources that can trigger an evaluation for the rule. If you do
284      * not specify a scope, evaluations are triggered when any resource in the
285      * recording group changes.</p>  <p>The scope can be empty. </p>
286      */
WithScope(Scope && value)287     inline ConfigRule& WithScope(Scope&& value) { SetScope(std::move(value)); return *this;}
288 
289 
290     /**
291      * <p>Provides the rule owner (Amazon Web Services or customer), the rule
292      * identifier, and the notifications that cause the function to evaluate your
293      * Amazon Web Services resources.</p>
294      */
GetSource()295     inline const Source& GetSource() const{ return m_source; }
296 
297     /**
298      * <p>Provides the rule owner (Amazon Web Services or customer), the rule
299      * identifier, and the notifications that cause the function to evaluate your
300      * Amazon Web Services resources.</p>
301      */
SourceHasBeenSet()302     inline bool SourceHasBeenSet() const { return m_sourceHasBeenSet; }
303 
304     /**
305      * <p>Provides the rule owner (Amazon Web Services or customer), the rule
306      * identifier, and the notifications that cause the function to evaluate your
307      * Amazon Web Services resources.</p>
308      */
SetSource(const Source & value)309     inline void SetSource(const Source& value) { m_sourceHasBeenSet = true; m_source = value; }
310 
311     /**
312      * <p>Provides the rule owner (Amazon Web Services or customer), the rule
313      * identifier, and the notifications that cause the function to evaluate your
314      * Amazon Web Services resources.</p>
315      */
SetSource(Source && value)316     inline void SetSource(Source&& value) { m_sourceHasBeenSet = true; m_source = std::move(value); }
317 
318     /**
319      * <p>Provides the rule owner (Amazon Web Services or customer), the rule
320      * identifier, and the notifications that cause the function to evaluate your
321      * Amazon Web Services resources.</p>
322      */
WithSource(const Source & value)323     inline ConfigRule& WithSource(const Source& value) { SetSource(value); return *this;}
324 
325     /**
326      * <p>Provides the rule owner (Amazon Web Services or customer), the rule
327      * identifier, and the notifications that cause the function to evaluate your
328      * Amazon Web Services resources.</p>
329      */
WithSource(Source && value)330     inline ConfigRule& WithSource(Source&& value) { SetSource(std::move(value)); return *this;}
331 
332 
333     /**
334      * <p>A string, in JSON format, that is passed to the Config rule Lambda
335      * function.</p>
336      */
GetInputParameters()337     inline const Aws::String& GetInputParameters() const{ return m_inputParameters; }
338 
339     /**
340      * <p>A string, in JSON format, that is passed to the Config rule Lambda
341      * function.</p>
342      */
InputParametersHasBeenSet()343     inline bool InputParametersHasBeenSet() const { return m_inputParametersHasBeenSet; }
344 
345     /**
346      * <p>A string, in JSON format, that is passed to the Config rule Lambda
347      * function.</p>
348      */
SetInputParameters(const Aws::String & value)349     inline void SetInputParameters(const Aws::String& value) { m_inputParametersHasBeenSet = true; m_inputParameters = value; }
350 
351     /**
352      * <p>A string, in JSON format, that is passed to the Config rule Lambda
353      * function.</p>
354      */
SetInputParameters(Aws::String && value)355     inline void SetInputParameters(Aws::String&& value) { m_inputParametersHasBeenSet = true; m_inputParameters = std::move(value); }
356 
357     /**
358      * <p>A string, in JSON format, that is passed to the Config rule Lambda
359      * function.</p>
360      */
SetInputParameters(const char * value)361     inline void SetInputParameters(const char* value) { m_inputParametersHasBeenSet = true; m_inputParameters.assign(value); }
362 
363     /**
364      * <p>A string, in JSON format, that is passed to the Config rule Lambda
365      * function.</p>
366      */
WithInputParameters(const Aws::String & value)367     inline ConfigRule& WithInputParameters(const Aws::String& value) { SetInputParameters(value); return *this;}
368 
369     /**
370      * <p>A string, in JSON format, that is passed to the Config rule Lambda
371      * function.</p>
372      */
WithInputParameters(Aws::String && value)373     inline ConfigRule& WithInputParameters(Aws::String&& value) { SetInputParameters(std::move(value)); return *this;}
374 
375     /**
376      * <p>A string, in JSON format, that is passed to the Config rule Lambda
377      * function.</p>
378      */
WithInputParameters(const char * value)379     inline ConfigRule& WithInputParameters(const char* value) { SetInputParameters(value); return *this;}
380 
381 
382     /**
383      * <p>The maximum frequency with which Config runs evaluations for a rule. You can
384      * specify a value for <code>MaximumExecutionFrequency</code> when:</p> <ul> <li>
385      * <p>You are using an Config managed rule that is triggered at a periodic
386      * frequency.</p> </li> <li> <p>Your custom rule is triggered when Config delivers
387      * the configuration snapshot. For more information, see
388      * <a>ConfigSnapshotDeliveryProperties</a>.</p> </li> </ul>  <p>By default,
389      * rules with a periodic trigger are evaluated every 24 hours. To change the
390      * frequency, specify a valid value for the <code>MaximumExecutionFrequency</code>
391      * parameter.</p>
392      */
GetMaximumExecutionFrequency()393     inline const MaximumExecutionFrequency& GetMaximumExecutionFrequency() const{ return m_maximumExecutionFrequency; }
394 
395     /**
396      * <p>The maximum frequency with which Config runs evaluations for a rule. You can
397      * specify a value for <code>MaximumExecutionFrequency</code> when:</p> <ul> <li>
398      * <p>You are using an Config managed rule that is triggered at a periodic
399      * frequency.</p> </li> <li> <p>Your custom rule is triggered when Config delivers
400      * the configuration snapshot. For more information, see
401      * <a>ConfigSnapshotDeliveryProperties</a>.</p> </li> </ul>  <p>By default,
402      * rules with a periodic trigger are evaluated every 24 hours. To change the
403      * frequency, specify a valid value for the <code>MaximumExecutionFrequency</code>
404      * parameter.</p>
405      */
MaximumExecutionFrequencyHasBeenSet()406     inline bool MaximumExecutionFrequencyHasBeenSet() const { return m_maximumExecutionFrequencyHasBeenSet; }
407 
408     /**
409      * <p>The maximum frequency with which Config runs evaluations for a rule. You can
410      * specify a value for <code>MaximumExecutionFrequency</code> when:</p> <ul> <li>
411      * <p>You are using an Config managed rule that is triggered at a periodic
412      * frequency.</p> </li> <li> <p>Your custom rule is triggered when Config delivers
413      * the configuration snapshot. For more information, see
414      * <a>ConfigSnapshotDeliveryProperties</a>.</p> </li> </ul>  <p>By default,
415      * rules with a periodic trigger are evaluated every 24 hours. To change the
416      * frequency, specify a valid value for the <code>MaximumExecutionFrequency</code>
417      * parameter.</p>
418      */
SetMaximumExecutionFrequency(const MaximumExecutionFrequency & value)419     inline void SetMaximumExecutionFrequency(const MaximumExecutionFrequency& value) { m_maximumExecutionFrequencyHasBeenSet = true; m_maximumExecutionFrequency = value; }
420 
421     /**
422      * <p>The maximum frequency with which Config runs evaluations for a rule. You can
423      * specify a value for <code>MaximumExecutionFrequency</code> when:</p> <ul> <li>
424      * <p>You are using an Config managed rule that is triggered at a periodic
425      * frequency.</p> </li> <li> <p>Your custom rule is triggered when Config delivers
426      * the configuration snapshot. For more information, see
427      * <a>ConfigSnapshotDeliveryProperties</a>.</p> </li> </ul>  <p>By default,
428      * rules with a periodic trigger are evaluated every 24 hours. To change the
429      * frequency, specify a valid value for the <code>MaximumExecutionFrequency</code>
430      * parameter.</p>
431      */
SetMaximumExecutionFrequency(MaximumExecutionFrequency && value)432     inline void SetMaximumExecutionFrequency(MaximumExecutionFrequency&& value) { m_maximumExecutionFrequencyHasBeenSet = true; m_maximumExecutionFrequency = std::move(value); }
433 
434     /**
435      * <p>The maximum frequency with which Config runs evaluations for a rule. You can
436      * specify a value for <code>MaximumExecutionFrequency</code> when:</p> <ul> <li>
437      * <p>You are using an Config managed rule that is triggered at a periodic
438      * frequency.</p> </li> <li> <p>Your custom rule is triggered when Config delivers
439      * the configuration snapshot. For more information, see
440      * <a>ConfigSnapshotDeliveryProperties</a>.</p> </li> </ul>  <p>By default,
441      * rules with a periodic trigger are evaluated every 24 hours. To change the
442      * frequency, specify a valid value for the <code>MaximumExecutionFrequency</code>
443      * parameter.</p>
444      */
WithMaximumExecutionFrequency(const MaximumExecutionFrequency & value)445     inline ConfigRule& WithMaximumExecutionFrequency(const MaximumExecutionFrequency& value) { SetMaximumExecutionFrequency(value); return *this;}
446 
447     /**
448      * <p>The maximum frequency with which Config runs evaluations for a rule. You can
449      * specify a value for <code>MaximumExecutionFrequency</code> when:</p> <ul> <li>
450      * <p>You are using an Config managed rule that is triggered at a periodic
451      * frequency.</p> </li> <li> <p>Your custom rule is triggered when Config delivers
452      * the configuration snapshot. For more information, see
453      * <a>ConfigSnapshotDeliveryProperties</a>.</p> </li> </ul>  <p>By default,
454      * rules with a periodic trigger are evaluated every 24 hours. To change the
455      * frequency, specify a valid value for the <code>MaximumExecutionFrequency</code>
456      * parameter.</p>
457      */
WithMaximumExecutionFrequency(MaximumExecutionFrequency && value)458     inline ConfigRule& WithMaximumExecutionFrequency(MaximumExecutionFrequency&& value) { SetMaximumExecutionFrequency(std::move(value)); return *this;}
459 
460 
461     /**
462      * <p>Indicates whether the Config rule is active or is currently being deleted by
463      * Config. It can also indicate the evaluation status for the Config rule.</p>
464      * <p>Config sets the state of the rule to <code>EVALUATING</code> temporarily
465      * after you use the <code>StartConfigRulesEvaluation</code> request to evaluate
466      * your resources against the Config rule.</p> <p>Config sets the state of the rule
467      * to <code>DELETING_RESULTS</code> temporarily after you use the
468      * <code>DeleteEvaluationResults</code> request to delete the current evaluation
469      * results for the Config rule.</p> <p>Config temporarily sets the state of a rule
470      * to <code>DELETING</code> after you use the <code>DeleteConfigRule</code> request
471      * to delete the rule. After Config deletes the rule, the rule and all of its
472      * evaluations are erased and are no longer available.</p>
473      */
GetConfigRuleState()474     inline const ConfigRuleState& GetConfigRuleState() const{ return m_configRuleState; }
475 
476     /**
477      * <p>Indicates whether the Config rule is active or is currently being deleted by
478      * Config. It can also indicate the evaluation status for the Config rule.</p>
479      * <p>Config sets the state of the rule to <code>EVALUATING</code> temporarily
480      * after you use the <code>StartConfigRulesEvaluation</code> request to evaluate
481      * your resources against the Config rule.</p> <p>Config sets the state of the rule
482      * to <code>DELETING_RESULTS</code> temporarily after you use the
483      * <code>DeleteEvaluationResults</code> request to delete the current evaluation
484      * results for the Config rule.</p> <p>Config temporarily sets the state of a rule
485      * to <code>DELETING</code> after you use the <code>DeleteConfigRule</code> request
486      * to delete the rule. After Config deletes the rule, the rule and all of its
487      * evaluations are erased and are no longer available.</p>
488      */
ConfigRuleStateHasBeenSet()489     inline bool ConfigRuleStateHasBeenSet() const { return m_configRuleStateHasBeenSet; }
490 
491     /**
492      * <p>Indicates whether the Config rule is active or is currently being deleted by
493      * Config. It can also indicate the evaluation status for the Config rule.</p>
494      * <p>Config sets the state of the rule to <code>EVALUATING</code> temporarily
495      * after you use the <code>StartConfigRulesEvaluation</code> request to evaluate
496      * your resources against the Config rule.</p> <p>Config sets the state of the rule
497      * to <code>DELETING_RESULTS</code> temporarily after you use the
498      * <code>DeleteEvaluationResults</code> request to delete the current evaluation
499      * results for the Config rule.</p> <p>Config temporarily sets the state of a rule
500      * to <code>DELETING</code> after you use the <code>DeleteConfigRule</code> request
501      * to delete the rule. After Config deletes the rule, the rule and all of its
502      * evaluations are erased and are no longer available.</p>
503      */
SetConfigRuleState(const ConfigRuleState & value)504     inline void SetConfigRuleState(const ConfigRuleState& value) { m_configRuleStateHasBeenSet = true; m_configRuleState = value; }
505 
506     /**
507      * <p>Indicates whether the Config rule is active or is currently being deleted by
508      * Config. It can also indicate the evaluation status for the Config rule.</p>
509      * <p>Config sets the state of the rule to <code>EVALUATING</code> temporarily
510      * after you use the <code>StartConfigRulesEvaluation</code> request to evaluate
511      * your resources against the Config rule.</p> <p>Config sets the state of the rule
512      * to <code>DELETING_RESULTS</code> temporarily after you use the
513      * <code>DeleteEvaluationResults</code> request to delete the current evaluation
514      * results for the Config rule.</p> <p>Config temporarily sets the state of a rule
515      * to <code>DELETING</code> after you use the <code>DeleteConfigRule</code> request
516      * to delete the rule. After Config deletes the rule, the rule and all of its
517      * evaluations are erased and are no longer available.</p>
518      */
SetConfigRuleState(ConfigRuleState && value)519     inline void SetConfigRuleState(ConfigRuleState&& value) { m_configRuleStateHasBeenSet = true; m_configRuleState = std::move(value); }
520 
521     /**
522      * <p>Indicates whether the Config rule is active or is currently being deleted by
523      * Config. It can also indicate the evaluation status for the Config rule.</p>
524      * <p>Config sets the state of the rule to <code>EVALUATING</code> temporarily
525      * after you use the <code>StartConfigRulesEvaluation</code> request to evaluate
526      * your resources against the Config rule.</p> <p>Config sets the state of the rule
527      * to <code>DELETING_RESULTS</code> temporarily after you use the
528      * <code>DeleteEvaluationResults</code> request to delete the current evaluation
529      * results for the Config rule.</p> <p>Config temporarily sets the state of a rule
530      * to <code>DELETING</code> after you use the <code>DeleteConfigRule</code> request
531      * to delete the rule. After Config deletes the rule, the rule and all of its
532      * evaluations are erased and are no longer available.</p>
533      */
WithConfigRuleState(const ConfigRuleState & value)534     inline ConfigRule& WithConfigRuleState(const ConfigRuleState& value) { SetConfigRuleState(value); return *this;}
535 
536     /**
537      * <p>Indicates whether the Config rule is active or is currently being deleted by
538      * Config. It can also indicate the evaluation status for the Config rule.</p>
539      * <p>Config sets the state of the rule to <code>EVALUATING</code> temporarily
540      * after you use the <code>StartConfigRulesEvaluation</code> request to evaluate
541      * your resources against the Config rule.</p> <p>Config sets the state of the rule
542      * to <code>DELETING_RESULTS</code> temporarily after you use the
543      * <code>DeleteEvaluationResults</code> request to delete the current evaluation
544      * results for the Config rule.</p> <p>Config temporarily sets the state of a rule
545      * to <code>DELETING</code> after you use the <code>DeleteConfigRule</code> request
546      * to delete the rule. After Config deletes the rule, the rule and all of its
547      * evaluations are erased and are no longer available.</p>
548      */
WithConfigRuleState(ConfigRuleState && value)549     inline ConfigRule& WithConfigRuleState(ConfigRuleState&& value) { SetConfigRuleState(std::move(value)); return *this;}
550 
551 
552     /**
553      * <p>Service principal name of the service that created the rule.</p>
554      * <p>The field is populated only if the service linked rule is created by a
555      * service. The field is empty if you create your own rule.</p>
556      */
GetCreatedBy()557     inline const Aws::String& GetCreatedBy() const{ return m_createdBy; }
558 
559     /**
560      * <p>Service principal name of the service that created the rule.</p>
561      * <p>The field is populated only if the service linked rule is created by a
562      * service. The field is empty if you create your own rule.</p>
563      */
CreatedByHasBeenSet()564     inline bool CreatedByHasBeenSet() const { return m_createdByHasBeenSet; }
565 
566     /**
567      * <p>Service principal name of the service that created the rule.</p>
568      * <p>The field is populated only if the service linked rule is created by a
569      * service. The field is empty if you create your own rule.</p>
570      */
SetCreatedBy(const Aws::String & value)571     inline void SetCreatedBy(const Aws::String& value) { m_createdByHasBeenSet = true; m_createdBy = value; }
572 
573     /**
574      * <p>Service principal name of the service that created the rule.</p>
575      * <p>The field is populated only if the service linked rule is created by a
576      * service. The field is empty if you create your own rule.</p>
577      */
SetCreatedBy(Aws::String && value)578     inline void SetCreatedBy(Aws::String&& value) { m_createdByHasBeenSet = true; m_createdBy = std::move(value); }
579 
580     /**
581      * <p>Service principal name of the service that created the rule.</p>
582      * <p>The field is populated only if the service linked rule is created by a
583      * service. The field is empty if you create your own rule.</p>
584      */
SetCreatedBy(const char * value)585     inline void SetCreatedBy(const char* value) { m_createdByHasBeenSet = true; m_createdBy.assign(value); }
586 
587     /**
588      * <p>Service principal name of the service that created the rule.</p>
589      * <p>The field is populated only if the service linked rule is created by a
590      * service. The field is empty if you create your own rule.</p>
591      */
WithCreatedBy(const Aws::String & value)592     inline ConfigRule& WithCreatedBy(const Aws::String& value) { SetCreatedBy(value); return *this;}
593 
594     /**
595      * <p>Service principal name of the service that created the rule.</p>
596      * <p>The field is populated only if the service linked rule is created by a
597      * service. The field is empty if you create your own rule.</p>
598      */
WithCreatedBy(Aws::String && value)599     inline ConfigRule& WithCreatedBy(Aws::String&& value) { SetCreatedBy(std::move(value)); return *this;}
600 
601     /**
602      * <p>Service principal name of the service that created the rule.</p>
603      * <p>The field is populated only if the service linked rule is created by a
604      * service. The field is empty if you create your own rule.</p>
605      */
WithCreatedBy(const char * value)606     inline ConfigRule& WithCreatedBy(const char* value) { SetCreatedBy(value); return *this;}
607 
608   private:
609 
610     Aws::String m_configRuleName;
611     bool m_configRuleNameHasBeenSet;
612 
613     Aws::String m_configRuleArn;
614     bool m_configRuleArnHasBeenSet;
615 
616     Aws::String m_configRuleId;
617     bool m_configRuleIdHasBeenSet;
618 
619     Aws::String m_description;
620     bool m_descriptionHasBeenSet;
621 
622     Scope m_scope;
623     bool m_scopeHasBeenSet;
624 
625     Source m_source;
626     bool m_sourceHasBeenSet;
627 
628     Aws::String m_inputParameters;
629     bool m_inputParametersHasBeenSet;
630 
631     MaximumExecutionFrequency m_maximumExecutionFrequency;
632     bool m_maximumExecutionFrequencyHasBeenSet;
633 
634     ConfigRuleState m_configRuleState;
635     bool m_configRuleStateHasBeenSet;
636 
637     Aws::String m_createdBy;
638     bool m_createdByHasBeenSet;
639   };
640 
641 } // namespace Model
642 } // namespace ConfigService
643 } // namespace Aws
644