/*
 * 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 sagemaker-2017-07-24.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.SageMaker.Model
{
    /// 
    /// Output configuration information for a labeling job.
    /// 
    public partial class LabelingJobOutputConfig
    {
        private string _kmsKeyId;
        private string _s3OutputPath;
        private string _snsTopicArn;
        /// 
        /// Gets and sets the property KmsKeyId. 
        /// 
        /// The Amazon Web Services Key Management Service ID of the key used to encrypt the output
        /// data, if any.
        /// 
        ///  
        /// 
        /// If you provide your own KMS key ID, you must add the required permissions to your
        /// KMS key described in Encrypt
        /// Output Data and Storage Volume with Amazon Web Services KMS.
        /// 
        ///  
        /// 
        /// If you don't provide a KMS key ID, Amazon SageMaker uses the default Amazon Web Services
        /// KMS key for Amazon S3 for your role's account to encrypt your output data.
        /// 
        ///  
        /// 
        /// If you use a bucket policy with an s3:PutObject permission that only
        /// allows objects with server-side encryption, set the condition key of s3:x-amz-server-side-encryption
        /// to "aws:kms". For more information, see KMS-Managed
        /// Encryption Keys in the Amazon Simple Storage Service Developer Guide. 
        /// 
        /// 
        [AWSProperty(Max=2048)]
        public string KmsKeyId
        {
            get { return this._kmsKeyId; }
            set { this._kmsKeyId = value; }
        }
        // Check to see if KmsKeyId property is set
        internal bool IsSetKmsKeyId()
        {
            return this._kmsKeyId != null;
        }
        /// 
        /// Gets and sets the property S3OutputPath. 
        /// 
        /// The Amazon S3 location to write output data.
        /// 
        /// 
        [AWSProperty(Required=true, Max=1024)]
        public string S3OutputPath
        {
            get { return this._s3OutputPath; }
            set { this._s3OutputPath = value; }
        }
        // Check to see if S3OutputPath property is set
        internal bool IsSetS3OutputPath()
        {
            return this._s3OutputPath != null;
        }
        /// 
        /// Gets and sets the property SnsTopicArn. 
        /// 
        /// An Amazon Simple Notification Service (Amazon SNS) output topic ARN. Provide a SnsTopicArn
        /// if you want to do real time chaining to another streaming job and receive an Amazon
        /// SNS notifications each time a data object is submitted by a worker.
        /// 
        ///  
        /// 
        /// If you provide an SnsTopicArn in OutputConfig, when workers
        /// complete labeling tasks, Ground Truth will send labeling task output data to the SNS
        /// output topic you specify here. 
        /// 
        ///  
        /// 
        /// To learn more, see Receive
        /// Output Data from a Streaming Labeling Job. 
        /// 
        /// 
        [AWSProperty(Max=2048)]
        public string SnsTopicArn
        {
            get { return this._snsTopicArn; }
            set { this._snsTopicArn = value; }
        }
        // Check to see if SnsTopicArn property is set
        internal bool IsSetSnsTopicArn()
        {
            return this._snsTopicArn != null;
        }
    }
}