此页面仅适用于使用文件库和 2012 年原始 REST API 的 Amazon Glacier 服务的现有客户。
如果您正在寻找归档存储解决方案,建议使用 Amazon S3 中的 Amazon Glacier 存储类别 S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval 和 S3 Glacier Deep Archive。要了解有关这些存储选项的更多信息,请参阅 Amazon Glacier 存储类别
Amazon Glacier(最初基于保管库的独立服务)不再接受新客户。Amazon Glacier 是一项独立的服务 APIs ,拥有自己的服务,可将数据存储在文件库中,不同于亚马逊 S3 和 Amazon S3 Glacier 存储类别。在 Amazon Glacier 中,您现有的数据将确保安全,并且可以无限期地访问。无需进行迁移。对于低成本、长期的存档存储, AWS 建议使用 Amazon S3 Glacier 存储类别,这些存储类别
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon Glacier 中使用适用于 .NET 的 AWS SDK 在单个操作中上传档案
适用于 .NET 的 Amazon SDK 提供的高级和低级 API 都提供了在单个操作中上传档案的方法。
使用适用于 .NET 的 AWS SDK 高级 API 上传档案
该高级 API 的 ArchiveTransferManager 类提供了您可以用来将档案上传到文件库的 Upload 方法。
注意
您可以使用 Upload 方法上传小型或大型文件。根据您要上传的文件大小,此方法会确定是在单个操作中上传文件,还是使用分段上传 API 分段上传文件。
示例:使用适用于 .NET 的 AWS SDK 高级 API 上传档案
以下 C# 代码示例将档案上传到美国西部(俄勒冈州)区域中的文件库(examplevault)。
有关如何运行以下示例的分步说明,请参阅运行代码示例。您需要更新待上传文件名称旁所显示的代码。
using System; using Amazon.Glacier; using Amazon.Glacier.Transfer; using Amazon.Runtime; namespace glacier.amazon.com.rproxy.govskope.ca.docsamples { class ArchiveUploadHighLevel { static string vaultName = "examplevault"; static string archiveToUpload = "*** Provide file name (with full path) to upload ***"; public static void Main(string[] args) { try { var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USWest2); // Upload an archive. string archiveId = manager.Upload(vaultName, "upload archive test", archiveToUpload).ArchiveId; Console.WriteLine("Archive ID: (Copy and save this ID for use in other examples.) : {0}", archiveId); Console.WriteLine("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(); } } }
使用适用于 .NET 的 AWS SDK 低级 API 在单个操作中上传档案
该低级 API 为所有档案操作提供了方法。下面是使用适用于 .NET 的 AWS SDK 上传档案的步骤。
-
创建
AmazonGlacierClient类(客户端)的实例。您需要指定要上传档案的 AWS 区域。您使用此客户端执行的所有操作都会应用到该 AWS 区域。
-
通过创建一个
UploadArchiveRequest类的实例提供请求信息。除了您要上传的数据以外,您还需要提供有效载荷的校验和(SHA-256 树形哈希)、文件库名称和您的账户 ID。
如果您不提供账户 ID,则系统会使用与您提供来对请求签名的证书相关联的账户 ID。有关更多信息,请参阅将适用于 .NET 的 AWS SDK 与 Amazon Glacier 结合使用。
-
以参数形式提供请求对象,运行
UploadArchive方法。作为响应,Amazon Glacier 返回新上传的档案的档案 ID。
示例:使用适用于 .NET 的 AWS SDK 低级 API 在单个操作中上传档案
以下 C# 代码示例说明了前面的步骤。该示例使用适用于 .NET 的 AWS SDK 将档案上传到文件库(examplevault)。
注意
有关用于在单个请求中上传档案的底层 REST API 的信息,请参阅上传档案(POST archive)。
有关如何运行以下示例的分步说明,请参阅运行代码示例。您需要更新待上传文件名称旁所显示的代码。
using System; using System.IO; using Amazon.Glacier; using Amazon.Glacier.Model; using Amazon.Runtime; namespace glacier.amazon.com.rproxy.govskope.ca.docsamples { class ArchiveUploadSingleOpLowLevel { static string vaultName = "examplevault"; static string archiveToUpload = "*** Provide file name (with full path) to upload ***"; public static void Main(string[] args) { AmazonGlacierClient client; try { using (client = new AmazonGlacierClient(Amazon.RegionEndpoint.USWest2)) { Console.WriteLine("Uploading an archive."); string archiveId = UploadAnArchive(client); Console.WriteLine("Archive ID: {0}", archiveId); } } 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 string UploadAnArchive(AmazonGlacierClient client) { using (FileStream fileStream = new FileStream(archiveToUpload, FileMode.Open, FileAccess.Read)) { string treeHash = TreeHashGenerator.CalculateTreeHash(fileStream); UploadArchiveRequest request = new UploadArchiveRequest() { VaultName = vaultName, Body = fileStream, Checksum = treeHash }; UploadArchiveResponse response = client.UploadArchive(request); string archiveID = response.ArchiveId; return archiveID; } } } }