刪除 Amazon Rekognition 自訂標籤專案 - Rekognition

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

刪除 Amazon Rekognition 自訂標籤專案

您可以使用 Amazon Rekognition 主控台或呼叫 API 來刪除專案。DeleteProject若要刪除專案,您必須先刪除每個關聯模型。刪除的專案或模型無法恢復。

刪除 Amazon Rekognition 自訂標籤專案 (主控台)

您可以從專案頁面刪除專案,也可以從專案的詳細頁面刪除專案。以下流程向您展示了如何使用專案頁面刪除專案。

Amazon Rekognition 自訂標籤主控台會在專案刪除過程中為您刪除相關的模型和資料集。如果專案的任何模型正在執行或培訓中,則無法刪除專案。若要停止執行中的模型,請參閱 停止 Amazon Rekognition 自訂標籤模型 (SDK)。如果模型正在培訓中,請等到完成後再刪除專案。

刪除專案(主控台)
  1. 開啟 Amazon Rekognition 主控台:https://console.aws.amazon.com/rekognition/

  2. 選擇使用自訂標籤

  3. 選擇開始使用

  4. 在左側導覽視窗中,選擇 專案

  5. 專案 頁面上,選擇要刪除的專案的單選按鈕。項目列表顯示 echo-devices-project,其中有 1 個版本在 2020-03-25 上創建,以及刪除,訓練新模型或創建項目的選項。

    顯示項目和 echo-devices-project 項目詳細信息的項目列表。
  6. 在頁面頂部,選擇 刪除。螢幕將會顯示 刪除專案 的對話框。

  7. 如果專案沒有關聯的模型:

    1. 輸入 刪除 以刪除專案。

    2. 選擇 刪除 以刪除專案。

  8. 如果專案具有關聯的模型或資料集:

    1. 輸入 刪除 以確認您要刪除該些模型和資料集。

    2. 選擇 刪除關聯模型刪除關聯資料集刪除關聯資料集和模型,取決於模型是否具有資料集、模型或兩者皆有。刪除模型可能需要一段時間才能完成。

      注意

      主控台無法刪除正在培訓或正在運作中的模型。停止所有正在運作中的模型後重試,並等待培訓完成的模型。

      如果您在刪除模型期間 關閉 了對話框,模型仍會被刪除。稍後,您可以透過重複此過程來刪除該專案。

      刪除模型的面板提供了刪除關聯模型的明確指示。

      刪除專案的介面。
    3. 輸入 刪除 以確認您要刪除的專案。

    4. 選擇 刪除 以刪除專案。

刪除 Amazon Rekognition 自訂標籤專案 (SDK)

您可以透過呼叫DeleteProject並提供您要刪除之專案的 Amazon 資源名稱 (ARN) 來刪除 Amazon Rekognition 自訂標籤專案。若要取得 AWS 帳戶中專案的 ARN,請撥打DescribeProjects。響應包括對ProjectDescription象的數組。專案 ARN 是 ProjectArn 欄位。您可以使用專案名稱來識別專案的 ARN。例如 arn:aws:rekognition:us-east-1:123456789010:project/project name/1234567890123

在刪除專案之前,必須先刪除專案中的所有模型和資料集。如需更多詳細資訊,請參閱 刪除 Amazon Rekognition 自訂標籤模型 (SDK)刪除資料集

專案可能需要一點時間才能刪除。在此期間,該專案的狀態為 DELETING。如果後續呼叫DescribeProjects未包含您刪除的專案,則會刪除專案。

