

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

# 使用异步任务 (API) 查找 PII 实体
<a name="async-pii-api"></a>

运行异步批处理任务以在一组文档中查找 PII。要运行任务，请将您的文档上传到 Amazon S3，然后提交[StartPiiEntitiesDetectionJob](https://docs.aws.amazon.com/comprehend/latest/APIReference/API_StartPiiEntitiesDetectionJob.html)请求。

**Topics**
+ [开始之前](#detect-pii-before)
+ [输入参数](#async-pii-api-inputs)
+ [异步任务方法](#async-pii-api-lifecycle)
+ [输出文件格式](#async-pii-api-outputs)
+ [使用异步分析 AWS Command Line Interface](#async-pii-api-cli)

## 开始之前
<a name="detect-pii-before"></a>

在开始之前，请确保您具有：
+ **输入和输出存储桶**：确定要用于输入文件和输出文件的 Amazon S3 存储桶。存储桶必须与所调用的 API 位于同一区域。
+ **IAM 服务角色**：您必须拥有一个有权访问您的输入和输出存储桶的 IAM 服务角色。有关更多信息，请参阅 [异步操作所需的基于角色的权限](security_iam_id-based-policy-examples.md#auth-role-permissions)。

## 输入参数
<a name="async-pii-api-inputs"></a>

 在您的请求中，请包含以下必需的参数：
+ `InputDataConfig`— 为您的请求提供[InputDataConfig](https://docs.aws.amazon.com/comprehend/latest/APIReference/API_InputDataConfig.html)定义，其中包括任务的输入属性。对于 `S3Uri` 参数，指定输入文档的 Amazon S3 位置。
+ `OutputDataConfig`— 为您的请求提供[OutputDataConfig](https://docs.aws.amazon.com/comprehend/latest/APIReference/API_OutputDataConfig.html)定义，其中包括任务的输出属性。对于 `S3Uri` 参数，指定 Amazon Comprehend 写入其分析结果的 Amazon S3 位置。
+ `DataAccessRoleArn`— 提供角色的亚马逊资源名称 (ARN)。 AWS Identity and Access Management 该角色必须授予 Amazon Comprehend 对您的输入数据的读取权限以及对您在 Amazon S3 中的输出位置的写入权限。有关更多信息，请参阅 [异步操作所需的基于角色的权限](security_iam_id-based-policy-examples.md#auth-role-permissions)。
+ `Mode`：将该参数设置为 `ONLY_OFFSETS`。使用此设置，输出将提供字符偏移量，用于在输入文本中查找每个 PII 实体。输出还包括置信度分数和 PII 实体类型。
+ `LanguageCode`— 将此参数设置为`en`或`es`。Amazon Comprehend 支持英语或西班牙语文本的 PII 检测。

## 异步任务方法
<a name="async-pii-api-lifecycle"></a>

`StartPiiEntitiesDetectionJob` 返回任务 ID，以便您可以监控任务的进度，并在任务完成时检索任务状态。

要监控分析作业的进度，请为该[DescribePiiEntitiesDetectionJob](https://docs.aws.amazon.com/comprehend/latest/APIReference/API_DescribePiiEntitiesDetectionJob.html)操作提供作业 ID。`DescribePiiEntitiesDetectionJob` 操作的响应包含任务状态的 `JobStatus` 字段。一个成功的任务会经历以下状态转换：

已提交-> 进行中-> 已完成。

任务分析完成（`JobStatus`“已完成”、“失败”或“已停止”）后，使用 `DescribePiiEntitiesDetectionJob` 获取结果的位置。如果任务状态为 `COMPLETED`，则响应将包含一个 `OutputDataConfig` 字段，该字段包含输出文件的 Amazon S3 位置。

有关 Amazon Comprehend 异步分析步骤的更多详细信息，请参阅 [异步批处理](concepts-processing-modes.md#how-async)。

## 输出文件格式
<a name="async-pii-api-outputs"></a>

 输出文件使用输入文件的名称，并在末尾附上 .out。其中包含分析结果。

以下是检测文档中 PII 实体的分析任务输出文件示例。输入格式是每行一个文档。

```
{
  "Entities": [
    {
      "Type": "NAME",
      "BeginOffset": 40,
      "EndOffset": 69,
      "Score": 0.999995
    },
    {
      "Type": "ADDRESS",
      "BeginOffset": 247,
      "EndOffset": 253,
      "Score": 0.998828
    },
    {
      "Type": "BANK_ACCOUNT_NUMBER",
      "BeginOffset": 406,
      "EndOffset": 411,
      "Score": 0.693283
    }
  ],
  "File": "doc.txt",
  "Line": 0
},
{
  "Entities": [
    {
      "Type": "SSN",
      "BeginOffset": 1114,
      "EndOffset": 1124,
      "Score": 0.999999
    },
    {
      "Type": "EMAIL",
      "BeginOffset": 3742,
      "EndOffset": 3775,
      "Score": 0.999993
    },
    {
      "Type": "PIN",
      "BeginOffset": 4098,
      "EndOffset": 4102,
      "Score": 0.999995
    }
  ],
  "File": "doc.txt",
  "Line": 1
 }
```

以下是分析的输出示例，其中输入的格式为每个文件一个文档。

```
{
  "Entities": [
    {
      "Type": "NAME",
      "BeginOffset": 40,
      "EndOffset": 69,
      "Score": 0.999995
    },
    {
      "Type": "ADDRESS",
      "BeginOffset": 247,
      "EndOffset": 253,
      "Score": 0.998828
    },
    {
      "Type": "BANK_ROUTING",
      "BeginOffset": 279,
      "EndOffset": 289,
      "Score": 0.999999
    }
  ],
  "File": "doc.txt"
}
```

## 使用异步分析 AWS Command Line Interface
<a name="async-pii-api-cli"></a>

以下示例使用 AWS CLI的 `StartPiiEntitiesDetectionJob` 操作。

此示例的格式适用于 Unix、Linux 和 macOS。对于 Windows，请将每行末尾的反斜杠 (\$1) Unix 行继续符替换为脱字号 (^)。

```
aws comprehend start-pii-entities-detection-job \
    --region region \
    --job-name job name \
    --cli-input-json file://path to JSON input file
```

对于 `cli-input-json` 参数，请提供包含请求数据的 JSON 文件的路径，如以下示例中所示。

```
{
  "InputDataConfig": {
      "S3Uri": "s3://input bucket/input path",
      "InputFormat": "ONE_DOC_PER_LINE"
  },
  "OutputDataConfig": {
      "S3Uri": "s3://output bucket/output path"
  },
  "DataAccessRoleArn": "arn:aws:iam::account ID:role/data access role"
  "LanguageCode": "en",
  "Mode": "ONLY_OFFSETS"     
}
```

如果启动事件检测任务的请求成功，您将会收到一条与以下类似的响应：

```
{
  "JobId": "5d2fbe6e...e2c"
  "JobArn":  "arn:aws:comprehend:us-west-2:123456789012:pii-entities-detection-job/5d2fbe6e...e2c" 
  "JobStatus": "SUBMITTED",   
}
```

您可以使用该[DescribeEventsDetectionJob](https://docs.aws.amazon.com/comprehend/latest/APIReference/API_DescribeEventsDetectionJob.html)操作来获取现有任务的状态。如果启动事件检测任务的请求成功，您将会收到一条与以下类似的响应：

```
aws comprehend describe-pii-entities-detection-job \
    --region region \
    --job-id job ID
```

任务成功完成后，您将会收到一条与以下类似的响应：

```
{
    "PiiEntitiesDetectionJobProperties": {
  "JobId": "5d2fbe6e...e2c"
  "JobArn":  "arn:aws:comprehend:us-west-2:123456789012:pii-entities-detection-job/5d2fbe6e...e2c" 
  "JobName": "piiCLItest3",
  "JobStatus": "COMPLETED",
  "SubmitTime": "2022-05-05T14:54:06.169000-07:00",
  "EndTime": "2022-05-05T15:00:17.007000-07:00",
  "InputDataConfig": {
       (identical to the input data that you provided with the request)
    }
}
```