

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立串流標籤工作
<a name="sms-streaming-create-job"></a>

串流標籤工作可讓您將個別資料物件即時傳送至永久執行的串流標籤工作。若要建立串流標籤工作，您可以在提出 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html) 請求時，在 `InputConfig` 參數中指定 Amazon SNS *輸入主題* ARN，`SnsTopicArn`。或者，如果您想即時接收標籤資料，也可以建立 Amazon SNS *輸出主題*，然後在 `OutputConfig` 中指定主題。

**重要**  
如果您是 Ground Truth 串流標籤工作的新使用者，建議您在建立串流標籤工作之前先檢閱 [Ground Truth 串流標籤工作](sms-streaming-labeling-job.md)。Ground Truth 串流標籤工作僅透過 SageMaker API 支援。

請使用以下各區段，建立您所需要的資源，以及可用於建立串流標籤工作的資源：
+ 請遵循 [使用 Amazon SNS 主題進行資料標籤](sms-create-sns-input-topic.md) 中的步驟，了解如何使用 Ground Truth 串流標籤工作所需的許可建立 SNS 主題。您的 SNS 主題必須在 AWS 與標記任務相同的區域中建立。
+ 請參閱[讓端點訂閱 Amazon SNS 輸出主題](sms-create-sns-input-topic.md#sms-streaming-subscribe-output-topic)，了解如何設定端點，在每次完成標籤任務時，於指定端點接收標籤任務輸出資料。
+ 若要了解如何將 Amazon S3 儲存貯體配置為傳送通知至 Amazon SNS 輸入主題，請參閱[根據標籤工作中定義的 Amazon SNS 建立 Amazon S3 型儲存貯體事件通知](sms-streaming-s3-setup.md)。
+ 或者，在標籤工作開始後，將您要標籤的資料物件立即新增到輸入資訊清單。如需詳細資訊，請參閱[建立資訊清單檔案 (選用)](sms-streaming-manifest.md)。
+ 建立標籤工作還需要其他資源，例如 IAM 角色、Amazon S3 儲存貯體、工作者任務範本和標籤類別。建立標籤工作的 Ground Truth 文件中有相關說明。如需詳細資訊，請參閱[建立標籤工作](sms-create-labeling-job.md)。
**重要**  
建立標籤工作時，您必須提供 IAM 執行角色。將 AWS 受管政策 **AmazonSageMakerGroundTruthExecution** 連接至此角色，以確保其具有執行標籤工作所需的許可。

您提交建立串流標籤工作的請求時，標籤工作的狀態為 `Initializing`。一旦標籤工作處於作用中，狀態隨即變更為 `InProgress`。請勿將新資料物件傳送至標籤工作，或在標籤工作處於 `Initializing` 狀態時嘗試停止標籤工作。一旦狀態變更為 `InProgress`，您就可以使用 Amazon SNS 和 Amazon S3 組態開始傳送新的資料物件。

**Topics**
+ [使用 Amazon SNS 主題進行資料標籤](sms-create-sns-input-topic.md)
+ [根據標籤工作中定義的 Amazon SNS 建立 Amazon S3 型儲存貯體事件通知](sms-streaming-s3-setup.md)
+ [建立資訊清單檔案 (選用)](sms-streaming-manifest.md)
+ [使用 SageMaker API 建立串流標籤工作](sms-streaming-create-labeling-job-api.md)
+ [停止串流標籤工作](sms-streaming-stop-labeling-job.md)

# 使用 Amazon SNS 主題進行資料標籤
<a name="sms-create-sns-input-topic"></a>

您必須建立 Amazon SNS 輸入，才能建立串流標籤工作。您也可以選擇提供 Amazon SNS 輸出主題。

建立串流標籤工作中使用的 Amazon SNS 主題時，請記下主題 Amazon Resource Name (ARN)。ARN 會是您建立標籤工作時，`InputConfig` 和 `OutputConfig` 中參數 `SnsTopicArn` 的輸入值。

## 建立輸入主題
<a name="sms-streaming-input-topic"></a>

輸入主題用於將新的資料物件傳送到 Ground Truth。若要建立輸入主題，請遵照 Amazon Simple Notification Service 開發人員指南中，[建立 Amazon SNS 主題](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html)的指示。

記下您的輸入主題 ARN，並將其使用做為 `InputConfig` 中的 `CreateLabelingJob` 參數 `SnsTopicArn` 的輸入。

## 建立輸出主題
<a name="sms-streaming-output-topic"></a>

如果您提供輸出主題，則會在標籤資料物件時使用該主題傳送通知。建立主題時，您可以選擇新增加密金鑰。使用此選項將 AWS Key Management Service 客戶受管金鑰新增至主題，以在標籤任務發佈至輸出主題之前加密其輸出資料。

若要建立輸出主題，請遵照 Amazon Simple Notification Service 開發人員指南中，[建立 Amazon SNS 主題](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html)的指示。

如果您新增加密，則必須將其他許可附加至主題。如需更多資訊，請參閱[將加密新增到輸出主題 (選用)](#sms-streaming-encryption)。

**重要**  
若要在主控台建立主題時，將客戶受管金鑰新增至輸出主題，請勿使用 **(Default) alias/aws/sns** 選項。選取您已建立的客戶受管金鑰。

記下您的輸入主題 ARN，並在 `OutputConfig` 中參數 `SnsTopicArn` 的 `CreateLabelingJob` 請求中使用。

### 將加密新增到輸出主題 (選用)
<a name="sms-streaming-encryption"></a>

若要加密發佈到輸出主題的訊息，您必須為主題提供 AWS KMS 客戶受管金鑰。修改以下政策，然後新增至客戶受管金鑰，在將輸入資料發佈到輸出主題之前，先授予 Ground Truth 加密輸出資料的許可。

以您用來建立主題的帳戶 ID 取代 *`<account_id>`*。若要了解如何尋找 AWS 您的帳戶 ID，請參閱[尋找 AWS 您的帳戶 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html#FindingYourAWSId)。

------
#### [ JSON ]

****  

```
{
    "Id": "key-console-policy",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow access for Key Administrators",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/Admin"
            },
            "Action": [
                "kms:Create*",
                "kms:Describe*",
                "kms:Enable*",
                "kms:List*",
                "kms:Put*",
                "kms:Update*",
                "kms:Revoke*",
                "kms:Disable*",
                "kms:Get*",
                "kms:Delete*",
                "kms:TagResource",
                "kms:UntagResource",
                "kms:ScheduleKeyDeletion",
                "kms:CancelKeyDeletion"
            ],
            "Resource": "*"
        }
    ]
}
```

------

此外，您必須修改下列政策，並將其新增至用來建立標籤工作的執行角色 (`RoleArn` 的輸入值)。

以您用來建立主題的帳戶 ID 取代 *`<account_id>`*。以您用來建立標籤工作的 AWS 區域取代 *`<region>`*。以客戶受管金鑰 ID 取代 `<key_id>`。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "sid1",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/your_key_id"
        }
    ]
}
```

------

如需建立和保護金鑰的詳細資訊，請參閱《 AWS Key Management Service 開發人員指南》中的[建立金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)和[使用金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

## 讓端點訂閱 Amazon SNS 輸出主題
<a name="sms-streaming-subscribe-output-topic"></a>

工作者從 Ground Truth 串流標籤工作完成標籤工作任務時，Ground Truth 會使用您的輸出主題，將輸出資料發佈到您指定的一或多個端點。若要在工作者完成標籤任務時收到通知，您必須讓端點訂閱 Amazon SNS 輸出主題。

若要了解如何將端點新增至輸出主題，請參閱*Amazon Simple Notification Service 開發人員指南*中的[訂閱 Amazon SNS 主題](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)。

若要進一步了解發佈至這些端點的輸出資料格式，請參閱[標籤工作輸出資料](sms-data-output.md)。

**重要**  
如果您並未讓端點訂閱 Amazon SNS 輸出主題，則新資料物件標籤時不會收到通知。

# 根據標籤工作中定義的 Amazon SNS 建立 Amazon S3 型儲存貯體事件通知
<a name="sms-streaming-s3-setup"></a>

Amazon S3 儲存貯體、事件通知的變更會啟用 Amazon S3 主控台、API、語言特定 AWS SDKs或 AWS Command Line Interface。事件必須使用在 `InputConfig` 參數中指定的相同 Amazon SNS 輸入主題 ARN `SnsTopicArn`，做為 `CreateLabelingJob` 請求的一部分。

**Amazon S3 儲存貯體通知和您的輸入資料不應是相同的 Amazon S3 儲存貯體**  
當您建立事件通知時，請勿使用與您在 `OutputConfig` 參數指定為 `S3OutputPath` 相同的 Amazon S3 位置。連結兩個儲存貯體可能會導致 Ground Truth 處理不需要的資料物件以進行標籤。

您控制要傳送至 Amazon SNS 主題的事件類型。Ground Truth 會在您傳送[物件建立事件](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-event-notifications.html#enable-event-notifications-types)時建立標籤工作。

傳送至 Amazon SNS 輸入主題的事件結構，必須是使用[事件訊息結構](https://docs.aws.amazon.com/AmazonS3/latest/dev/notification-content-structure.html)中相同結構格式化的 JSON 訊息。

若要查看如何使用 Amazon S3 主控台、適用於 .NET 的 AWS SDK 和適用於 Java 的 AWS SDK 為 Amazon S3 儲存貯體設定事件通知的範例，請遵循《Amazon *Simple Storage Service 使用者指南*》中的此逐步解說[：設定通知的儲存貯體 (SNS 主題或 SQS 佇列）](https://docs.aws.amazon.com/AmazonS3/latest/dev/ways-to-add-notification-config-to-bucket.html)。

原生不支援 Amazon EventBridge 通知。若要使用 EventBridge 型通知，您必須更新輸出格式以符合[事件訊息結構](https://docs.aws.amazon.com/AmazonS3/latest/dev/notification-content-structure.html)中使用的 JSON 格式。

# 建立資訊清單檔案 (選用)
<a name="sms-streaming-manifest"></a>

建立串流標籤工作時，您可以使用一次性選項，將物件 (例如映像或文字) 新增至您在 `CreateLabelingJob` 之 `ManifestS3Uri` 指定的輸入資訊清單檔案。串流標籤工作開始時，如果物件總數超過 `MaxConcurrentTaskCount`，這些物件會傳送至工作者或新增至 Amazon SQS 佇列。結果會在工作者完成標籤任務時，新增至您定期建立標籤工作時指定的 Amazon S3 路徑。輸出資料會傳送至您訂閱輸出主題的任何端點。

如果您想提供要標籤的初始物件，請建立可識別這些物件的資訊清單檔案，並將其放在 Amazon S3。在 `InputConfig` 的 `ManifestS3Uri` 指定此資訊清單檔案的 S3 URI。

若要了解如何格式化資訊清單檔案，請參閱[輸入資料](sms-data-input.md)。若要使用 SageMaker AI 主控台自動產生資訊清單檔案 (3D 點雲任務類型不支援)，請參閱[自動化標籤工作的資料設定](sms-console-create-manifest-file.md)。

# 使用 SageMaker API 建立串流標籤工作
<a name="sms-streaming-create-labeling-job-api"></a>

以下是 [AWS Python SDK (Boto3) 請求](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_labeling_job)的範例；您可以使用此請求，為美國東部 (維吉尼亞北部) 區域中的內建任務類型啟動串流標籤工作。有關下方每個參數的更多詳細資訊，請參閱 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html)。若要了解如何使用此 API 和關聯的特定語言 SDK 建立標籤工作，請參閱[建立標籤工作 (API)](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-create-labeling-job-api.html)。

請留意此範例的下列參數：
+ `SnsDataSource` - 此參數出現在 `InputConfig` 和 `OutputConfig` 中，用於個別識別輸入和輸出 Amazon SNS 主題。若要建立串流標籤工作，您必須提供 Amazon SNS 輸入主題。您也可以選擇提供 Amazon SNS 輸出主題。
+ `S3DataSource` - 此為選用參數。如果您要包含標籤工作開始時立即標籤之資料物件的輸入資訊清單檔案，請使用此參數。
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html#sagemaker-CreateLabelingJob-request-StoppingConditions](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html#sagemaker-CreateLabelingJob-request-StoppingConditions) - 建立串流標籤工作時忽略此參數。若要進一步了解如何停止串流標籤工作，請參閱[停止串流標籤工作](sms-streaming-stop-labeling-job.md)。
+ 串流標籤工作不支援自動化資料標籤。請勿包含 `LabelingJobAlgorithmsConfig` 參數。

```
response = client.create_labeling_job(
    LabelingJobName= 'example-labeling-job',
    LabelAttributeName='label',
    InputConfig={
        'DataSource': {
            'S3DataSource': {
                'ManifestS3Uri': 's3://bucket/path/manifest-with-input-data.json'
            },
            'SnsDataSource': {
                'SnsTopicArn': 'arn:aws:sns:us-east-1:123456789012:your-sns-input-topic'
            }
        },
        'DataAttributes': {
            'ContentClassifiers': [
                'FreeOfPersonallyIdentifiableInformation'|'FreeOfAdultContent',
            ]
        }
    },
    OutputConfig={
        'S3OutputPath': 's3://bucket/path/file-to-store-output-data',
        'KmsKeyId': 'string',
        'SnsTopicArn': 'arn:aws:sns:us-east-1:123456789012:your-sns-output-topic'
    },
    RoleArn='arn:aws:iam::*:role/*',
    LabelCategoryConfigS3Uri='s3://bucket/path/label-categories.json',
    HumanTaskConfig={
        'WorkteamArn': 'arn:aws:sagemaker:us-east-1:*:workteam/private-crowd/*',
        'UiConfig': {
            'UiTemplateS3Uri': 's3://bucket/path/custom-worker-task-template.html'
        },
        'PreHumanTaskLambdaArn': 'arn:aws:lambda:us-east-1:432418664414:function:PRE-tasktype',
        'TaskKeywords': [
            'Example key word',
        ],
        'TaskTitle': 'Multi-label image classification task',
        'TaskDescription': 'Select all labels that apply to the images shown',
        'NumberOfHumanWorkersPerDataObject': 123,
        'TaskTimeLimitInSeconds': 123,
        'TaskAvailabilityLifetimeInSeconds': 123,
        'MaxConcurrentTaskCount': 123,
        'AnnotationConsolidationConfig': {
            'AnnotationConsolidationLambdaArn': 'arn:aws:lambda:us-east-1:432418664414:function:ACS-tasktype'
            }
        },
    Tags=[
        {
            'Key': 'string',
            'Value': 'string'
        },
    ]
)
```

# 停止串流標籤工作
<a name="sms-streaming-stop-labeling-job"></a>

您可以使用 [StopLabelingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopLabelingJob.html) 作業，手動停止串流標籤工作。

如果標籤工作閒置超過 10 天，Ground Truth 便會自動停止該工作。在此情況下，如果沒有物件傳送至 Amazon SNS 輸入主題，且 Amazon SQS 佇列中沒有任何物件尚待標籤，則標籤工作會被視為*閒置*。例如，如果沒有資料物件饋送至 Amazon SNS 輸入主題，且饋送至標籤工作的所有物件都已標籤，則 Ground Truth 會啟動計時器。計時器啟動後，如果 10 天內沒有收到任何項目，則標籤工作隨即停止。

若停止標籤工作，Ground Truth 清除標籤工作資源，並從 Amazon SQS 佇列取消訂閱 Amazon SNS 主題時，其狀態為 `STOPPING`。Ground Truth *不會*刪除 Amazon SQS，因為此佇列可能包含未處理的資料物件。如果要避免 Amazon SQS 產生額外費用，應手動刪除佇列。如需進一步了解，請參閱 [Amazon SQS 定價](https://aws.amazon.com/sqs/pricing/)。