1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288
|
// Code generated by smithy-go-codegen DO NOT EDIT.
package sagemaker
import (
"context"
"fmt"
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) {
if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil {
return err
}
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 := addProtocolFinalizerMiddlewares(stack, options, "CreateLabelingJob"); err != nil {
return fmt.Errorf("add protocol finalizers: %v", err)
}
if err = addlegacyEndpointContextSetter(stack, options); 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 = 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 = addSetLegacyContextSigningOptionsMiddleware(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
}
if err = addDisableHTTPSMiddleware(stack, options); err != nil {
return err
}
return nil
}
func newServiceMetadataMiddleware_opCreateLabelingJob(region string) *awsmiddleware.RegisterServiceMetadata {
return &awsmiddleware.RegisterServiceMetadata{
Region: region,
ServiceID: ServiceID,
OperationName: "CreateLabelingJob",
}
}
|