

 **此页面仅适用于使用文件库和 2012 年原始 REST API 的 Amazon Glacier 服务的现有客户。**

如果您正在寻找归档存储解决方案，建议使用 Amazon S3 中的 Amazon Glacier 存储类别 S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval 和 S3 Glacier Deep Archive。要了解有关这些存储选项的更多信息，请参阅 [Amazon Glacier 存储类别](https://aws.amazon.com/s3/storage-classes/glacier/)。

Amazon Glacier（最初基于保管库的独立服务）不再接受新客户。Amazon Glacier 是一项独立的服务 APIs ，拥有自己的服务，可将数据存储在文件库中，不同于亚马逊 S3 和 Amazon S3 Glacier 存储类别。在 Amazon Glacier 中，您现有的数据将确保安全，并且可以无限期地访问。无需进行迁移。对于低成本、长期的存档存储， AWS 建议[使用 Amazon S3 Glacier 存储类别，这些存储类别](https://aws.amazon.com/s3/storage-classes/glacier/)基于S3存储桶 APIs、完全 AWS 区域 可用性、更低的成本和 AWS 服务集成，可提供卓越的客户体验。如果您希望加强功能，可以考虑使用我们的 [AWS 将数据从 Amazon Glacier 文件库传输到 Amazon S3 Glacier 存储类别的解决方案指南](https://aws.amazon.com/solutions/guidance/data-transfer-from-amazon-s3-glacier-vaults-to-amazon-s3/)，迁移到 Amazon S3 Glacier 存储类别。

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

# 在 Amazon Glacier 中删除文件库
<a name="deleting-vaults"></a>

只有在自上次计算的清单起文件库中没有任何档案，并且自上次清单盘点以来没有对文件库执行过任何写入操作时，Amazon Glacier（Amazon Glacier）才会删除文件库。有关删除存档的信息，请参阅[删除 Amazon Glacier 中的档案](deleting-an-archive.md)。有关下载文件库清单，请参阅[在 Amazon Glacier 中下载文件库清单](vault-inventory.md)。

 

**注意**  
Amazon Glacier 每 24 小时会定期为每个文件库准备一份清单。由于清单可能没有反映最新信息，因此，Amazon Glacier 会通过检查自上次文件库清单盘点以来是否执行过任何写入操作来确保文件库确实是空的。

**注意**  
有关自动删除文件库档案的信息，请参阅[在 Amazon S3 Glacier 中自动删除文件库档案](https://aws.amazon.com/solutions/guidance/automated-deletion-of-vault-archives-in-amazon-s3-glacier/)。

**Topics**
+ [使用适用于 Java 的 AWS SDK 在 Amazon Glacier 中删除文件库](deleting-vaults-sdk-java.md)
+ [使用适用于 .NET 的 AWS SDK 在 Amazon Glacier 中删除文件库](deleting-vaults-sdk-dotnet.md)
+ [使用 REST API 在 Amazon Glacier 中删除文件库](deleting-vault-rest-api.md)
+ [使用 Amazon Glacier 控制台删除空文件库](deleting-vaults-console.md)
+ [在 Amazon Glacier 中删除文件库使用 AWS Command Line Interface](deleting-vaults-cli.md)

# 使用适用于 Java 的 AWS SDK 在 Amazon Glacier 中删除文件库
<a name="deleting-vaults-sdk-java"></a>

以下是使用适用于 Java 的 AWS SDK 低级 API 删除文件库的步骤。

 

1. 创建 `AmazonGlacierClient` 类（客户端）的实例。

   您需要指定要从中删除文件库的 AWS 区域。您使用此客户端执行的所有操作都会应用到该 AWS 区域。

1. 通过创建一个 `DeleteVaultRequest` 类的实例提供请求信息。

   您需要提供文件库名称和账户 ID。如果您不提供账户 ID，则系统会使用与您提供来对请求签名的证书相关联的账户 ID。有关更多信息，请参阅[适用于 Java 的 AWS SDK 与 Amazon Glacier 搭配使用](using-aws-sdk-for-java.md)。

1. 以参数形式提供请求对象，运行 `deleteVault` 方法。

   Amazon Glacier（Amazon Glacier）只会删除空文件库。有关更多信息，请参阅[删除文件库（DELETE vault）](api-vault-delete.md)。

以下 Java 代码段说明了前面的步骤。

 

```
try {
    DeleteVaultRequest request = new DeleteVaultRequest()
        .withVaultName("*** provide vault name ***");

    client.deleteVault(request);
    System.out.println("Deleted vault: " + vaultName);
} catch (Exception e) {
    System.err.println(e.getMessage());
}
```

**注意**  
有关底层 REST API 的信息，请参阅[删除文件库（DELETE vault）](api-vault-delete.md)。

## 示例：使用适用于 Java 的 AWS SDK 删除文件库
<a name="deleting-vaults-sdk-java-example"></a>

有关工作代码示例，请参阅[示例：使用适用于 Java 的 AWS SDK 创建文件库](creating-vaults-sdk-java.md#creating-vaults-sdk-java-example)。该 Java 代码示例显示了基本文件库操作，包括创建和删除文件库。

# 使用适用于 .NET 的 AWS SDK 在 Amazon Glacier 中删除文件库
<a name="deleting-vaults-sdk-dotnet"></a>

适用于 .NET 的 Amazon SDK 提供的[高级和低级 API](using-aws-sdk.md) 都提供了删除文件库的方法。

**Topics**
+ [使用适用于 .NET 的 AWS SDK 高级 API 删除文件库](#deleting-vault-sdk-dotnet-high-level)
+ [使用适用于 .NET 的 AWS SDK 低级 API 删除文件库](#deleting-vault-sdk-dotnet-low-level)

## 使用适用于 .NET 的 AWS SDK 高级 API 删除文件库
<a name="deleting-vault-sdk-dotnet-high-level"></a>

该高级 API 的 `ArchiveTransferManager` 类提供了您可以用来删除文件库的 `DeleteVault` 方法。

### 示例：使用适用于 .NET 的 AWS SDK 高级 API 删除文件库
<a name="deleting-vaults-sdk-dotnet-high-level-example"></a>

有关工作代码示例，请参阅[示例：使用高级 API 进行文件库操作 适用于 .NET 的 AWS SDK](creating-vaults-dotnet-sdk.md#vault-operations-example-dotnet-highlevel)。该 C\$1 代码示例显示了基本文件库操作，包括创建和删除文件库。

## 使用适用于 .NET 的 AWS SDK 低级 API 删除文件库
<a name="deleting-vault-sdk-dotnet-low-level"></a>

以下是使用适用于 .NET 的 AWS SDK 删除文件库的步骤。

 

1. 创建 `AmazonGlacierClient` 类（客户端）的实例。

   您需要指定要从中删除文件库的 AWS 区域。您使用此客户端执行的所有操作都会应用到该 AWS 区域。

1. 通过创建一个 `DeleteVaultRequest` 类的实例提供请求信息。

   您需要提供文件库名称和账户 ID。如果您不提供账户 ID，则系统会使用与您提供来对请求签名的证书相关联的账户 ID。有关更多信息，请参阅[将适用于 .NET 的 AWS SDK 与 Amazon Glacier 结合使用](using-aws-sdk-for-dot-net.md)。

1. 以参数形式提供请求对象，运行 `DeleteVault` 方法。

   Amazon Glacier（Amazon Glacier）只会删除空文件库。有关更多信息，请参阅[删除文件库（DELETE vault）](api-vault-delete.md)。

以下 C\$1 代码段说明了前面的步骤。该代码段会检索存在于默认 AWS 区域的文件库的元数据信息。

```
AmazonGlacier client;
client = new AmazonGlacierClient(Amazon.RegionEndpoint.USEast1);

DeleteVaultRequest request = new DeleteVaultRequest()
{
  VaultName = "*** provide vault name ***"
};

DeleteVaultResponse response = client.DeleteVault(request);
```

**注意**  
有关底层 REST API 的信息，请参阅[删除文件库（DELETE vault）](api-vault-delete.md)。

### 示例：使用适用于 .NET 的 AWS SDK 低级 API 删除文件库
<a name="creating-vaults-sdk-dotnet-low-level-example"></a>

有关工作代码示例，请参阅[示例：使用的低级 API 进行文件库操作 适用于 .NET 的 AWS SDK](creating-vaults-dotnet-sdk.md#vault-operations-example-dotnet-lowlevel)。该 C\$1 代码示例显示了基本文件库操作，包括创建和删除文件库。

# 使用 REST API 在 Amazon Glacier 中删除文件库
<a name="deleting-vault-rest-api"></a>

要使用 REST API 删除文件库，请参阅[删除文件库（DELETE vault）](api-vault-delete.md)。

# 使用 Amazon Glacier 控制台删除空文件库
<a name="deleting-vaults-console"></a>

**注意**  
在删除文件库之前，必须先删除该文件库中的所有现有档案。为此，您可以使用 REST API、 适用于 .NET 的 AWS SDK、或使用 AWS Command Line Interface (AWS CLI) 编写代码来发出删除档案请求。 适用于 Java 的 AWS SDK有关删除档案的信息，请参阅[步骤 5：从 Amazon Glacier 中的文件库删除档案](getting-started-delete-archive.md)。

文件库为空后，可以使用以下步骤将其删除。

**使用 Amazon Glacier 控制台删除空文件库**

1. 登录 AWS 管理控制台 并在亚马逊 Glacier 控制台上打开亚马[逊 Glacier 控制台](https://console.aws.amazon.com/glacier/home)。

1. 在 **“选择区域”** 下，选择文件库 AWS 区域 所在的位置。

1. 在左侧导航窗格中，选择**文件库**。

1. 在**文件库**列表中，选择要删除的文件库名称旁边的选项按钮，然后选择页面顶部的**删除**。

1. 在**删除文件库**对话框中，选择 **删除**以确认要删除文件库。
**重要**  
删除文件库的操作无法撤消。

1. 要验证您是否已删除文件库，请打开**文件库**列表并输入您删除的文件库的名称。如果无法找到此文件库，则表示删除成功。

# 在 Amazon Glacier 中删除文件库使用 AWS Command Line Interface
<a name="deleting-vaults-cli"></a>

可以使用 AWS Command Line Interface （AWS CLI）删除 Amazon Glacier（Amazon Glacier）中的空文件库和非空文件库。

**Topics**
+ [（先决条件）设置 AWS CLI](#Creating-Vaults-CLI-Setup)
+ [示例：使用删除空文件库 AWS CLI](#Deleting-Empty-Vaults-CLI-Implementation)
+ [示例：使用删除非空文件库 AWS CLI](#Deleting-A-Nonempty-Vaults-CLI-Implementation)

## （先决条件）设置 AWS CLI
<a name="Creating-Vaults-CLI-Setup"></a>

1. 下载并配置 AWS CLI。有关说明，请参阅《AWS Command Line Interface 用户指南》**中的以下主题：

    [正在安装 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) 

   [正在配置 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

1. 在命令提示符下输入以下命令来验证您的 AWS CLI 设置。这些命令没有显式提供凭证，因此将使用默认配置文件的凭证。
   + 尝试使用 help 命令。

     ```
     aws help
     ```
   + 要获取已配置账户上 Amazon Glacier 文件库的列表，请使用 `list-vaults` 命令。*123456789012*用您的 AWS 账户 身份证替换。

     ```
     aws glacier list-vaults --account-id 123456789012
     ```
   + 要查看的当前配置数据 AWS CLI，请使用`aws configure list`命令。

     ```
     aws configure list
     ```

## 示例：使用删除空文件库 AWS CLI
<a name="Deleting-Empty-Vaults-CLI-Implementation"></a>
+ 使用 `delete-vault` 命令删除不包含存档的文件库。
  + 

    ```
    aws glacier delete-vault --vault-name awsexamplevault --account-id 111122223333
    ```

## 示例：使用删除非空文件库 AWS CLI
<a name="Deleting-A-Nonempty-Vaults-CLI-Implementation"></a>

只有在自上次计算的清单起文件库中没有任何档案，并且自上次清单盘点以来没有对文件库执行过任何写入操作时，Amazon Glacier 才会删除文件库。删除非空文件库分为三个步骤： IDs从文件库的库存报告中检索档案，删除每个档案，然后删除文件库。

1. 使用 `initiate-job` 命令启动清单检索任务。

   ```
   aws glacier initiate-job --vault-name awsexamplevault --account-id 111122223333 --job-parameters '{"Type": "inventory-retrieval"}'
   ```

    预期输出：

   ```
   {
       "location": "/111122223333/vaults/awsexamplevault/jobs/*** jobid ***", 
       "jobId": "*** jobid ***"
   }
   ```

1. 使用 `describe-job` 命令检查上一个检索任务的状态。

   ```
   aws glacier describe-job --vault-name awsexamplevault --account-id 111122223333 --job-id *** jobid ***
   ```

    预期输出：

   ```
   {
       "InventoryRetrievalParameters": {
           "Format": "JSON"
       }, 
       "VaultARN": "*** vault arn ***", 
       "Completed": false, 
       "JobId": "*** jobid ***", 
       "Action": "InventoryRetrieval", 
       "CreationDate": "*** job creation date ***", 
       "StatusCode": "InProgress"
   }
   ```

1. 等待任务完成。

   您必须等到任务输出已作好供您下载的准备。如果您在文件库中设置了通知配置，或者在启动任务时指定了 Amazon Simple Notification Service（Amazon SNS）主题，则 Amazon Glacier 会在完成任务后向该主题发送消息。

   您可以设置文件库的特定事件的通知配置。有关更多信息，请参阅[在 Amazon Glacier 中配置文件库通知](configuring-notifications.md)。只要发生特定事件，Amazon Glacier 就会向指定的 SNS 主题发送消息。

1. 完成后，使用 `get-job-output` 命令将检索任务下载到文件 `output.json`。

   ```
   aws glacier get-job-output --vault-name awsexamplevault --account-id 111122223333 --job-id *** jobid *** output.json
   ```

   此命令会生成一个包含以下字段的文件。

   ```
   {
   "VaultARN":"arn:aws:glacier:region:111122223333:vaults/awsexamplevault",
   "InventoryDate":"*** job completion date ***",
   "ArchiveList":[
   {"ArchiveId":"*** archiveid ***",
   "ArchiveDescription":*** archive description (if set) ***,
   "CreationDate":"*** archive creation date ***",
   "Size":"*** archive size (in bytes) ***",
   "SHA256TreeHash":"*** archive hash ***"
   }
   {"ArchiveId":
   ...
   ]}
   ```

1. 使用 `delete-archive` 命令从文件库中删除每个档案，直到不保留任何档案。

   ```
   aws glacier delete-archive --vault-name awsexamplevault --account-id 111122223333 --archive-id "*** archiveid ***"
   ```
**注意**  
如果您的档案 ID 以连字符或其他特殊字符开头，则需要将其放在引号中才能运行此命令。

1. 使用 `initiate-job` 命令启动新的清单检索任务。

   ```
   aws glacier initiate-job --vault-name awsexamplevault --account-id 111122223333 --job-parameters '{"Type": "inventory-retrieval"}'
   ```

1. 完成后，使用 `delete-vault` 命令删除不带存档的文件库。

   ```
   aws glacier delete-vault --vault-name awsexamplevault --account-id 111122223333
   ```