Question: How can I use a custom UI template with AWS-provided Lambda functions in Ground Truth?

I want to use an Amazon SageMaker Ground Truth custom UI template and AWS Lambda functions for a labeling job.Resolution1.    Create a custom UI template for the labeling job, as shown in the following example. For semantic segmentation jobs, set the name variable to crowd-semantic-segmentation, as shown in the following example. For bounding box jobs, set the name variable to boundingBox. For a full list of enhanced HTML elements for custom templates, see Crowd HTML elements reference.<script src="https://assets.crowd.aws/crowd-html-elements.js"></script><crowd-form>    <crowd-semantic-segmentation name="crowd-semantic-segmentation" src="{{ task.input.taskObject | grant_read_access }}" header= "{{ task.input.header }}" labels="{{ task.input.labels | to_json | escape }}">        <full-instructions header= "Segmentation Instructions">            <ol>                <li>Read the task carefully and inspect the image.</li>                <li>Read the options and review the examples provided to understand more about the labels.</li>                <li>Choose the appropriate label that best suits the image.</li>            </ol>        </full-instructions>        <short-instructions>            <p>Use the tools to label the requested items in the image</p>        </short-instructions>    </crowd-semantic-segmentation></crowd-form>2.    Create a JSON file for the labels. Example: {        "labels": [            {                "label": "Chair"            },            ...            {                "label": "Oven"            }        ]}3.    Create an input manifest file for the images. Example:{"source-ref":"s3://awsdoc-example-bucket/input_manifest/apartment-chair.jpg"}{"source-ref":"s3://awsdoc-example-bucket/input_manifest/apartment-carpet.jpg"}4.    Upload the HTML, manifest, and JSON files to Amazon Simple Storage Service (Amazon S3). Example:import boto3import osbucket = 'awsdoc-example-bucket'prefix = 'GroundTruthCustomUI'boto3.Session().resource('s3').Bucket(bucket).Object(os.path.join(prefix, 'customUI.html')).upload_file('customUI.html')boto3.Session().resource('s3').Bucket(bucket).Object(os.path.join(prefix, 'input.manifest')).upload_file('input.manifest')boto3.Session().resource('s3').Bucket(bucket).Object(os.path.join(prefix, 'testLabels.json')).upload_file('testLabels.json')5.    Retrieve the Amazon Resource Names (ARNs) for the  pre-processing and  annotation consolidation Lambda functions. For example, here are the semantic segmentation ARNs:arn:aws:lambda:eu-west-1:111122223333:function:PRE-SemanticSegmentationarn:aws:lambda:eu-west-1:111122223333:function:ACS-SemanticSegmentation6.    Create the labeling job using an AWS SDK, such as boto3. Replace these values in the following example:INPUT_MANIFEST_IN_S3 S3_OUTPUT_PATH IAM_ROLE_ARN LABELS_JSON_FILE_IN_S3 WORKTEAM_ARN HTML_TEMPLATE_IN_S3import boto3client = boto3.client('sagemaker')client.create_labeling_job(LabelingJobName='SemanticSeg-CustomUI',    LabelAttributeName='output-ref',    InputConfig={        'DataSource': {            'S3DataSource': {                'ManifestS3Uri': 'INPUT_MANIFEST_IN_S3'            }        },        'DataAttributes': {            'ContentClassifiers' : [                'FreeOfPersonallyIdentifiableInformation',            ]        }    },    OutputConfig={        'S3OutputPath' : 'S3_OUTPUT_PATH'     },    RoleArn='IAM_ROLE_ARN',    LabelCategoryConfigS3Uri='LABELS_JSON_FILE_IN_S3',    StoppingConditions={        'MaxPercentageOfInputDatasetLabeled': 100    },    HumanTaskConfig={        'WorkteamArn': 'WORKTEAM_ARN',        'UiConfig': {            'UiTemplateS3Uri' : 'HTML_TEMPLATE_IN_S3'        },        'PreHumanTaskLambdaArn' : 'arn:aws:lambda:eu-west-1:111122223333:function:PRE-SemanticSegmentation',        'TaskKeywords': [            'SemanticSegmentation',        ],        'TaskTitle': 'Semantic Segmentation',        'TaskDescription': 'Draw around the specified labels using the tools',        'NumberOfHumanWorkersPerDataObject': 1,        'TaskTimeLimitInSeconds': 3600,        'TaskAvailabilityLifetimeInSeconds': 1800,        'MaxConcurrentTaskCount': 1,        'AnnotationConsolidationConfig': {            'AnnotationConsolidationLambdaArn': 'arn:aws:lambda:eu-west-1:111122223333:function:ACS-SemanticSegmentation'        }    },    Tags=[        {            'Key': 'reason',            'Value': 'CustomUI'        }    ])

Related informationSemantic segmentation algorithm