此頁面僅適用於使用 Vault 和 REST API 2012 年原始版本的 S3 Glacier 服務的現有客戶。
如果您要尋找封存儲存解決方案,建議您在 Amazon S3、S3 Glacier S3 Instant Retrieval、S3 Glacier Flexible Retrieval 和 S3 Glacier Deep Archive 中使用 S3 Glacier 儲存類別。若要進一步了解這些儲存選項,請參閱 Amazon S3
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS SDK for .NET 從 S3 Glacier 中的文件庫下載封存
以下 C# 程式碼範例使用 AWS SDK for .NET 高階 API,來下載您之前在 使用 AWS SDK for .NET 將封存上傳至 S3 Glacier 中的文件庫 中上傳的封存。在程式碼範例中,請注意下列事項:
-
此範例會為指定的 Amazon S3 Glacier 區域端點建立
ArchiveTransferManager
類別的執行個體。 -
此程式碼範例使用美國西部 (奧勒岡) 區域 (
us-west-2
),比對之前在 步驟 2:在 S3 Glacier 中建立保存庫 中建立文件庫的位置。 -
本範例使用
ArchiveTransferManager
類別的Download
API 操作以下載封存。此範例會建立 Amazon Simple Notification Service (Amazon SNS) 主題,以及訂閱該主題的 Amazon Simple Queue Service (Amazon SQS) 佇列。若您依照 步驟 1:開始 S3 Glacier 之前 的指示建立 AWS Identity and Access Management (IAM) 管理員使用者,使用者可擁有需要的 IAM 許可,以建立並使用 Amazon SNS 主題和 Amazon SQS 佇列。 -
此範例接著啟動封存擷取任務,輪詢佇列以使封存可用。封存可用時,就會開始下載。如需封存擷取時間的詳細資訊,請參閱 封存擷取選項。
如需執行此範例的逐步說明,請參閱 執行程式碼範例。您需要按照在 步驟 3:將封存上傳至 S3 Glacier 中的保存庫 中上傳之檔案的封存 ID 來更新程式碼。
範例 :使用 AWS SDK for .NET 的高階 API 下載封存
using System; using Amazon.Glacier; using Amazon.Glacier.Transfer; using Amazon.Runtime; namespace glacier.amazon.com.rproxy.goskope.com.docsamples { class ArchiveDownloadHighLevel_GettingStarted { static string vaultName = "examplevault"; static string archiveId = "*** Provide archive ID ***"; static string downloadFilePath = "*** Provide the file name and path to where to store the download ***"; public static void Main(string[] args) { try { var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USWest2); var options = new DownloadOptions(); options.StreamTransferProgress += ArchiveDownloadHighLevel_GettingStarted.progress; // Download an archive. Console.WriteLine("Intiating the archive retrieval job and then polling SQS queue for the archive to be available."); Console.WriteLine("Once the archive is available, downloading will begin."); manager.Download(vaultName, archiveId, downloadFilePath, options); 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(); } static int currentPercentage = -1; static void progress(object sender, StreamTransferProgressArgs args) { if (args.PercentDone != currentPercentage) { currentPercentage = args.PercentDone; Console.WriteLine("Downloaded {0}%", args.PercentDone); } } } }