

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

# 使用数据删除作业删除用户及其数据
<a name="delete-records"></a>

 导入数据后，您可以从数据集组中删除用户及其数据，包括元数据和交互数据。为了遵循合规计划，或者为了应对用户删除请求，或者为了在用户群变化时使数据保持最新，您可能需要删除用户数据。

 删除用户后，Amazon Personalize 将不再根据他们的数据进行训练，在生成用户细分时也不再考虑这些用户。

 要删除对 Amazon Personalize 数据集中的用户以及数据集组中的模型的引用，请执行以下操作：

1. 准备一个 CSV 文件，在 USER\$1ID 列中列出要删除的用户的用户 ID。

1. 将 CSV 文件上传到 Amazon S3 存储桶。您的 Amazon Personalize 服务角色必须具有访问此存储桶的权限。

1.  创建数据删除作业。*数据删除作业*是一个批处理作业，用于从数据集组中的模型和数据集中删除用户及其数据。

**Topics**
+ [

## 指南和要求
](#data-deletion-guidelines-requirements)
+ [

## 准备待删除用户的列表
](#prepare-deletion-input-file)
+ [

## 创建数据删除作业
](#creating-data-deletion-job)

## 指南和要求
<a name="data-deletion-guidelines-requirements"></a>

以下是删除用户的准则和要求：
+  在创建数据删除作业之前，请确保没有正在使用您的数据集的作业，例如训练作业、批处理作业，或批量或单个导入操作。并避免在执行数据删除作业时创建此类作业。如果进行了任何训练或导入，我们无法保证用户的数据会从模型中删除，因此我们建议再创建一个数据删除作业。
+  数据删除作业不会删除对 Amazon Personalize 以外的用户的引用。例如，该作业不会从 Amazon S3 存储桶中的批量推荐中删除他们的用户 ID。您必须手动删除这些记录。
+  对于一个状态为 PENDING 的数据集组，您最多可以有 5 个删除作业。
+  一个或多个数据删除输入文件的最大总大小为 100 MB。在创建删除作业时，您可以重复使用相同的输入文件。
+  每个数据删除作业都会删除*数据集组*中的用户及其交互数据。要删除他们在所有数据集组中的数据，必须为每个数据集组创建一个数据删除任务。
+ 创建作业后，最多可能需要一天时间才能从数据集和模型中删除用户的数据。
+ 作业完成后，请务必更新所有自定义资源。请务必创建新的解决方案版本，并在必要时更新市场活动。如果您使用自动训练，您仍然可以手动创建新的解决方案版本。
+  您的 Amazon Personalize 服务角色必须有权访问包含待删除用户列表的 Amazon S3 存储桶。它需要存储桶及其内容的 `GetObject` 和 `ListBucket` 权限。这些权限与导入数据时的权限相同。有关授予权限和策略示例的信息，请参阅[向 Amazon Personalize 授予访问 Amazon S3 资源的权限](granting-personalize-s3-access.md)。
+  您不能在存储待删除用户的用户 ID 列表的 Amazon S3 存储桶上使用自己的 AWS Key Management Service 密钥。
+  如果某个物品仅在您的物品交互数据集中出现，并且只有您要删除的用户与该物品进行了互动，则该物品将不再出现在推荐中。

## 准备待删除用户的列表
<a name="prepare-deletion-input-file"></a>

 在从 Amazon Personalize 删除用户之前，必须在 CSV 文件中准备好待删除用户的列表并将文件上传到 Amazon S3。

**准备待删除用户的列表并上传**

1. 创建一个 CSV 文件，列出待删除用户的用户 ID。下面显示了 CSV 文件必须如何格式化。

   ```
   USER_ID
   abc
   2a
   5basc
   ab35
   123f
   a55d
   0v22
   441fa
   efg
   ```

1. 将 CSV 文件上传到 Amazon Simple Storage Service（Amazon S3）存储桶。有关将文件上传到 Amazon S3 的更多信息，请参阅《Amazon Simple Storage Service 用户指南》中的[使用拖放功能上传文件和文件夹](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/upload-objects.html)。

1. 向 Amazon Personalize 授予访问存储桶和 CSV 文件的权限。Amazon Personalize 必须有权对您的存储桶及其内容执行 `GetObject` 和 `ListBucket` 操作。这些权限与导入数据时的权限相同。有关授予权限和策略示例的信息，请参阅[向 Amazon Personalize 授予访问 Amazon S3 资源的权限](granting-personalize-s3-access.md)。

## 创建数据删除作业
<a name="creating-data-deletion-job"></a>

完成[准备待删除用户的列表](#prepare-deletion-input-file)后，就可以通过数据删除作业来删除用户。

*数据删除作业*是一个批处理作业，用于从数据集组中的模型和数据集中删除用户及其数据。删除用户后，Amazon Personalize 将不再根据他们的数据进行训练，在生成用户细分时也不再考虑这些用户。

创建数据删除作业时，需要指定待删除用户的列表在 Amazon S3 中的位置。
+ 如果您的数据位于单个文件中，请为 Amazon S3 位置使用以下语法：

  **s3://amzn-s3-demo-bucket/<folder path>/<CSV filename>.csv**
+ 如果您的 CSV 文件位于 Amazon S3 存储桶的某个文件夹中，则可以指定该文件夹的路径。对于数据删除作业，Amazon Personalize 会使用该文件夹及任何子文件夹中带有 `.csv` 文件扩展名的所有文件。该作业会忽略任何其他类型的文件。使用以下语法，在文件夹名称后面加上 `/`：

  **s3://amzn-s3-demo-bucket/<folder path>/**

您使用的角色必须有权对您的 Amazon S3 存储桶及其内容执行 `GetObject` 和 `ListBucket` 操作。有关授予权限和策略示例的信息，请参阅[向 Amazon Personalize 授予访问 Amazon S3 资源的权限](granting-personalize-s3-access.md)。

 您可以使用 Amazon Personalize 控制台、AWS Command Line Interface（AWS CLI）或 AWS SDK 创建数据删除作业。

### 创建数据删除作业（控制台）
<a name="create-data-deletion-job-console"></a>

 要使用 Amazon Personalize 控制台删除用户，请创建一个包含名称、IAM 服务角色和 Amazon S3 数据位置的数据删除作业。

**删除记录（控制台）**

1. 打开 Amazon Personalize 控制台（网址为 [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home)），并登录您的账户。

1.  在**数据集组**页面，选择您的数据集组。这时，将显示数据集组**概述**。

1. 在导航窗格中，选择**数据集**。

1. 在**数据删除作业**中，选择**创建作业**。

1. 在**作业详细信息**中，为作业取名。

1. 在 **S3 输入源**中，对于 **S3 位置**，指定用于存储待删除用户的用户 ID 列表的 CSV 文件在 Amazon S3 中的位置。在[准备待删除用户的列表](#prepare-deletion-input-file)中准备这个文件。

1. 对于 **IAM 角色**，选择创建新角色或使用现有角色。如果您完成了为 Amazon Personalize 创建角色的先决条件，并授予此角色访问 Amazon S3 存储桶的权限，请选择**使用现有服务角色**，并指定您在[为 Amazon Personalize 创建 IAM 角色](set-up-required-permissions.md#set-up-create-role-with-permissions)中创建的角色。

   您使用的角色必须有权对您的 Amazon S3 存储桶及其内容执行 `GetObject` 和 `ListBucket` 操作。这些权限与导入数据时的权限相同。有关授予权限和策略示例的信息，请参阅[向 Amazon Personalize 授予访问 Amazon S3 资源的权限](granting-personalize-s3-access.md)。

1. 对于**标签**，可以选择添加任何标签。有关标记 Amazon Personalize 资源的更多信息，请参阅[为 Amazon Personalize 资源添加标签](tagging-resources.md)。

1. 请选择**创建任务**。作业开始，并且会显示详细信息页面。

    创建作业后，需要大约一天时间才能从数据集和模型中删除用户的数据。在作业完成之前，Amazon Personalize 会继续在训练时使用这些数据。用户可能会出现在用户细分中。

   当状态显示为 COMPLETED 时，数据删除完成。如果作业因任何原因而失败，我们建议创建另一个数据删除作业。作业完成后，请务必更新所有自定义资源。请务必创建新的解决方案版本，并在必要时更新市场活动。如果您使用自动训练，您仍然可以手动创建新的解决方案版本。

### 创建数据删除作业（AWS CLI）
<a name="create-data-deletion-job-cli"></a>

 要使用 AWS CLI 删除用户，请使用 `create-data-deletion-job` 命令。此命令使用 CreateDataDeletion API 操作。以下代码展示了如何创建数据删除作业。要使用该代码，请更新它以指定作业名称、您在[为 Amazon Personalize 创建 IAM 角色](set-up-required-permissions.md#set-up-create-role-with-permissions)中创建的 IAM 角色以及 Amazon S3 数据位置。在[准备待删除用户的列表](#prepare-deletion-input-file)中准备这个文件。

```
aws personalize create-data-deletion-job \
--job-name deletion job name \
--dataset-group-arn dataset group ARN \
--data-source dataLocation=s3://amzn-s3-demo-bucket/filename.csv \
--role-arn roleArn
```

 创建作业后，需要大约一天时间才能从数据集和模型中删除用户的数据。在作业完成之前，Amazon Personalize 会继续在训练时使用这些数据。用户可能会出现在用户细分中。

当状态为 COMPLETED 时，作业完成。使用 `describe-data-deletion-job` 命令检查状态，并指定数据删除作业 ARN。有关该 API 操作的更多信息，请参阅 [DescribeDataDeletionJob](API_DescribeDataDeletionJob.md)。要查看按创建时间排序的数据删除作业的历史记录，请使用 [ListDataDeletionJobs](API_ListDataDeletionJobs.md) API 操作。

如果作业因任何原因而失败，我们建议创建另一个数据删除作业。作业完成后，请务必更新所有自定义资源。请务必创建新的解决方案版本，并在必要时更新市场活动。如果您使用自动训练，您仍然可以手动创建新的解决方案版本。

### 创建数据删除作业（AWS SDK）
<a name="create-data-deletion-job-sdks"></a>

 要使用 AWS SDK 删除用户，请使用 [CreateDataDeletionJob](API_CreateDataDeletionJob.md) API 操作。以下代码展示了如何创建数据删除作业。要使用该代码，请更新它以指定作业名称、您在[为 Amazon Personalize 创建 IAM 角色](set-up-required-permissions.md#set-up-create-role-with-permissions)中创建的 IAM 角色以及 Amazon S3 数据位置。在[准备待删除用户的列表](#prepare-deletion-input-file)中准备这个文件。

```
import boto3

personalize = boto3.client('personalize')

response = personalize.create_data_deletion_job(
    jobName = 'Deletion job name',
    datasetGroupArn = 'Dataset Group ARN',
    dataSource = {'dataLocation':'s3://amzn-s3-demo-bucket/file.csv'},
    roleArn = 'role_arn'
)

deletion_job_arn = response['dataDeletionJobArn']

print ('Deletion Job arn: ' + deletion_job_arn)

description = personalize.describe_data_deletion_job(
    dataDeletionJobArn = deletion_job_arn)['dataDeletionJob']

print('Name: ' + description['jobName'])
print('ARN: ' + description['dataDeletionJobArn'])
print('Status: ' + description['status'])
```

 创建作业后，需要大约一天时间才能从数据集和模型中删除用户的数据。在作业完成之前，Amazon Personalize 会继续在训练时使用这些数据。用户可能会出现在用户细分中。

当状态为 COMPLETED 时，作业完成。使用 [DescribeDataDeletionJob](API_DescribeDataDeletionJob.md) 操作检查状态，并指定数据删除作业 ARN。要查看按创建时间排序的数据删除作业的历史记录，请使用 [ListDataDeletionJobs](API_ListDataDeletionJobs.md) API 操作。

如果作业因任何原因而失败，我们建议创建另一个数据删除作业。作业完成后，请务必更新所有自定义资源。请务必创建新的解决方案版本，并在必要时更新市场活动。如果您使用自动训练，您仍然可以手动创建新的解决方案版本。