刪除專案 (SDK)
  1. 如果您尚未這樣做,請安裝並設定 AWS CLI 和 AWS SDK。如需詳細資訊,請參閱 步驟 4:設定 AWS CLI 和開 AWS 發套件

  2. 使用下列程式碼刪除專案。

    AWS CLI

    project-arn 的值變更為要刪除的專案的名稱。

    aws rekognition delete-project --project-arn project_arn \ --profile custom-labels-access
    Python

    使用下列程式碼。請提供以下命令列參數:

    • project_arn— 您要刪除的專案的 ARN。

    # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Purpose Amazon Rekognition Custom Labels project example used in the service documentation: https://docs.aws.amazon.com/rekognition/latest/customlabels-dg/mp-delete-project.html Shows how to delete an existing Amazon Rekognition Custom Labels project. You must first delete any models and datasets that belong to the project. """ import argparse import logging import time import boto3 from botocore.exceptions import ClientError logger = logging.getLogger(__name__) def find_forward_slash(input_string, n): """ Returns the location of '/' after n number of occurences. :param input_string: The string you want to search : n: the occurence that you want to find. """ position = input_string.find('/') while position >= 0 and n > 1: position = input_string.find('/', position + 1) n -= 1 return position def delete_project(rek_client, project_arn): """ Deletes an Amazon Rekognition Custom Labels project. :param rek_client: The Amazon Rekognition Custom Labels Boto3 client. :param project_arn: The ARN of the project that you want to delete. """ try: # Delete the project logger.info("Deleting project: %s", project_arn) response = rek_client.delete_project(ProjectArn=project_arn) logger.info("project status: %s",response['Status']) deleted = False logger.info("waiting for project deletion: %s", project_arn) # Get the project name start = find_forward_slash(project_arn, 1) + 1 end = find_forward_slash(project_arn, 2) project_name = project_arn[start:end] project_names = [project_name] while deleted is False: project_descriptions = rek_client.describe_projects( ProjectNames=project_names)['ProjectDescriptions'] if len(project_descriptions) == 0: deleted = True else: time.sleep(5) logger.info("project deleted: %s",project_arn) return True except ClientError as err: logger.exception( "Couldn't delete project - %s: %s", project_arn, err.response['Error']['Message']) raise def add_arguments(parser): """ Adds command line arguments to the parser. :param parser: The command line parser. """ parser.add_argument( "project_arn", help="The ARN of the project that you want to delete." ) def main(): logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") try: # get command line arguments parser = argparse.ArgumentParser(usage=argparse.SUPPRESS) add_arguments(parser) args = parser.parse_args() print(f"Deleting project: {args.project_arn}") # Delete the project. session = boto3.Session(profile_name='custom-labels-access') rekognition_client = session.client("rekognition") delete_project(rekognition_client, args.project_arn) print(f"Finished deleting project: {args.project_arn}") except ClientError as err: error_message = f"Problem deleting project: {err}" logger.exception(error_message) print(error_message) if __name__ == "__main__": main()
    Java V2

    使用下列程式碼。請提供以下命令列參數:

    • project_arn— 您要刪除的專案的 ARN。

    /* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ package com.example.rekognition; import java.util.List; import java.util.Objects; import java.util.logging.Level; import java.util.logging.Logger; import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.rekognition.RekognitionClient; import software.amazon.awssdk.services.rekognition.model.DeleteProjectRequest; import software.amazon.awssdk.services.rekognition.model.DeleteProjectResponse; import software.amazon.awssdk.services.rekognition.model.DescribeProjectsRequest; import software.amazon.awssdk.services.rekognition.model.DescribeProjectsResponse; import software.amazon.awssdk.services.rekognition.model.ProjectDescription; import software.amazon.awssdk.services.rekognition.model.RekognitionException; public class DeleteProject { public static final Logger logger = Logger.getLogger(DeleteProject.class.getName()); public static void deleteMyProject(RekognitionClient rekClient, String projectArn) throws InterruptedException { try { logger.log(Level.INFO, "Deleting project: {0}", projectArn); // Delete the project DeleteProjectRequest deleteProjectRequest = DeleteProjectRequest.builder().projectArn(projectArn).build(); DeleteProjectResponse response = rekClient.deleteProject(deleteProjectRequest); logger.log(Level.INFO, "Status: {0}", response.status()); // Wait until deletion finishes Boolean deleted = false; do { DescribeProjectsRequest describeProjectsRequest = DescribeProjectsRequest.builder().build(); DescribeProjectsResponse describeResponse = rekClient.describeProjects(describeProjectsRequest); List<ProjectDescription> projectDescriptions = describeResponse.projectDescriptions(); deleted = true; for (ProjectDescription projectDescription : projectDescriptions) { if (Objects.equals(projectDescription.projectArn(), projectArn)) { deleted = false; logger.log(Level.INFO, "Not deleted: {0}", projectDescription.projectArn()); Thread.sleep(5000); break; } } } while (Boolean.FALSE.equals(deleted)); logger.log(Level.INFO, "Project deleted: {0} ", projectArn); } catch ( RekognitionException e) { logger.log(Level.SEVERE, "Client error occurred: {0}", e.getMessage()); throw e; } } public static void main(String[] args) { final String USAGE = "\n" + "Usage: " + "<project_arn>\n\n" + "Where:\n" + " project_arn - The ARN of the project that you want to delete.\n\n"; if (args.length != 1) { System.out.println(USAGE); System.exit(1); } String projectArn = args[0]; try { RekognitionClient rekClient = RekognitionClient.builder() .region(Region.US_WEST_2) .credentialsProvider(ProfileCredentialsProvider.create("custom-labels-access")) .build(); // Delete the project. deleteMyProject(rekClient, projectArn); System.out.println(String.format("Project deleted: %s", projectArn)); rekClient.close(); } catch (RekognitionException rekError) { logger.log(Level.SEVERE, "Rekognition client error: {0}", rekError.getMessage()); System.exit(1); } catch (InterruptedException intError) { logger.log(Level.SEVERE, "Exception while sleeping: {0}", intError.getMessage()); System.exit(1); } } }