使用资源回收

您可以使用 IBM Cloud® CLI 或 IBM Cloud® 资源控制器 API 来管理特定资源的回收过程。 更多信息,请参阅 常见问题解答中的资源

使用 CLI 列出回收的资源

要列出可使用 CLI 复原或删除的回收资源,请运行以下命令:

ibmcloud resource reclamations [--resource-instance-id INSTANCE_ID]

输入以下命令选项:

  • --resource-instance-id: 资源实例的全局唯一标识 (GUID)。

以下示例显示如何列出特定服务实例的回收:

ibmcloud resource reclamations --resource-instance-id abcd1234-ef56-486e-b293-22d6c7eb6699

使用 API 列出回收的资源

要列出可复原或删除的回收资源,请调用 IBM Cloud® 资源控制器 API,如以下示例中所示:

使用 ListReclamationsOptions.Builder 来创建包含 listReclamations 方法的参数值的 ListReclamationsOptions 对象。

实例化 ListReclamationsOptions 结构并设置字段以提供 ListReclamations 方法的参数值。

curl -X GET https://resource-controller.cloud.ibm.com/v1/reclamations?account_id=b80a8b513ae24e178438b7a18bd8d609 -H 'Authorization: Bearer <IAM_TOKEN>'
ListReclamationsOptions listReclamationsOptions = new ListReclamationsOptions.Builder()
  .accountId(accountId)
  .build();

Response<ReclamationsList> response = service.listReclamations(listReclamationsOptions).execute();
ReclamationsList reclamationsList = response.getResult();

System.out.printf("listReclamations() response:\n%s\n", reclamationsList.toString());
const params = {
  accountId: accountId,
};

