

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

# 刪除 Amazon Personalize 資源的需求
<a name="deleting-resources"></a>

刪除資源可協助您避免不必要的成本。例如，您在行銷活動作用中時會產生行銷活動成本。為了避免不必要的成本，請務必在完成時刪除行銷活動。如需費用和價格的完整清單，請參閱 [Amazon Personalize 定價](https://aws.amazon.com/personalize/pricing/)。

若要使用 Amazon Personalize 主控台刪除資源，請在資源的詳細資訊頁面上選擇**刪除**。若要使用 Amazon Personalize APIs 刪除資源，您可以使用 `Delete` APIs搭配 SDKs或 AWS Command Line Interface (AWS CLI)。

如需使用 Amazon Personalize 主控台、 AWS Command Line Interface (AWS CLI) 或 AWS SDKs 刪除資料集的詳細步驟，請參閱 [刪除資料集以刪除其所有資料](delete-dataset.md)。您可以將這些步驟中的模式套用至其他 Amazon Personalize 資源。如需有關從資料集群組刪除使用者及其資料的資訊，請參閱 [使用資料刪除任務刪除使用者及其資料](delete-records.md)。

 您必須先刪除一些資源，才能刪除其他資源。例如，如果您建立事件追蹤器和項目互動資料集，您必須先刪除事件追蹤器，才能刪除資料集。下列各節提供刪除 Amazon Personalize 資源的指導方針和訂單要求。

**Topics**
+ [刪除資源的指導方針](#cleaning-up-guidelines)
+ [資源刪除的建議順序](#deleting-resources-order)
+ [使用資料刪除任務刪除使用者及其資料](delete-records.md)
+ [刪除資料集以刪除其所有資料](delete-dataset.md)

## 刪除資源的指導方針
<a name="cleaning-up-guidelines"></a>

以下是刪除資源的指導方針：
+ 在 Amazon Personalize 中刪除資源是不可復原的動作。刪除開始後就無法停止。
+ 您無法刪除狀態正在從一個狀態變更為另一個狀態的資源。例如，您無法刪除 CREATE PENDING 或 IN PROGRESS 的資源。資源狀態必須為 ACTIVE 或 CREATE FAILED。這包括解決方案`latestSolutionUpdate`的狀態。您可以使用 `Describe` APIs 檢查資源的狀態。例如，[DescribeCampaign](API_DescribeCampaign.md)API 操作。
+ 如需在 Amazon S3 中刪除訓練資料的資訊，請參閱[如何從 S3 儲存貯體刪除物件？](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-objects.html)。
+ 資料集匯入任務完成後，您不需要付費，也無法刪除它們。
+ 您不需要支付結構描述的費用，也無法使用 Amazon Personalize 主控台刪除結構描述。若要刪除結構描述，請使用 [DeleteSchema](API_DeleteSchema.md) API 操作。

以下是刪除資料集的特定要求：
+ 您必須先刪除所有篩選條件，才能刪除任何資料集。
+ 如果您已建立事件追蹤器，您必須先刪除它，才能刪除項目互動資料集。
+ 如果您建立了參考資料集的指標屬性，您必須先刪除指標屬性。
+ 如果您使用 User-Personalization-v2、User-Personalization 或 Next-Best-Action 配方或 *最佳選項，*並*建議您*使用案例，刪除資料集會停止任何相關解決方案版本或建議的自動更新。
+ 任何關聯的 `DatasetImportJob` 都不可處於 CREATE PENDING 或 IN PROGRESS 狀態。
+ 沒有關聯`BatchInferenceJob`或 的狀態`BatchSegmentJob`可以是 CREATE PENDING 或 IN PROGRESS。
+ 沒有相關聯的 `Recommender`， 的狀態`SolutionVersion`可以是 CREATE PENDING 或 IN PROGRESS。
+ 沒有關聯的 `Campaign`可以具有 CREATE PENDING 或 IN PROGRESS 或 ACTIVE 狀態。

## 資源刪除的建議順序
<a name="deleting-resources-order"></a>

 為了避免刪除錯誤，建議您依照下列順序從資料集群組刪除資源。若要識別資料集群組中的資源，您可以使用列出 API 操作。例如，您可以使用 [ListFilters](API_ListFilters.md) API 操作來識別資料集群組中的所有篩選條件。

1. 任何行銷活動或推薦者 – 若要使用 APIs刪除行銷活動或推薦者，請使用 [DeleteCampaign](API_DeleteCampaign.md)或 [DeleteRecommender](API_DeleteRecommender.md) API 操作。使用推薦者，您可以停止推薦者，稍後再啟動。如此一來，您可以暫停推薦者計費，並只在使用時付費。如需詳細資訊，請參閱[停止建議者](stopping-starting-recommender.md)。

1. 任何解決方案 – 若要使用 APIs刪除您的解決方案，請使用 [DeleteSolution](API_DeleteSolution.md) API 操作。若要刪除解決方案，無法進行解決方案更新。其`latestSolutionUpdate`狀態必須為 ACTIVE 或 CREATE FAILED。刪除解決方案會刪除所有相關聯的解決方案版本。其解決方案版本都不能的狀態為 CREATE PENDING 或 IN PROGRESS。

1. 事件追蹤器 – 若要使用 APIs刪除事件追蹤器，請使用 [DeleteEventTracker](API_DeleteEventTracker.md) API 操作。您必須先刪除事件追蹤器，才能刪除項目互動資料集。

1. 指標屬性 – 若要使用 APIs 刪除指標屬性，請使用 [DeleteMetricAttribution](API_DeleteMetricAttribution.md) API 操作。

1. 所有篩選條件 – 若要刪除具有 APIs篩選條件，請使用 [DeleteFilter](API_DeleteFilter.md) API 操作。您必須先刪除所有篩選條件，才能刪除資料集。

1. 任何資料集 – 若要使用 APIs刪除資料集，請使用 [DeleteDataset](API_DeleteDataset.md) API 操作。

1. 資料集群組 – 若要使用 APIs刪除資料集群組，請使用 [DeleteDatasetGroup](API_DeleteDatasetGroup.md) API 操作。

1. 結構描述 – 若要刪除結構描述，請使用 [DeleteSchema](API_DeleteSchema.md) API 操作。

# 使用資料刪除任務刪除使用者及其資料
<a name="delete-records"></a>

 匯入資料後，您可以從資料集群組刪除使用者及其資料，包括其中繼資料和互動資料。您可以刪除使用者資料作為合規計劃的一部分，或處理使用者刪除請求，或隨著使用者基礎變更保持資料為最新狀態。

 刪除使用者後，Amazon Personalize 不會再訓練其資料，也不會在產生使用者區段時考慮使用者。

 若要刪除 Amazon Personalize 資料集中的使用者參考，以及資料集群組中的模型，請執行下列動作：

1. 準備 CSV 檔案，列出 USER\$1ID 欄中要刪除的使用者 userIds。

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 儲存貯體中的批次建議中刪除其 userId。您必須手動刪除這些記錄。
+  對於狀態為 PENDING 的資料集群組，您最多可以有 5 個刪除任務。
+  資料刪除輸入檔案的總計大小上限為 100 MB。您可以在建立刪除任務時重複使用相同的輸入檔案。
+  每個資料刪除任務都會刪除*資料集群組*中的使用者及其互動資料。若要在所有資料集群組中刪除其資料，您必須為每個資料集群組建立資料刪除任務。
+ 建立任務後，最多可能需要一天的時間才能從資料集和模型中刪除使用者的資料。
+ 任務完成後，請務必更新任何自訂資源。請務必建立新的解決方案版本，並視需要更新您的行銷活動。如果您使用自動訓練，您仍然可以手動建立新的解決方案版本。
+  您的 Amazon Personalize 服務角色必須具有存取 Amazon S3 儲存貯體的許可，其中包含要刪除的使用者清單。它需要`GetObject`儲存貯體及其內容的 和 `ListBucket` 許可。這些許可與匯入資料相同。如需授予許可和政策範例的詳細資訊，請參閱 [讓 Amazon Personalize 存取 Amazon S3 資源](granting-personalize-s3-access.md)。
+  您無法在存放要刪除之使用者 userIds清單的 Amazon S3 儲存貯體上使用自己的 AWS Key Management Service 金鑰。
+  如果項目僅出現在您的項目互動資料集中，且您刪除的使用者僅與此項目互動，則此項目將不再出現在建議中。

## 準備要刪除的使用者清單
<a name="prepare-deletion-input-file"></a>

 從 Amazon Personalize 刪除使用者之前，您必須準備要在 CSV 檔案中刪除的使用者清單，並將其上傳至 Amazon S3。

**準備要刪除並上傳的使用者清單**

1. 建立 CSV 檔案，列出要刪除的使用者的 userIds。以下顯示 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 SDKs建立資料刪除任務。

### 建立資料刪除任務 （主控台）
<a name="create-data-deletion-job-console"></a>

 若要使用 Amazon Personalize 主控台刪除使用者，請使用資料的名稱、IAM 服務角色和 Amazon S3 位置來建立資料刪除任務。

**刪除記錄 （主控台）**

1. 在 [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home)：// 開啟 Amazon Personalize 主控台並登入您的帳戶。

1.  在**資料集群組**頁面上，選擇您的資料集群組。資料集群組**概觀**隨即顯示。

1. 在導覽窗格中，選擇**資料集**。

1. 在**資料刪除任務**中，選擇**建立任務**。

1. 在**任務詳細資訊**中，為任務命名。

1. 在 **S3 輸入來源**中，針對 **S3 位置**，指定 CSV 檔案的 Amazon S3 位置，該檔案會存放要刪除的使用者 userIds清單。您已在 中準備此檔案[準備要刪除的使用者清單](#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 操作。下列程式碼示範如何建立資料刪除任務。若要使用程式碼，請更新它以指定任務名稱、您在 中建立的 IAM 角色[為 Amazon Personalize 建立 IAM 角色](set-up-required-permissions.md#set-up-create-role-with-permissions)，以及資料的 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 SDKs)
<a name="create-data-deletion-job-sdks"></a>

 若要刪除具有 AWS SDKs的使用者，請使用 [CreateDataDeletionJob](API_CreateDataDeletionJob.md) API 操作。下列程式碼示範如何建立資料刪除任務。若要使用程式碼，請更新它以指定任務名稱、您在 中建立的 IAM 角色[為 Amazon Personalize 建立 IAM 角色](set-up-required-permissions.md#set-up-create-role-with-permissions)，以及資料的 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 操作。

如果任務因任何原因失敗，建議您建立另一個資料刪除任務。任務完成後，請務必更新任何自訂資源。請務必建立新的解決方案版本，並視需要更新您的行銷活動。如果您使用自動訓練，您仍然可以手動建立新的解決方案版本。

# 刪除資料集以刪除其所有資料
<a name="delete-dataset"></a>

若要刪除資料集中的所有資料，請刪除資料集。您可以使用 Amazon Personalize 主控台、 AWS Command Line Interface (AWS CLI) 或 AWS SDKs刪除資料集。刪除資料集之前，請注意下列事項：
+ 您必須先刪除所有篩選條件，才能刪除任何資料集。
+ 如果您已建立事件追蹤器，您必須先刪除它，才能刪除項目互動資料集。
+ 如果您建立了參考資料集的指標屬性，您必須先刪除指標屬性。
+ 如果您使用 User-Personalization-v2、User-Personalization 或 Next-Best-Action 配方或 *最佳選項，*並*建議您*使用案例，刪除資料集會停止任何相關聯解決方案版本或建議的自動更新。
+ 任何關聯的 `DatasetImportJob` 都不可處於 CREATE PENDING 或 IN PROGRESS 狀態。
+ 沒有關聯`BatchInferenceJob`或 的狀態`BatchSegmentJob`可以是 CREATE PENDING 或 IN PROGRESS。
+ 沒有相關聯的 `Recommender`， 的狀態`SolutionVersion`可以是 CREATE PENDING 或 IN PROGRESS。
+ 沒有關聯的 `Campaign`可以具有 CREATE PENDING 或 IN PROGRESS 或 ACTIVE 狀態。



**Topics**
+ [刪除資料集 （主控台）](#delete-dataset-console)
+ [刪除資料集 (AWS CLI)](#delete-dataset-cli)
+ [刪除資料集 (AWS SDKs)](#delete-dataset-sdk)

## 刪除資料集 （主控台）
<a name="delete-dataset-console"></a>

若要使用 Amazon Personalize 主控台刪除資料集，請導覽至資料集詳細資訊頁面，然後選擇刪除。

**刪除資料集**

1. 開啟位於 https：//[https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home) 的 Amazon Personalize 主控台。

1. 在導覽窗格中，選擇**資料集群組**。

1. 在**資料集群組**頁面上，選擇您的資料集群組。

1. 在導覽窗格中，選擇**資料集**。

1. 選擇資料集以開啟其詳細資訊頁面。

1. 在資料集的詳細資訊頁面上，選擇**刪除**並確認刪除資料集。

## 刪除資料集 (AWS CLI)
<a name="delete-dataset-cli"></a>

下列程式碼說明如何使用 AWS CLI 和 [DeleteDataset](API_DeleteDataset.md)操作刪除資料集。

```
aws personalize delete-dataset --dataset-arn dataset-arn
```

## 刪除資料集 (AWS SDKs)
<a name="delete-dataset-sdk"></a>

下列程式碼示範如何使用 AWS SDKs和 [DeleteDataset](API_DeleteDataset.md)操作刪除資料集。

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize = boto3.client('personalize')

response = personalize.delete_dataset(
    datasetArn = 'dataset ARN'
)
```

------
#### [ SDK for Java 2.x ]

```
public static void deleteDataset(PersonalizeClient personalizeClient,
                                 String datasetArn) {

    try {
        DeleteDatasetRequest deleteRequest = DeleteDatasetRequest.builder()
                .datasetArn(datasetArn)
                .build();

        int responseCode = personalizeClient.deleteDataset(deleteRequest).sdkHttpResponse().statusCode();
        System.out.println(responseCode);
    } catch (PersonalizeException e) {
        System.out.println(e.awsErrorDetails().errorMessage());
    }
}
```

------