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/sagemaker/SageMaker_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <utility>
10 
11 namespace Aws
12 {
13 namespace Utils
14 {
15 namespace Json
16 {
17   class JsonValue;
18   class JsonView;
19 } // namespace Json
20 } // namespace Utils
21 namespace SageMaker
22 {
23 namespace Model
24 {
25 
26   /**
27    * <p>Output configuration information for a labeling job.</p><p><h3>See Also:</h3>
28    * <a
29    * href="http://docs.aws.amazon.com/goto/WebAPI/sagemaker-2017-07-24/LabelingJobOutputConfig">AWS
30    * API Reference</a></p>
31    */
32   class AWS_SAGEMAKER_API LabelingJobOutputConfig
33   {
34   public:
35     LabelingJobOutputConfig();
36     LabelingJobOutputConfig(Aws::Utils::Json::JsonView jsonValue);
37     LabelingJobOutputConfig& operator=(Aws::Utils::Json::JsonView jsonValue);
38     Aws::Utils::Json::JsonValue Jsonize() const;
39 
40 
41     /**
42      * <p>The Amazon S3 location to write output data.</p>
43      */
GetS3OutputPath()44     inline const Aws::String& GetS3OutputPath() const{ return m_s3OutputPath; }
45 
46     /**
47      * <p>The Amazon S3 location to write output data.</p>
48      */
S3OutputPathHasBeenSet()49     inline bool S3OutputPathHasBeenSet() const { return m_s3OutputPathHasBeenSet; }
50 
51     /**
52      * <p>The Amazon S3 location to write output data.</p>
53      */
SetS3OutputPath(const Aws::String & value)54     inline void SetS3OutputPath(const Aws::String& value) { m_s3OutputPathHasBeenSet = true; m_s3OutputPath = value; }
55 
56     /**
57      * <p>The Amazon S3 location to write output data.</p>
58      */
SetS3OutputPath(Aws::String && value)59     inline void SetS3OutputPath(Aws::String&& value) { m_s3OutputPathHasBeenSet = true; m_s3OutputPath = std::move(value); }
60 
61     /**
62      * <p>The Amazon S3 location to write output data.</p>
63      */
SetS3OutputPath(const char * value)64     inline void SetS3OutputPath(const char* value) { m_s3OutputPathHasBeenSet = true; m_s3OutputPath.assign(value); }
65 
66     /**
67      * <p>The Amazon S3 location to write output data.</p>
68      */
WithS3OutputPath(const Aws::String & value)69     inline LabelingJobOutputConfig& WithS3OutputPath(const Aws::String& value) { SetS3OutputPath(value); return *this;}
70 
71     /**
72      * <p>The Amazon S3 location to write output data.</p>
73      */
WithS3OutputPath(Aws::String && value)74     inline LabelingJobOutputConfig& WithS3OutputPath(Aws::String&& value) { SetS3OutputPath(std::move(value)); return *this;}
75 
76     /**
77      * <p>The Amazon S3 location to write output data.</p>
78      */
WithS3OutputPath(const char * value)79     inline LabelingJobOutputConfig& WithS3OutputPath(const char* value) { SetS3OutputPath(value); return *this;}
80 
81 
82     /**
83      * <p>The Amazon Web Services Key Management Service ID of the key used to encrypt
84      * the output data, if any.</p> <p>If you provide your own KMS key ID, you must add
85      * the required permissions to your KMS key described in <a
86      * href="https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security-permission.html#sms-security-kms-permissions">Encrypt
87      * Output Data and Storage Volume with Amazon Web Services KMS</a>.</p> <p>If you
88      * don't provide a KMS key ID, Amazon SageMaker uses the default Amazon Web
89      * Services KMS key for Amazon S3 for your role's account to encrypt your output
90      * data.</p> <p>If you use a bucket policy with an <code>s3:PutObject</code>
91      * permission that only allows objects with server-side encryption, set the
92      * condition key of <code>s3:x-amz-server-side-encryption</code> to
93      * <code>"aws:kms"</code>. For more information, see <a
94      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">KMS-Managed
95      * Encryption Keys</a> in the <i>Amazon Simple Storage Service Developer Guide.</i>
96      * </p>
97      */
GetKmsKeyId()98     inline const Aws::String& GetKmsKeyId() const{ return m_kmsKeyId; }
99 
100     /**
101      * <p>The Amazon Web Services Key Management Service ID of the key used to encrypt
102      * the output data, if any.</p> <p>If you provide your own KMS key ID, you must add
103      * the required permissions to your KMS key described in <a
104      * href="https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security-permission.html#sms-security-kms-permissions">Encrypt
105      * Output Data and Storage Volume with Amazon Web Services KMS</a>.</p> <p>If you
106      * don't provide a KMS key ID, Amazon SageMaker uses the default Amazon Web
107      * Services KMS key for Amazon S3 for your role's account to encrypt your output
108      * data.</p> <p>If you use a bucket policy with an <code>s3:PutObject</code>
109      * permission that only allows objects with server-side encryption, set the
110      * condition key of <code>s3:x-amz-server-side-encryption</code> to
111      * <code>"aws:kms"</code>. For more information, see <a
112      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">KMS-Managed
113      * Encryption Keys</a> in the <i>Amazon Simple Storage Service Developer Guide.</i>
114      * </p>
115      */
KmsKeyIdHasBeenSet()116     inline bool KmsKeyIdHasBeenSet() const { return m_kmsKeyIdHasBeenSet; }
117 
118     /**
119      * <p>The Amazon Web Services Key Management Service ID of the key used to encrypt
120      * the output data, if any.</p> <p>If you provide your own KMS key ID, you must add
121      * the required permissions to your KMS key described in <a
122      * href="https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security-permission.html#sms-security-kms-permissions">Encrypt
123      * Output Data and Storage Volume with Amazon Web Services KMS</a>.</p> <p>If you
124      * don't provide a KMS key ID, Amazon SageMaker uses the default Amazon Web
125      * Services KMS key for Amazon S3 for your role's account to encrypt your output
126      * data.</p> <p>If you use a bucket policy with an <code>s3:PutObject</code>
127      * permission that only allows objects with server-side encryption, set the
128      * condition key of <code>s3:x-amz-server-side-encryption</code> to
129      * <code>"aws:kms"</code>. For more information, see <a
130      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">KMS-Managed
131      * Encryption Keys</a> in the <i>Amazon Simple Storage Service Developer Guide.</i>
132      * </p>
133      */
SetKmsKeyId(const Aws::String & value)134     inline void SetKmsKeyId(const Aws::String& value) { m_kmsKeyIdHasBeenSet = true; m_kmsKeyId = value; }
135 
136     /**
137      * <p>The Amazon Web Services Key Management Service ID of the key used to encrypt
138      * the output data, if any.</p> <p>If you provide your own KMS key ID, you must add
139      * the required permissions to your KMS key described in <a
140      * href="https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security-permission.html#sms-security-kms-permissions">Encrypt
141      * Output Data and Storage Volume with Amazon Web Services KMS</a>.</p> <p>If you
142      * don't provide a KMS key ID, Amazon SageMaker uses the default Amazon Web
143      * Services KMS key for Amazon S3 for your role's account to encrypt your output
144      * data.</p> <p>If you use a bucket policy with an <code>s3:PutObject</code>
145      * permission that only allows objects with server-side encryption, set the
146      * condition key of <code>s3:x-amz-server-side-encryption</code> to
147      * <code>"aws:kms"</code>. For more information, see <a
148      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">KMS-Managed
149      * Encryption Keys</a> in the <i>Amazon Simple Storage Service Developer Guide.</i>
150      * </p>
151      */
SetKmsKeyId(Aws::String && value)152     inline void SetKmsKeyId(Aws::String&& value) { m_kmsKeyIdHasBeenSet = true; m_kmsKeyId = std::move(value); }
153 
154     /**
155      * <p>The Amazon Web Services Key Management Service ID of the key used to encrypt
156      * the output data, if any.</p> <p>If you provide your own KMS key ID, you must add
157      * the required permissions to your KMS key described in <a
158      * href="https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security-permission.html#sms-security-kms-permissions">Encrypt
159      * Output Data and Storage Volume with Amazon Web Services KMS</a>.</p> <p>If you
160      * don't provide a KMS key ID, Amazon SageMaker uses the default Amazon Web
161      * Services KMS key for Amazon S3 for your role's account to encrypt your output
162      * data.</p> <p>If you use a bucket policy with an <code>s3:PutObject</code>
163      * permission that only allows objects with server-side encryption, set the
164      * condition key of <code>s3:x-amz-server-side-encryption</code> to
165      * <code>"aws:kms"</code>. For more information, see <a
166      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">KMS-Managed
167      * Encryption Keys</a> in the <i>Amazon Simple Storage Service Developer Guide.</i>
168      * </p>
169      */
SetKmsKeyId(const char * value)170     inline void SetKmsKeyId(const char* value) { m_kmsKeyIdHasBeenSet = true; m_kmsKeyId.assign(value); }
171 
172     /**
173      * <p>The Amazon Web Services Key Management Service ID of the key used to encrypt
174      * the output data, if any.</p> <p>If you provide your own KMS key ID, you must add
175      * the required permissions to your KMS key described in <a
176      * href="https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security-permission.html#sms-security-kms-permissions">Encrypt
177      * Output Data and Storage Volume with Amazon Web Services KMS</a>.</p> <p>If you
178      * don't provide a KMS key ID, Amazon SageMaker uses the default Amazon Web
179      * Services KMS key for Amazon S3 for your role's account to encrypt your output
180      * data.</p> <p>If you use a bucket policy with an <code>s3:PutObject</code>
181      * permission that only allows objects with server-side encryption, set the
182      * condition key of <code>s3:x-amz-server-side-encryption</code> to
183      * <code>"aws:kms"</code>. For more information, see <a
184      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">KMS-Managed
185      * Encryption Keys</a> in the <i>Amazon Simple Storage Service Developer Guide.</i>
186      * </p>
187      */
WithKmsKeyId(const Aws::String & value)188     inline LabelingJobOutputConfig& WithKmsKeyId(const Aws::String& value) { SetKmsKeyId(value); return *this;}
189 
190     /**
191      * <p>The Amazon Web Services Key Management Service ID of the key used to encrypt
192      * the output data, if any.</p> <p>If you provide your own KMS key ID, you must add
193      * the required permissions to your KMS key described in <a
194      * href="https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security-permission.html#sms-security-kms-permissions">Encrypt
195      * Output Data and Storage Volume with Amazon Web Services KMS</a>.</p> <p>If you
196      * don't provide a KMS key ID, Amazon SageMaker uses the default Amazon Web
197      * Services KMS key for Amazon S3 for your role's account to encrypt your output
198      * data.</p> <p>If you use a bucket policy with an <code>s3:PutObject</code>
199      * permission that only allows objects with server-side encryption, set the
200      * condition key of <code>s3:x-amz-server-side-encryption</code> to
201      * <code>"aws:kms"</code>. For more information, see <a
202      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">KMS-Managed
203      * Encryption Keys</a> in the <i>Amazon Simple Storage Service Developer Guide.</i>
204      * </p>
205      */
WithKmsKeyId(Aws::String && value)206     inline LabelingJobOutputConfig& WithKmsKeyId(Aws::String&& value) { SetKmsKeyId(std::move(value)); return *this;}
207 
208     /**
209      * <p>The Amazon Web Services Key Management Service ID of the key used to encrypt
210      * the output data, if any.</p> <p>If you provide your own KMS key ID, you must add
211      * the required permissions to your KMS key described in <a
212      * href="https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security-permission.html#sms-security-kms-permissions">Encrypt
213      * Output Data and Storage Volume with Amazon Web Services KMS</a>.</p> <p>If you
214      * don't provide a KMS key ID, Amazon SageMaker uses the default Amazon Web
215      * Services KMS key for Amazon S3 for your role's account to encrypt your output
216      * data.</p> <p>If you use a bucket policy with an <code>s3:PutObject</code>
217      * permission that only allows objects with server-side encryption, set the
218      * condition key of <code>s3:x-amz-server-side-encryption</code> to
219      * <code>"aws:kms"</code>. For more information, see <a
220      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html">KMS-Managed
221      * Encryption Keys</a> in the <i>Amazon Simple Storage Service Developer Guide.</i>
222      * </p>
223      */
WithKmsKeyId(const char * value)224     inline LabelingJobOutputConfig& WithKmsKeyId(const char* value) { SetKmsKeyId(value); return *this;}
225 
226 
227     /**
228      * <p>An Amazon Simple Notification Service (Amazon SNS) output topic ARN. Provide
229      * a <code>SnsTopicArn</code> if you want to do real time chaining to another
230      * streaming job and receive an Amazon SNS notifications each time a data object is
231      * submitted by a worker.</p> <p>If you provide an <code>SnsTopicArn</code> in
232      * <code>OutputConfig</code>, when workers complete labeling tasks, Ground Truth
233      * will send labeling task output data to the SNS output topic you specify here.
234      * </p> <p>To learn more, see <a
235      * href="https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-labeling-job.html#sms-streaming-how-it-works-output-data">Receive
236      * Output Data from a Streaming Labeling Job</a>. </p>
237      */
GetSnsTopicArn()238     inline const Aws::String& GetSnsTopicArn() const{ return m_snsTopicArn; }
239 
240     /**
241      * <p>An Amazon Simple Notification Service (Amazon SNS) output topic ARN. Provide
242      * a <code>SnsTopicArn</code> if you want to do real time chaining to another
243      * streaming job and receive an Amazon SNS notifications each time a data object is
244      * submitted by a worker.</p> <p>If you provide an <code>SnsTopicArn</code> in
245      * <code>OutputConfig</code>, when workers complete labeling tasks, Ground Truth
246      * will send labeling task output data to the SNS output topic you specify here.
247      * </p> <p>To learn more, see <a
248      * href="https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-labeling-job.html#sms-streaming-how-it-works-output-data">Receive
249      * Output Data from a Streaming Labeling Job</a>. </p>
250      */
SnsTopicArnHasBeenSet()251     inline bool SnsTopicArnHasBeenSet() const { return m_snsTopicArnHasBeenSet; }
252 
253     /**
254      * <p>An Amazon Simple Notification Service (Amazon SNS) output topic ARN. Provide
255      * a <code>SnsTopicArn</code> if you want to do real time chaining to another
256      * streaming job and receive an Amazon SNS notifications each time a data object is
257      * submitted by a worker.</p> <p>If you provide an <code>SnsTopicArn</code> in
258      * <code>OutputConfig</code>, when workers complete labeling tasks, Ground Truth
259      * will send labeling task output data to the SNS output topic you specify here.
260      * </p> <p>To learn more, see <a
261      * href="https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-labeling-job.html#sms-streaming-how-it-works-output-data">Receive
262      * Output Data from a Streaming Labeling Job</a>. </p>
263      */
SetSnsTopicArn(const Aws::String & value)264     inline void SetSnsTopicArn(const Aws::String& value) { m_snsTopicArnHasBeenSet = true; m_snsTopicArn = value; }
265 
266     /**
267      * <p>An Amazon Simple Notification Service (Amazon SNS) output topic ARN. Provide
268      * a <code>SnsTopicArn</code> if you want to do real time chaining to another
269      * streaming job and receive an Amazon SNS notifications each time a data object is
270      * submitted by a worker.</p> <p>If you provide an <code>SnsTopicArn</code> in
271      * <code>OutputConfig</code>, when workers complete labeling tasks, Ground Truth
272      * will send labeling task output data to the SNS output topic you specify here.
273      * </p> <p>To learn more, see <a
274      * href="https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-labeling-job.html#sms-streaming-how-it-works-output-data">Receive
275      * Output Data from a Streaming Labeling Job</a>. </p>
276      */
SetSnsTopicArn(Aws::String && value)277     inline void SetSnsTopicArn(Aws::String&& value) { m_snsTopicArnHasBeenSet = true; m_snsTopicArn = std::move(value); }
278 
279     /**
280      * <p>An Amazon Simple Notification Service (Amazon SNS) output topic ARN. Provide
281      * a <code>SnsTopicArn</code> if you want to do real time chaining to another
282      * streaming job and receive an Amazon SNS notifications each time a data object is
283      * submitted by a worker.</p> <p>If you provide an <code>SnsTopicArn</code> in
284      * <code>OutputConfig</code>, when workers complete labeling tasks, Ground Truth
285      * will send labeling task output data to the SNS output topic you specify here.
286      * </p> <p>To learn more, see <a
287      * href="https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-labeling-job.html#sms-streaming-how-it-works-output-data">Receive
288      * Output Data from a Streaming Labeling Job</a>. </p>
289      */
SetSnsTopicArn(const char * value)290     inline void SetSnsTopicArn(const char* value) { m_snsTopicArnHasBeenSet = true; m_snsTopicArn.assign(value); }
291 
292     /**
293      * <p>An Amazon Simple Notification Service (Amazon SNS) output topic ARN. Provide
294      * a <code>SnsTopicArn</code> if you want to do real time chaining to another
295      * streaming job and receive an Amazon SNS notifications each time a data object is
296      * submitted by a worker.</p> <p>If you provide an <code>SnsTopicArn</code> in
297      * <code>OutputConfig</code>, when workers complete labeling tasks, Ground Truth
298      * will send labeling task output data to the SNS output topic you specify here.
299      * </p> <p>To learn more, see <a
300      * href="https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-labeling-job.html#sms-streaming-how-it-works-output-data">Receive
301      * Output Data from a Streaming Labeling Job</a>. </p>
302      */
WithSnsTopicArn(const Aws::String & value)303     inline LabelingJobOutputConfig& WithSnsTopicArn(const Aws::String& value) { SetSnsTopicArn(value); return *this;}
304 
305     /**
306      * <p>An Amazon Simple Notification Service (Amazon SNS) output topic ARN. Provide
307      * a <code>SnsTopicArn</code> if you want to do real time chaining to another
308      * streaming job and receive an Amazon SNS notifications each time a data object is
309      * submitted by a worker.</p> <p>If you provide an <code>SnsTopicArn</code> in
310      * <code>OutputConfig</code>, when workers complete labeling tasks, Ground Truth
311      * will send labeling task output data to the SNS output topic you specify here.
312      * </p> <p>To learn more, see <a
313      * href="https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-labeling-job.html#sms-streaming-how-it-works-output-data">Receive
314      * Output Data from a Streaming Labeling Job</a>. </p>
315      */
WithSnsTopicArn(Aws::String && value)316     inline LabelingJobOutputConfig& WithSnsTopicArn(Aws::String&& value) { SetSnsTopicArn(std::move(value)); return *this;}
317 
318     /**
319      * <p>An Amazon Simple Notification Service (Amazon SNS) output topic ARN. Provide
320      * a <code>SnsTopicArn</code> if you want to do real time chaining to another
321      * streaming job and receive an Amazon SNS notifications each time a data object is
322      * submitted by a worker.</p> <p>If you provide an <code>SnsTopicArn</code> in
323      * <code>OutputConfig</code>, when workers complete labeling tasks, Ground Truth
324      * will send labeling task output data to the SNS output topic you specify here.
325      * </p> <p>To learn more, see <a
326      * href="https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-labeling-job.html#sms-streaming-how-it-works-output-data">Receive
327      * Output Data from a Streaming Labeling Job</a>. </p>
328      */
WithSnsTopicArn(const char * value)329     inline LabelingJobOutputConfig& WithSnsTopicArn(const char* value) { SetSnsTopicArn(value); return *this;}
330 
331   private:
332 
333     Aws::String m_s3OutputPath;
334     bool m_s3OutputPathHasBeenSet;
335 
336     Aws::String m_kmsKeyId;
337     bool m_kmsKeyIdHasBeenSet;
338 
339     Aws::String m_snsTopicArn;
340     bool m_snsTopicArnHasBeenSet;
341   };
342 
343 } // namespace Model
344 } // namespace SageMaker
345 } // namespace Aws
346