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/macie2/Macie2_EXPORTS.h> 8 #include <aws/core/utils/memory/stl/AWSVector.h> 9 #include <aws/macie2/model/Scoping.h> 10 #include <aws/macie2/model/S3BucketCriteriaForJob.h> 11 #include <aws/macie2/model/S3BucketDefinitionForJob.h> 12 #include <utility> 13 14 namespace Aws 15 { 16 namespace Utils 17 { 18 namespace Json 19 { 20 class JsonValue; 21 class JsonView; 22 } // namespace Json 23 } // namespace Utils 24 namespace Macie2 25 { 26 namespace Model 27 { 28 29 /** 30 * <p>Specifies which S3 buckets contain the objects that a classification job 31 * analyzes, and the scope of that analysis. The bucket specification can be static 32 * (bucketDefinitions) or dynamic (bucketCriteria). If it's static, the job 33 * analyzes objects in the same predefined set of buckets each time the job runs. 34 * If it's dynamic, the job analyzes objects in any buckets that match the 35 * specified criteria each time the job starts to run.</p><p><h3>See Also:</h3> 36 * <a 37 * href="http://docs.aws.amazon.com/goto/WebAPI/macie2-2020-01-01/S3JobDefinition">AWS 38 * API Reference</a></p> 39 */ 40 class AWS_MACIE2_API S3JobDefinition 41 { 42 public: 43 S3JobDefinition(); 44 S3JobDefinition(Aws::Utils::Json::JsonView jsonValue); 45 S3JobDefinition& operator=(Aws::Utils::Json::JsonView jsonValue); 46 Aws::Utils::Json::JsonValue Jsonize() const; 47 48 49 /** 50 * <p>An array of objects, one for each Amazon Web Services account that owns 51 * specific S3 buckets to analyze. Each object specifies the account ID for an 52 * account and one or more buckets to analyze for that account. A job's definition 53 * can contain a bucketDefinitions array or a bucketCriteria object, not both.</p> 54 */ GetBucketDefinitions()55 inline const Aws::Vector<S3BucketDefinitionForJob>& GetBucketDefinitions() const{ return m_bucketDefinitions; } 56 57 /** 58 * <p>An array of objects, one for each Amazon Web Services account that owns 59 * specific S3 buckets to analyze. Each object specifies the account ID for an 60 * account and one or more buckets to analyze for that account. A job's definition 61 * can contain a bucketDefinitions array or a bucketCriteria object, not both.</p> 62 */ BucketDefinitionsHasBeenSet()63 inline bool BucketDefinitionsHasBeenSet() const { return m_bucketDefinitionsHasBeenSet; } 64 65 /** 66 * <p>An array of objects, one for each Amazon Web Services account that owns 67 * specific S3 buckets to analyze. Each object specifies the account ID for an 68 * account and one or more buckets to analyze for that account. A job's definition 69 * can contain a bucketDefinitions array or a bucketCriteria object, not both.</p> 70 */ SetBucketDefinitions(const Aws::Vector<S3BucketDefinitionForJob> & value)71 inline void SetBucketDefinitions(const Aws::Vector<S3BucketDefinitionForJob>& value) { m_bucketDefinitionsHasBeenSet = true; m_bucketDefinitions = value; } 72 73 /** 74 * <p>An array of objects, one for each Amazon Web Services account that owns 75 * specific S3 buckets to analyze. Each object specifies the account ID for an 76 * account and one or more buckets to analyze for that account. A job's definition 77 * can contain a bucketDefinitions array or a bucketCriteria object, not both.</p> 78 */ SetBucketDefinitions(Aws::Vector<S3BucketDefinitionForJob> && value)79 inline void SetBucketDefinitions(Aws::Vector<S3BucketDefinitionForJob>&& value) { m_bucketDefinitionsHasBeenSet = true; m_bucketDefinitions = std::move(value); } 80 81 /** 82 * <p>An array of objects, one for each Amazon Web Services account that owns 83 * specific S3 buckets to analyze. Each object specifies the account ID for an 84 * account and one or more buckets to analyze for that account. A job's definition 85 * can contain a bucketDefinitions array or a bucketCriteria object, not both.</p> 86 */ WithBucketDefinitions(const Aws::Vector<S3BucketDefinitionForJob> & value)87 inline S3JobDefinition& WithBucketDefinitions(const Aws::Vector<S3BucketDefinitionForJob>& value) { SetBucketDefinitions(value); return *this;} 88 89 /** 90 * <p>An array of objects, one for each Amazon Web Services account that owns 91 * specific S3 buckets to analyze. Each object specifies the account ID for an 92 * account and one or more buckets to analyze for that account. A job's definition 93 * can contain a bucketDefinitions array or a bucketCriteria object, not both.</p> 94 */ WithBucketDefinitions(Aws::Vector<S3BucketDefinitionForJob> && value)95 inline S3JobDefinition& WithBucketDefinitions(Aws::Vector<S3BucketDefinitionForJob>&& value) { SetBucketDefinitions(std::move(value)); return *this;} 96 97 /** 98 * <p>An array of objects, one for each Amazon Web Services account that owns 99 * specific S3 buckets to analyze. Each object specifies the account ID for an 100 * account and one or more buckets to analyze for that account. A job's definition 101 * can contain a bucketDefinitions array or a bucketCriteria object, not both.</p> 102 */ AddBucketDefinitions(const S3BucketDefinitionForJob & value)103 inline S3JobDefinition& AddBucketDefinitions(const S3BucketDefinitionForJob& value) { m_bucketDefinitionsHasBeenSet = true; m_bucketDefinitions.push_back(value); return *this; } 104 105 /** 106 * <p>An array of objects, one for each Amazon Web Services account that owns 107 * specific S3 buckets to analyze. Each object specifies the account ID for an 108 * account and one or more buckets to analyze for that account. A job's definition 109 * can contain a bucketDefinitions array or a bucketCriteria object, not both.</p> 110 */ AddBucketDefinitions(S3BucketDefinitionForJob && value)111 inline S3JobDefinition& AddBucketDefinitions(S3BucketDefinitionForJob&& value) { m_bucketDefinitionsHasBeenSet = true; m_bucketDefinitions.push_back(std::move(value)); return *this; } 112 113 114 /** 115 * <p>The property- and tag-based conditions that determine which S3 objects to 116 * include or exclude from the analysis. Each time the job runs, the job uses these 117 * criteria to determine which objects to analyze.</p> 118 */ GetScoping()119 inline const Scoping& GetScoping() const{ return m_scoping; } 120 121 /** 122 * <p>The property- and tag-based conditions that determine which S3 objects to 123 * include or exclude from the analysis. Each time the job runs, the job uses these 124 * criteria to determine which objects to analyze.</p> 125 */ ScopingHasBeenSet()126 inline bool ScopingHasBeenSet() const { return m_scopingHasBeenSet; } 127 128 /** 129 * <p>The property- and tag-based conditions that determine which S3 objects to 130 * include or exclude from the analysis. Each time the job runs, the job uses these 131 * criteria to determine which objects to analyze.</p> 132 */ SetScoping(const Scoping & value)133 inline void SetScoping(const Scoping& value) { m_scopingHasBeenSet = true; m_scoping = value; } 134 135 /** 136 * <p>The property- and tag-based conditions that determine which S3 objects to 137 * include or exclude from the analysis. Each time the job runs, the job uses these 138 * criteria to determine which objects to analyze.</p> 139 */ SetScoping(Scoping && value)140 inline void SetScoping(Scoping&& value) { m_scopingHasBeenSet = true; m_scoping = std::move(value); } 141 142 /** 143 * <p>The property- and tag-based conditions that determine which S3 objects to 144 * include or exclude from the analysis. Each time the job runs, the job uses these 145 * criteria to determine which objects to analyze.</p> 146 */ WithScoping(const Scoping & value)147 inline S3JobDefinition& WithScoping(const Scoping& value) { SetScoping(value); return *this;} 148 149 /** 150 * <p>The property- and tag-based conditions that determine which S3 objects to 151 * include or exclude from the analysis. Each time the job runs, the job uses these 152 * criteria to determine which objects to analyze.</p> 153 */ WithScoping(Scoping && value)154 inline S3JobDefinition& WithScoping(Scoping&& value) { SetScoping(std::move(value)); return *this;} 155 156 157 /** 158 * <p>The property- and tag-based conditions that determine which S3 buckets to 159 * include or exclude from the analysis. Each time the job runs, the job uses these 160 * criteria to determine which buckets contain objects to analyze. A job's 161 * definition can contain a bucketCriteria object or a bucketDefinitions array, not 162 * both.</p> 163 */ GetBucketCriteria()164 inline const S3BucketCriteriaForJob& GetBucketCriteria() const{ return m_bucketCriteria; } 165 166 /** 167 * <p>The property- and tag-based conditions that determine which S3 buckets to 168 * include or exclude from the analysis. Each time the job runs, the job uses these 169 * criteria to determine which buckets contain objects to analyze. A job's 170 * definition can contain a bucketCriteria object or a bucketDefinitions array, not 171 * both.</p> 172 */ BucketCriteriaHasBeenSet()173 inline bool BucketCriteriaHasBeenSet() const { return m_bucketCriteriaHasBeenSet; } 174 175 /** 176 * <p>The property- and tag-based conditions that determine which S3 buckets to 177 * include or exclude from the analysis. Each time the job runs, the job uses these 178 * criteria to determine which buckets contain objects to analyze. A job's 179 * definition can contain a bucketCriteria object or a bucketDefinitions array, not 180 * both.</p> 181 */ SetBucketCriteria(const S3BucketCriteriaForJob & value)182 inline void SetBucketCriteria(const S3BucketCriteriaForJob& value) { m_bucketCriteriaHasBeenSet = true; m_bucketCriteria = value; } 183 184 /** 185 * <p>The property- and tag-based conditions that determine which S3 buckets to 186 * include or exclude from the analysis. Each time the job runs, the job uses these 187 * criteria to determine which buckets contain objects to analyze. A job's 188 * definition can contain a bucketCriteria object or a bucketDefinitions array, not 189 * both.</p> 190 */ SetBucketCriteria(S3BucketCriteriaForJob && value)191 inline void SetBucketCriteria(S3BucketCriteriaForJob&& value) { m_bucketCriteriaHasBeenSet = true; m_bucketCriteria = std::move(value); } 192 193 /** 194 * <p>The property- and tag-based conditions that determine which S3 buckets to 195 * include or exclude from the analysis. Each time the job runs, the job uses these 196 * criteria to determine which buckets contain objects to analyze. A job's 197 * definition can contain a bucketCriteria object or a bucketDefinitions array, not 198 * both.</p> 199 */ WithBucketCriteria(const S3BucketCriteriaForJob & value)200 inline S3JobDefinition& WithBucketCriteria(const S3BucketCriteriaForJob& value) { SetBucketCriteria(value); return *this;} 201 202 /** 203 * <p>The property- and tag-based conditions that determine which S3 buckets to 204 * include or exclude from the analysis. Each time the job runs, the job uses these 205 * criteria to determine which buckets contain objects to analyze. A job's 206 * definition can contain a bucketCriteria object or a bucketDefinitions array, not 207 * both.</p> 208 */ WithBucketCriteria(S3BucketCriteriaForJob && value)209 inline S3JobDefinition& WithBucketCriteria(S3BucketCriteriaForJob&& value) { SetBucketCriteria(std::move(value)); return *this;} 210 211 private: 212 213 Aws::Vector<S3BucketDefinitionForJob> m_bucketDefinitions; 214 bool m_bucketDefinitionsHasBeenSet; 215 216 Scoping m_scoping; 217 bool m_scopingHasBeenSet; 218 219 S3BucketCriteriaForJob m_bucketCriteria; 220 bool m_bucketCriteriaHasBeenSet; 221 }; 222 223 } // namespace Model 224 } // namespace Macie2 225 } // namespace Aws 226