resourceControllerService.listReclamations(params)
  .then(res => {
    var resources = res.result.resources;
    resources.forEach(reclaim => {
      if (reclaim.resource_instance_id.toString() === instanceGuid) {
        reclamationId = reclaim.id;
      }
    });
    console.log('listReclamations() response:\n' + JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
reclamations_list = resource_controller_service.list_reclamations(
    account_id=account_id
).get_result()

print('\nlist_reclamations() response:\n',
      json.dumps(reclamations_list, indent=2))
listReclamationsOptions := resourceControllerService.NewListReclamationsOptions()
listReclamationsOptions = listReclamationsOptions.SetAccountID(accountID)
reclamationsList, response, err := resourceControllerService.ListReclamations(listReclamationsOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(reclamationsList, "", "  ")
fmt.Printf("\nListReclamations() response:\n%s\n", string(b))

使用 CLI 删除回收的资源

要使用 CLI 删除回收的资源,请运行以下命令:

ibmcloud resource reclamation-delete ID [--comment COMMENT] [--f, --force]

输入以下命令选项:

  • ID: 资源回收的标识。 这是回收标识,而不是资源实例标识。 (必需)。
  • -- comment: 有关操作的注释。
    • f, --force: 强制删除,无需确认。

以下示例显示如何删除标识为 d9fendfwlw 的资源回收:

ibmcloud resource reclamation-delete "d9fendfwlw"

以下示例显示如何删除标识为 d9fendfwlw 的资源回收,并在未确认的情况下保留注释 no longer needed:

ibmcloud resource reclamation-delete "d9fendfwlw" --comment "no longer needed" -f

使用 API 删除资源

要回收 (暂时删除) 资源,请调用 IBM Cloud® 资源控制器 API,如以下示例中所示。 指定 reclaim 以删除资源。id 是回收标识,而不是资源实例标识。

curl -X POST https://resource-controller.cloud.ibm.com/v1/reclamations/0114be9024c6eede47d08a85ac0c5c43/actions/reclaim -H 'Authorization: Bearer <IAM_TOKEN>' -H 'Content-Type: application/json' -d '{
    "request_by": "bar",
    "comment": "reclaim resource instance 614fc866-1d4f-4c9e-973e-637f1089a6a1"
  }'
RunReclamationActionOptions runReclamationActionOptions = new RunReclamationActionOptions.Builder()
  .id(reclamationId)
  .actionName("reclaim")
  .build();

Response<Reclamation> response = service.runReclamationAction(runReclamationActionOptions).execute();
Reclamation reclamation = response.getResult();

System.out.printf("runReclamationAction() response:\n%s\n", reclamation.toString());
const params = {
  id: reclamationId,
  actionName: 'reclaim',
};

resourceControllerService.runReclamationAction(params)
  .then(res => {
    console.log('runReclamationAction() response:\n' + JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
reclamation = resource_controller_service.run_reclamation_action(
    id=reclamation_id,
    action_name='reclaim'
).get_result()

print('\nrun_reclamation_action() response:\n',
      json.dumps(reclamation, indent=2))
runReclamationActionOptions := resourceControllerService.NewRunReclamationActionOptions(
  reclamationID,
  "reclaim",
)

reclamation, response, err := resourceControllerService.RunReclamationAction(runReclamationActionOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(reclamation, "", "  ")
fmt.Printf("\nRunReclamationAction() response:\n%s\n", string(b))

使用 CLI 恢复资源

资源通常可在删除后 3 天内恢复。 不过,恢复期可能因服务而异,因为每个服务都遵循自己的保留政策。 有关详细信息,请参阅个别服务的文件。

并非所有资源都可以复原。 您可以运行 ibmcloud resource reclamations 命令来检查可以恢复的资源。

要使用 CLI 恢复资源,请运行以下命令:

ibmcloud resource reclamation-restore ID [--comment COMMENT]

输入以下命令选项:

  • ID: 资源回收的标识。 这是回收标识,而不是资源实例标识。  (必填)
  • -- comment: 有关操作的注释。

以下示例显示如何复原具有 d9fendfwlw 标识的资源:

ibmcloud resource reclamation-restore "d9fendfwlw"

有关更多信息,请参阅 ibmcloud resource reclamations 命令参考。

使用 API 复原资源

资源通常可在删除后 3 天内恢复。 不过,恢复期可能因服务而异,因为每个服务都遵循自己的保留政策。 有关详细信息,请参阅个别服务的文件。

并非所有资源都可以复原。 获取所有回收的列表 以检查可复原的资源。

要使用 API 复原资源,请调用 IBM Cloud® 资源控制器 API,如以下示例中所示。 指定 restore 以复原资源。id 是回收标识,而不是资源实例标识。

curl -X POST https://resource-controller.cloud.ibm.com/v1/reclamations/0114be9024c6eede47d08a85ac0c5c43/actions/restore -H 'Authorization: Bearer <IAM_TOKEN>' -H 'Content-Type: application/json' -d '{
    "request_by": "bar",
    "comment": "restore resource instance 614fc866-1d4f-4c9e-973e-637f1089a6a1"
  }'
RunReclamationActionOptions runReclamationActionOptions = new RunReclamationActionOptions.Builder()
  .id(reclamationId)
  .actionName("restore")
  .build();

Response<Reclamation> response = service.runReclamationAction(runReclamationActionOptions).execute();
Reclamation reclamation = response.getResult();

System.out.printf("runReclamationAction() response:\n%s\n", reclamation.toString());
const params = {
  id: reclamationId,
  actionName: 'restore',
};

resourceControllerService.runReclamationAction(params)
  .then(res => {
    console.log('runReclamationAction() response:\n' + JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
reclamation = resource_controller_service.run_reclamation_action(
    id=reclamation_id,
    action_name='restore'
).get_result()

print('\nrun_reclamation_action() response:\n',
      json.dumps(reclamation, indent=2))
runReclamationActionOptions := resourceControllerService.NewRunReclamationActionOptions(
  reclamationID,
  "restore",
)

reclamation, response, err := resourceControllerService.RunReclamationAction(runReclamationActionOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(reclamation, "", "  ")
fmt.Printf("\nRunReclamationAction() response:\n%s\n", string(b))