

 **此页面仅适用于使用文件库和 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 中创建文件库
创建文件库

创建文件库的操作会向您账户中的文件库集合添加文件库。一个 AWS 账户最多可以为每个 AWS 区域创建 1000 个文件库。有关 Amazon Glacier（Amazon Glacier）支持的 AWS 区域的列表，请参阅《AWS 一般参考》**中的[区域和端点](https://docs.aws.amazon.com/general/latest/gr/rande.html#glacier_region)。

创建文件库时，您必须提供文件库名称。以下是文件库的命名要求：

 
+  名称长度在 1 和 255 个字符之间。
+ 允许的字符包括 a-z、A-Z、0-9、'-'（下划线）、'\$1'（连字符）和 '.'（半角句点）。

文件库名称在一个账户以及创建文件库所在的 AWS 区域内必须是唯一的。即，一个账户可以在不同的 AWS 区域创建名称相同的文件库，但不能在同一 AWS 区域创建名称相同的文件库。

**Topics**
+ [

# 使用适用于 Java 的 AWS SDK 在 Amazon Glacier 中创建文件库
](creating-vaults-sdk-java.md)
+ [

# 在 Amazon Glacier 中创建文件库使用 适用于 .NET 的 AWS SDK
](creating-vaults-dotnet-sdk.md)
+ [

# 使用 REST API 在 Amazon Glacier 中创建文件库
](creating-vaults-rest-api.md)
+ [

# 使用 Amazon Glacier 控制台创建文件库
](creating-vaults-console.md)
+ [

# 使用 AWS Command Line Interface在 Amazon Glacier 中创建文件库
](creating-vaults-cli.md)

# 使用适用于 Java 的 AWS SDK 在 Amazon Glacier 中创建文件库
使用 Java 创建文件库

该低级 API 为所有文件库操作提供了方法，包括创建和删除文件库、获取文件库描述，以及获取特定 AWS 区域创建的文件库的列表。以下是使用适用于 Java 的 AWS SDK 创建文件库的步骤。

 

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

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

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

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

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

   Amazon Glacier 返回的响应在 `CreateVaultResult` 对象中提供。

以下 Java 代码段说明了前面的步骤。该代码段在 `us-west-2` 区域创建了文件库。它打印的 `Location` 是文件库的相对 URI，该 URI 包括您的账户 ID、AWS 区域和文件库名称。

```
AmazonGlacierClient client = new AmazonGlacierClient(credentials);
client.setEndpoint("https://glacier.us-west-2.amazonaws.com");

CreateVaultRequest request = new CreateVaultRequest()
    .withVaultName("*** provide vault name ***");
CreateVaultResult result = client.createVault(request);

System.out.println("Created vault successfully: " + result.getLocation());
```

**注意**  
有关底层 REST API 的信息，请参阅[创建文件库（PUT vault）](api-vault-put.md)。

## 示例：使用适用于 Java 的 AWS SDK 创建文件库
示例：使用 Java 的文件库操作

以下 Java 代码示例在 `us-west-2` 区域创建了文件库（有关 AWS 区域的更多信息，请参阅[访问 Amazon Glacier](amazon-glacier-accessing.md)）。此外，该代码示例还检索了文件库信息，列出了同一 AWS 区域的所有文件库，然后删除了创建的文件库。

有关如何运行以下示例的分步说明，请参阅[使用 Eclipse 运行 Amazon Glacier 的 Java 示例](using-aws-sdk-for-java.md#setting-up-and-testing-sdk-java)。

**Example**  

```
import java.io.IOException;
import java.util.List;

import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.glacier.AmazonGlacierClient;
import com.amazonaws.services.glacier.model.CreateVaultRequest;
import com.amazonaws.services.glacier.model.CreateVaultResult;
import com.amazonaws.services.glacier.model.DeleteVaultRequest;
import com.amazonaws.services.glacier.model.DescribeVaultOutput;
import com.amazonaws.services.glacier.model.DescribeVaultRequest;
import com.amazonaws.services.glacier.model.DescribeVaultResult;
import com.amazonaws.services.glacier.model.ListVaultsRequest;
import com.amazonaws.services.glacier.model.ListVaultsResult;


public class AmazonGlacierVaultOperations {

    public static AmazonGlacierClient client;

    public static void main(String[] args) throws IOException {

    	ProfileCredentialsProvider credentials = new ProfileCredentialsProvider();
    	
        client = new AmazonGlacierClient(credentials);
        client.setEndpoint("https://glacier.us-east-1.amazonaws.com/");
        
        String vaultName = "examplevaultfordelete";

        try {            
            createVault(client, vaultName);
            describeVault(client, vaultName); 
            listVaults(client);
            deleteVault(client, vaultName);      

        } catch (Exception e) {
            System.err.println("Vault operation failed." + e.getMessage());
        }
    }

    private static void createVault(AmazonGlacierClient client, String vaultName) {
        CreateVaultRequest createVaultRequest = new CreateVaultRequest()
            .withVaultName(vaultName);
        CreateVaultResult createVaultResult = client.createVault(createVaultRequest);

        System.out.println("Created vault successfully: " + createVaultResult.getLocation());
    }

    private static void describeVault(AmazonGlacierClient client, String vaultName) {
        DescribeVaultRequest describeVaultRequest = new DescribeVaultRequest()
            .withVaultName(vaultName);
        DescribeVaultResult describeVaultResult  = client.describeVault(describeVaultRequest);

        System.out.println("Describing the vault: " + vaultName);
        System.out.print(
                "CreationDate: " + describeVaultResult.getCreationDate() +
                "\nLastInventoryDate: " + describeVaultResult.getLastInventoryDate() +
                "\nNumberOfArchives: " + describeVaultResult.getNumberOfArchives() + 
                "\nSizeInBytes: " + describeVaultResult.getSizeInBytes() + 
                "\nVaultARN: " + describeVaultResult.getVaultARN() + 
                "\nVaultName: " + describeVaultResult.getVaultName());
    }

    private static void listVaults(AmazonGlacierClient client) {
        ListVaultsRequest listVaultsRequest = new ListVaultsRequest();
        ListVaultsResult listVaultsResult = client.listVaults(listVaultsRequest);

        List<DescribeVaultOutput> vaultList = listVaultsResult.getVaultList();
        System.out.println("\nDescribing all vaults (vault list):");
        for (DescribeVaultOutput vault : vaultList) {
            System.out.println(
                    "\nCreationDate: " + vault.getCreationDate() +
                    "\nLastInventoryDate: " + vault.getLastInventoryDate() +
                    "\nNumberOfArchives: " + vault.getNumberOfArchives() + 
                    "\nSizeInBytes: " + vault.getSizeInBytes() + 
                    "\nVaultARN: " + vault.getVaultARN() + 
                    "\nVaultName: " + vault.getVaultName()); 
        }
    }

    private static void deleteVault(AmazonGlacierClient client, String vaultName) {
        DeleteVaultRequest request = new DeleteVaultRequest()
            .withVaultName(vaultName);
        client.deleteVault(request);
        System.out.println("Deleted vault: " + vaultName);
    }

}
```

# 在 Amazon Glacier 中创建文件库使用 适用于 .NET 的 AWS SDK
使用 .NET 创建文件库

适用于.NET 的 Amazon SDK APIs 提供的[高级和低级](using-aws-sdk.md)都提供了一种创建文件库的方法。

**Topics**
+ [

## 使用的高级别 API 创建文件库 适用于 .NET 的 AWS SDK
](#create-vault-dotnet-highlevel)
+ [

## 使用的低级 API 创建文件库 适用于 .NET 的 AWS SDK
](#create-vault-dotnet-lowlevel)

## 使用的高级别 API 创建文件库 适用于 .NET 的 AWS SDK


高级 API 的 `ArchiveTransferManager` 类提供了您可以用来在 AWS 区域创建文件库的 `CreateVault` 方法。

### 示例：使用高级 API 进行文件库操作 适用于 .NET 的 AWS SDK
示例：使用 .NET 的文件库操作

以下 C\$1 代码示例在美国西部（俄勒冈州）区域创建了文件库，然后删除了该文件库。有关可以在其中创建文件库 AWS 区域 的列表，请参阅[访问 Amazon Glacier](amazon-glacier-accessing.md)。

有关如何运行以下示例的 step-by-step说明，请参阅[运行代码示例](using-aws-sdk-for-dot-net.md#setting-up-and-testing-sdk-dotnet)。您需要更新文件库名称旁显示的代码。

**Example**  

```
using System;
using Amazon.Glacier;
using Amazon.Glacier.Transfer;
using Amazon.Runtime;

namespace glacier.amazon.com.rproxy.govskope.ca.docsamples
{
  class VaultCreateDescribeListVaultsDeleteHighLevel
  {
    static string vaultName = "*** Provide vault name ***";

    public static void Main(string[] args)
    {
      try
      {
          var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USWest2);
          manager.CreateVault(vaultName);
          Console.WriteLine("Vault created. To delete the vault, press Enter");
          Console.ReadKey();
          manager.DeleteVault(vaultName);
          Console.WriteLine("\nVault deleted. To continue, press Enter");
          Console.ReadKey();
      }
      catch (AmazonGlacierException e) { Console.WriteLine(e.Message); }
      catch (AmazonServiceException e) { Console.WriteLine(e.Message); }
      catch (Exception e) { Console.WriteLine(e.Message); }
      Console.WriteLine("To continue, press Enter");
      Console.ReadKey();
    }
  }
}
```

## 使用的低级 API 创建文件库 适用于 .NET 的 AWS SDK


低级 API 为所有文件库操作提供了方法，包括创建和删除文件库、获取文件库描述以及获取在特定文件库中创建的文件库的列表。 AWS 区域以下是使用 适用于 .NET 的 AWS SDK创建文件库的步骤。

 

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

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

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

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

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

   Amazon Glacier 返回的响应在 `CreateVaultResponse` 对象中提供。

### 示例：使用的低级 API 进行文件库操作 适用于 .NET 的 AWS SDK
示例：使用 .NET 的文件库操作

以下 C\$1 示例说明了前面的步骤。此示例可在美国西部（俄勒冈州）区域创建文件库。此外，该代码示例还会检索文件库信息，列出同一个文件库中的所有文件库 AWS 区域，然后删除创建的文件库。`Location`打印的是文件库的相对 URI，其中包括您的账户 ID AWS 区域、和文件库名称。

**注意**  
有关底层 REST API 的信息，请参阅[创建文件库（PUT vault）](api-vault-put.md)。

有关如何运行以下示例的 step-by-step说明，请参阅[运行代码示例](using-aws-sdk-for-dot-net.md#setting-up-and-testing-sdk-dotnet)。您需要更新文件库名称旁显示的代码。

**Example**  

```
using System;
using Amazon.Glacier;
using Amazon.Glacier.Model;
using Amazon.Runtime;

namespace glacier.amazon.com.rproxy.govskope.ca.docsamples
{
  class VaultCreateDescribeListVaultsDelete
  {
    static string vaultName = "*** Provide vault name ***";
    static AmazonGlacierClient client;

    public static void Main(string[] args)
    {
       try
      {
         using (client = new AmazonGlacierClient(Amazon.RegionEndpoint.USWest2))
        {
          Console.WriteLine("Creating a vault.");
          CreateAVault();
          DescribeVault();
          GetVaultsList();
          Console.WriteLine("\nVault created. Now press Enter to delete the vault...");
          Console.ReadKey();
          DeleteVault();
        }
      }
      catch (AmazonGlacierException e) { Console.WriteLine(e.Message); }
      catch (AmazonServiceException e) { Console.WriteLine(e.Message); }
      catch (Exception e) { Console.WriteLine(e.Message); }
      Console.WriteLine("To continue, press Enter");
      Console.ReadKey();
    }

    static void CreateAVault()
    {
      CreateVaultRequest request = new CreateVaultRequest()
      {
        VaultName = vaultName
      };
      CreateVaultResponse response = client.CreateVault(request);
      Console.WriteLine("Vault created: {0}\n", response.Location); 
    }

    static void DescribeVault()
    {
      DescribeVaultRequest describeVaultRequest = new DescribeVaultRequest()
      {
        VaultName = vaultName
      };
   
      DescribeVaultResponse describeVaultResponse = client.DescribeVault(describeVaultRequest);
      Console.WriteLine("\nVault description...");
      Console.WriteLine(
        "\nVaultName: " + describeVaultResponse.VaultName +
        "\nVaultARN: " + describeVaultResponse.VaultARN +
        "\nVaultCreationDate: " + describeVaultResponse.CreationDate +
        "\nNumberOfArchives: " + describeVaultResponse.NumberOfArchives +
        "\nSizeInBytes: " + describeVaultResponse.SizeInBytes +
        "\nLastInventoryDate: " + describeVaultResponse.LastInventoryDate 
        );
    }

    static void GetVaultsList()
    {
      string lastMarker = null;
      Console.WriteLine("\n List of vaults in your account in the specific region ...");
      do
      {
        ListVaultsRequest request = new ListVaultsRequest()
        {
          Marker = lastMarker
        };
        ListVaultsResponse response = client.ListVaults(request);
         
        foreach (DescribeVaultOutput output in response.VaultList)
        {
          Console.WriteLine("Vault Name: {0} \tCreation Date: {1} \t #of archives: {2}",
                            output.VaultName, output.CreationDate, output.NumberOfArchives); 
        }
        lastMarker = response.Marker;
      } while (lastMarker != null);
    }

    static void DeleteVault()
    {
      DeleteVaultRequest request = new DeleteVaultRequest()
      {
        VaultName = vaultName
      };
      DeleteVaultResponse response = client.DeleteVault(request);
    }
  }
}
```

# 使用 REST API 在 Amazon Glacier 中创建文件库
使用 REST 创建文件库

要使用 REST API 创建文件库，请参阅[创建文件库（PUT vault）](api-vault-put.md)。

# 使用 Amazon Glacier 控制台创建文件库
使用控制台创建文件库

要使用 Amazon Glacier（Amazon Glacier）控制台创建文件库，请参阅《入门》教程**中的[步骤 2：在 Amazon Glacier 中创建文件库](getting-started-create-vault.md)。

# 使用 AWS Command Line Interface在 Amazon Glacier 中创建文件库
使用 AWS CLI 创建文件库

按照以下步骤使用 AWS Command Line Interface（AWS CLI）在 Amazon Glacier（Amazon Glacier）中创建文件库。

**Topics**
+ [

## （先决条件）设置 AWS CLI
](#Creating-Vaults-CLI-Setup)
+ [

## 示例：使用 AWS CLI 创建文件库
](#Creating-Vaults-CLI-Implementation)

## （先决条件）设置 AWS CLI


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 账户 ID。

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

     ```
     aws configure list
     ```

## 示例：使用 AWS CLI 创建文件库


1. 使用 `create-vault` 命令在账户 *111122223333* 下创建一个名为 *awsexamplevault* 的文件库。

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

   预期输出：

   ```
   {
       "location": "/111122223333/vaults/awsexamplevault"
   }
   ```

1. 使用 `describe-vault` 命令验证创建。

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