

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Amazon SNS 主题进行数据标注
<a name="sms-create-sns-input-topic"></a>

您需要创建 Amazon SNS 输入才能创建流式标注作业。您还可以选择提供 Amazon SNS 输出主题。

创建 Amazon SNS 主题以用于流式标注作业时，请记下主题的 Amazon 资源名称 (ARN)。在创建标注作业时，ARN 将作为 `InputConfig` 和 `OutputConfig` 中的参数 `SnsTopicArn` 的输入值。

## 创建输入主题
<a name="sms-streaming-input-topic"></a>

您的输入主题用于向 Ground Truth 发送新的数据对象。要创建输入主题，请按照《Amazon Simple Notification Service 开发人员指南》中的[创建 Amazon SNS 主题](https://docs.amazonaws.cn/sns/latest/dg/sns-create-topic.html)说明进行操作。

记下您的输入主题 ARN，并将其用作 `InputConfig` 中的 `CreateLabelingJob` 参数 `SnsTopicArn` 的输入值。

## 创建输出主题
<a name="sms-streaming-output-topic"></a>

如果提供了输出主题，则会在数据对象被标注时用来发送通知。创建主题时，您可以选择添加加密密钥。使用此选项向您的主题添加 Amazon Key Management Service 客户托管密钥，以便在标签作业的输出数据发布到输出主题之前对其进行加密。

要创建输出主题，请按照《Amazon Simple Notification Service 开发人员指南》中的[创建 Amazon SNS 主题](https://docs.amazonaws.cn/sns/latest/dg/sns-create-topic.html)说明进行操作。

如果添加加密，则必须为主题附加额外权限。请参阅 [向输出主题添加加密（可选）](#sms-streaming-encryption) 了解更多信息。

**重要**  
要在控制台中创建主题时向输出主题添加客户托管密钥，请不要使用**（默认）alias/aws/sns**选项。选择您创建的客户托管密钥。

记下您的输入主题 ARN，并在 `OutputConfig` 的参数 `SnsTopicArn` 中的 `CreateLabelingJob` 请求中使用此值。

### 向输出主题添加加密（可选）
<a name="sms-streaming-encryption"></a>

要加密发布到输出主题的消息，需要为主题提供 Amazon KMS 客户托管密钥。修改以下策略并将其添加到客户托管密钥中，以允许 Ground Truth 在将输出数据发布到输出主题之前对其进行加密。

将 {{`<account_id>`}} 替换为您用来创建主题的账户 ID。要了解如何查找您的 Amazon 账户 ID，请参阅[查找您的 Amazon 账户 ID](https://docs.amazonaws.cn/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` 的输入值）。

将 {{`<account_id>`}} 替换为您用来创建主题的账户 ID。将 {{`<region>`}} 替换为用于创建标注作业的 Amazon 区域。将 `{{<key_id>}}` 替换为客户托管密钥 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}}"
        }
    ]
}
```

------

有关创建和保护密钥的更多信息，请参阅《 Amazon Key Management Service 开发人员指南》中的[创建密](https://docs.amazonaws.cn/kms/latest/developerguide/create-keys.html)[钥和使用密钥策略](https://docs.amazonaws.cn/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.amazonaws.cn/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)。

要了解有关发布到这些端点的输出数据格式的更多信息，请参阅[标注作业输出数据](sms-data-output.md)。

**重要**  
如果您没有为端点订阅 Amazon SNS 输出主题，则不会在标注新数据对象时收到通知。