// Code generated by smithy-go-codegen DO NOT EDIT. package sagemaker import ( "context" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/aws/signer/v4" "github.com/aws/aws-sdk-go-v2/service/sagemaker/types" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) // Creates a job that uses workers to label the data objects in your input // dataset. You can use the labeled data to train machine learning models. You can // select your workforce from one of three providers: // - A private workforce that you create. It can include employees, contractors, // and outside experts. Use a private workforce when want the data to stay within // your organization or when a specific set of skills is required. // - One or more vendors that you select from the Amazon Web Services // Marketplace. Vendors provide expertise in specific areas. // - The Amazon Mechanical Turk workforce. This is the largest workforce, but it // should only be used for public data or data that has been stripped of any // personally identifiable information. // // You can also use automated data labeling to reduce the number of data objects // that need to be labeled by a human. Automated data labeling uses active learning // to determine if a data object can be labeled by machine or if it needs to be // sent to a human worker. For more information, see Using Automated Data Labeling (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-automated-labeling.html) // . The data objects to be labeled are contained in an Amazon S3 bucket. You // create a manifest file that describes the location of each object. For more // information, see Using Input and Output Data (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-data.html) // . The output can be used as the manifest file for another labeling job or as // training data for your machine learning models. You can use this operation to // create a static labeling job or a streaming labeling job. A static labeling job // stops if all data objects in the input manifest file identified in ManifestS3Uri // have been labeled. A streaming labeling job runs perpetually until it is // manually stopped, or remains idle for 10 days. You can send new data objects to // an active ( InProgress ) streaming labeling job in real time. To learn how to // create a static labeling job, see Create a Labeling Job (API) (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-create-labeling-job-api.html) // in the Amazon SageMaker Developer Guide. To learn how to create a streaming // labeling job, see Create a Streaming Labeling Job (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-create-job.html) // . func (c *Client) CreateLabelingJob(ctx context.Context, params *CreateLabelingJobInput, optFns ...func(*Options)) (*CreateLabelingJobOutput, error) { if params == nil { params = &CreateLabelingJobInput{} } result, metadata, err := c.invokeOperation(ctx, "CreateLabelingJob", params, optFns, c.addOperationCreateLabelingJobMiddlewares) if err != nil { return nil, err } out := result.(*CreateLabelingJobOutput) out.ResultMetadata = metadata return out, nil } type CreateLabelingJobInput struct { // Configures the labeling task and how it is presented to workers; including, but // not limited to price, keywords, and batch size (task count). // // This member is required. HumanTaskConfig *types.HumanTaskConfig // Input data for the labeling job, such as the Amazon S3 location of the data // objects and the location of the manifest file that describes the data objects. // You must specify at least one of the following: S3DataSource or SnsDataSource . // - Use SnsDataSource to specify an SNS input topic for a streaming labeling // job. If you do not specify and SNS input topic ARN, Ground Truth will create a // one-time labeling job that stops after all data objects in the input manifest // file have been labeled. // - Use S3DataSource to specify an input manifest file for both streaming and // one-time labeling jobs. Adding an S3DataSource is optional if you use // SnsDataSource to create a streaming labeling job. // If you use the Amazon Mechanical Turk workforce, your input data should not // include confidential information, personal information or protected health // information. Use ContentClassifiers to specify that your data is free of // personally identifiable information and adult content. // // This member is required. InputConfig *types.LabelingJobInputConfig // The attribute name to use for the label in the output manifest file. This is // the key for the key/value pair formed with the label that a worker assigns to // the object. The LabelAttributeName must meet the following requirements. // - The name can't end with "-metadata". // - If you are using one of the following built-in task types (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html) // , the attribute name must end with "-ref". If the task type you are using is not // listed below, the attribute name must not end with "-ref". // - Image semantic segmentation ( SemanticSegmentation) , and adjustment ( // AdjustmentSemanticSegmentation ) and verification ( // VerificationSemanticSegmentation ) labeling jobs for this task type. // - Video frame object detection ( VideoObjectDetection ), and adjustment and // verification ( AdjustmentVideoObjectDetection ) labeling jobs for this task // type. // - Video frame object tracking ( VideoObjectTracking ), and adjustment and // verification ( AdjustmentVideoObjectTracking ) labeling jobs for this task // type. // - 3D point cloud semantic segmentation ( 3DPointCloudSemanticSegmentation ), // and adjustment and verification ( Adjustment3DPointCloudSemanticSegmentation ) // labeling jobs for this task type. // - 3D point cloud object tracking ( 3DPointCloudObjectTracking ), and // adjustment and verification ( Adjustment3DPointCloudObjectTracking ) labeling // jobs for this task type. // If you are creating an adjustment or verification labeling job, you must use a // different LabelAttributeName than the one used in the original labeling job. // The original labeling job is the Ground Truth labeling job that produced the // labels that you want verified or adjusted. To learn more about adjustment and // verification labeling jobs, see Verify and Adjust Labels (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-verification-data.html) // . // // This member is required. LabelAttributeName *string // The name of the labeling job. This name is used to identify the job in a list // of labeling jobs. Labeling job names must be unique within an Amazon Web // Services account and region. LabelingJobName is not case sensitive. For // example, Example-job and example-job are considered the same labeling job name // by Ground Truth. // // This member is required. LabelingJobName *string // The location of the output data and the Amazon Web Services Key Management // Service key ID for the key used to encrypt the output data, if any. // // This member is required. OutputConfig *types.LabelingJobOutputConfig // The Amazon Resource Number (ARN) that Amazon SageMaker assumes to perform tasks // on your behalf during data labeling. You must grant this role the necessary // permissions so that Amazon SageMaker can successfully complete data labeling. // // This member is required. RoleArn *string // The S3 URI of the file, referred to as a label category configuration file, // that defines the categories used to label the data objects. For 3D point cloud // and video frame task types, you can add label category attributes and frame // attributes to your label category configuration file. To learn how, see Create // a Labeling Category Configuration File for 3D Point Cloud Labeling Jobs (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-point-cloud-label-category-config.html) // . For named entity recognition jobs, in addition to "labels" , you must provide // worker instructions in the label category configuration file using the // "instructions" parameter: "instructions": {"shortInstruction":" // Add header // // Add Instructions // ", "fullInstruction":"Add additional instructions."} . For details and an // example, see Create a Named Entity Recognition Labeling Job (API) (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-named-entity-recg.html#sms-creating-ner-api) // . For all other built-in task types (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html) // and custom tasks (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates.html) // , your label category configuration file must be a JSON file in the following // format. Identify the labels you want to use by replacing label_1 , label_2 , ... // , label_n with your label categories. { // "document-version": "2018-11-28", // // "labels": [{"label": "label_1"},{"label": "label_2"},...{"label": "label_n"}] // } Note the following about the label category configuration file: // - For image classification and text classification (single and multi-label) // you must specify at least two label categories. For all other task types, the // minimum number of label categories required is one. // - Each label category must be unique, you cannot specify duplicate label // categories. // - If you create a 3D point cloud or video frame adjustment or verification // labeling job, you must include auditLabelAttributeName in the label category // configuration. Use this parameter to enter the LabelAttributeName (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html#sagemaker-CreateLabelingJob-request-LabelAttributeName) // of the labeling job you want to adjust or verify annotations of. LabelCategoryConfigS3Uri *string // Configures the information required to perform automated data labeling. LabelingJobAlgorithmsConfig *types.LabelingJobAlgorithmsConfig // A set of conditions for stopping the labeling job. If any of the conditions are // met, the job is automatically stopped. You can use these conditions to control // the cost of data labeling. StoppingConditions *types.LabelingJobStoppingConditions // An array of key/value pairs. For more information, see Using Cost Allocation // Tags (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what) // in the Amazon Web Services Billing and Cost Management User Guide. Tags []types.Tag noSmithyDocumentSerde } type CreateLabelingJobOutput struct { // The Amazon Resource Name (ARN) of the labeling job. You use this ARN to // identify the labeling job. // // This member is required. LabelingJobArn *string // Metadata pertaining to the operation's result. ResultMetadata middleware.Metadata noSmithyDocumentSerde } func (c *Client) addOperationCreateLabelingJobMiddlewares(stack *middleware.Stack, options Options) (err error) { err = stack.Serialize.Add(&awsAwsjson11_serializeOpCreateLabelingJob{}, middleware.After) if err != nil { return err } err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpCreateLabelingJob{}, middleware.After) if err != nil { return err } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { return err } if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { return err } if err = addRetryMiddlewares(stack, options); err != nil { return err } if err = addHTTPSignerV4Middleware(stack, options); err != nil { return err } if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { return err } if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { return err } if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { return err } if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } if err = addOpCreateLabelingJobValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateLabelingJob(options.Region), middleware.Before); err != nil { return err } if err = awsmiddleware.AddRecursionDetection(stack); err != nil { return err } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { return err } if err = addRequestResponseLogging(stack, options); err != nil { return err } return nil } func newServiceMetadataMiddleware_opCreateLabelingJob(region string) *awsmiddleware.RegisterServiceMetadata { return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, SigningName: "sagemaker", OperationName: "CreateLabelingJob", } }