使用 的 S3 Glacier 範例 AWS SDK for .NET - AWS SDK for .NET

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 的 S3 Glacier 範例 AWS SDK for .NET

下列程式碼範例示範如何搭配 AWS SDK for .NET S3 Glacier 使用 來執行動作和實作常見案例。

Actions 是大型程式的程式碼摘錄,必須在內容中執行。雖然動作會示範如何呼叫個別服務函數,但您可以在其相關案例中查看內容中的動作。

每個範例都包含完整原始程式碼的連結,您可以在其中找到如何在內容中設定和執行程式碼的指示。

開始使用

下列程式碼範例示範如何開始使用 Amazon S3 Glacier。

AWS SDK for .NET
注意

還有更多 。 GitHub尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

using Amazon.Glacier; using Amazon.Glacier.Model; namespace GlacierActions; public static class HelloGlacier { static async Task Main() { var glacierService = new AmazonGlacierClient(); Console.WriteLine("Hello Amazon Glacier!"); Console.WriteLine("Let's list your Glacier vaults:"); // You can use await and any of the async methods to get a response. // Let's get the vaults using a paginator. var glacierVaultPaginator = glacierService.Paginators.ListVaults( new ListVaultsRequest { AccountId = "-" }); await foreach (var vault in glacierVaultPaginator.VaultList) { Console.WriteLine($"{vault.CreationDate}:{vault.VaultName}, ARN:{vault.VaultARN}"); } } }
  • 如需API詳細資訊,請參閱 參考 ListVaults中的 。 AWS SDK for .NET API

主題

動作

下列程式碼範例示範如何使用 AddTagsToVault

AWS SDK for .NET
注意

還有更多 。 GitHub尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

/// <summary> /// Add tags to the items in an Amazon S3 Glacier vault. /// </summary> /// <param name="vaultName">The name of the vault to add tags to.</param> /// <param name="key">The name of the object to tag.</param> /// <param name="value">The tag value to add.</param> /// <returns>A Boolean value indicating the success of the action.</returns> public async Task<bool> AddTagsToVaultAsync(string vaultName, string key, string value) { var request = new AddTagsToVaultRequest { Tags = new Dictionary<string, string> { { key, value }, }, AccountId = "-", VaultName = vaultName, }; var response = await _glacierService.AddTagsToVaultAsync(request); return response.HttpStatusCode == HttpStatusCode.NoContent; }
  • 如需API詳細資訊,請參閱 參考 AddTagsToVault中的 。 AWS SDK for .NET API

下列程式碼範例示範如何使用 CreateVault

AWS SDK for .NET
注意

還有更多 。 GitHub尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

/// <summary> /// Create an Amazon S3 Glacier vault. /// </summary> /// <param name="vaultName">The name of the vault to create.</param> /// <returns>A Boolean value indicating the success of the action.</returns> public async Task<bool> CreateVaultAsync(string vaultName) { var request = new CreateVaultRequest { // Setting the AccountId to "-" means that // the account associated with the current // account will be used. AccountId = "-", VaultName = vaultName, }; var response = await _glacierService.CreateVaultAsync(request); Console.WriteLine($"Created {vaultName} at: {response.Location}"); return response.HttpStatusCode == HttpStatusCode.Created; }
  • 如需API詳細資訊,請參閱 參考 CreateVault中的 。 AWS SDK for .NET API

下列程式碼範例示範如何使用 DescribeVault

AWS SDK for .NET
注意

還有更多 。 GitHub尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

/// <summary> /// Describe an Amazon S3 Glacier vault. /// </summary> /// <param name="vaultName">The name of the vault to describe.</param> /// <returns>The Amazon Resource Name (ARN) of the vault.</returns> public async Task<string> DescribeVaultAsync(string vaultName) { var request = new DescribeVaultRequest { AccountId = "-", VaultName = vaultName, }; var response = await _glacierService.DescribeVaultAsync(request); // Display the information about the vault. Console.WriteLine($"{response.VaultName}\tARN: {response.VaultARN}"); Console.WriteLine($"Created on: {response.CreationDate}\tNumber of Archives: {response.NumberOfArchives}\tSize (in bytes): {response.SizeInBytes}"); if (response.LastInventoryDate != DateTime.MinValue) { Console.WriteLine($"Last inventory: {response.LastInventoryDate}"); } return response.VaultARN; }
  • 如需API詳細資訊,請參閱 參考 DescribeVault中的 。 AWS SDK for .NET API

下列程式碼範例示範如何使用 InitiateJob

AWS SDK for .NET
注意

還有更多 。 GitHub尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

從保存庫擷取封存。此範例使用 ArchiveTransferManager 類別。如需API詳細資訊,請參閱 ArchiveTransferManager

/// <summary> /// Download an archive from an Amazon S3 Glacier vault using the Archive /// Transfer Manager. /// </summary> /// <param name="vaultName">The name of the vault containing the object.</param> /// <param name="archiveId">The Id of the archive to download.</param> /// <param name="localFilePath">The local directory where the file will /// be stored after download.</param> /// <returns>Async Task.</returns> public async Task<bool> DownloadArchiveWithArchiveManagerAsync(string vaultName, string archiveId, string localFilePath) { try { var manager = new ArchiveTransferManager(_glacierService); var options = new DownloadOptions { StreamTransferProgress = Progress!, }; // Download an archive. Console.WriteLine("Initiating the archive retrieval job and then polling SQS queue for the archive to be available."); Console.WriteLine("When the archive is available, downloading will begin."); await manager.DownloadAsync(vaultName, archiveId, localFilePath, options); return true; } catch (AmazonGlacierException ex) { Console.WriteLine(ex.Message); return false; } } /// <summary> /// Event handler to track the progress of the Archive Transfer Manager. /// </summary> /// <param name="sender">The object that raised the event.</param> /// <param name="args">The argument values from the object that raised the /// event.</param> static void Progress(object sender, StreamTransferProgressArgs args) { if (args.PercentDone != _currentPercentage) { _currentPercentage = args.PercentDone; Console.WriteLine($"Downloaded {_currentPercentage}%"); } }
  • 如需API詳細資訊,請參閱 參考 InitiateJob中的 。 AWS SDK for .NET API

下列程式碼範例示範如何使用 ListJobs

AWS SDK for .NET
注意

還有更多 。 GitHub尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

/// <summary> /// List Amazon S3 Glacier jobs. /// </summary> /// <param name="vaultName">The name of the vault to list jobs for.</param> /// <returns>A list of Amazon S3 Glacier jobs.</returns> public async Task<List<GlacierJobDescription>> ListJobsAsync(string vaultName) { var request = new ListJobsRequest { // Using a hyphen "-" for the Account Id will // cause the SDK to use the Account Id associated // with the current account. AccountId = "-", VaultName = vaultName, }; var response = await _glacierService.ListJobsAsync(request); return response.JobList; }
  • 如需API詳細資訊,請參閱 參考 ListJobs中的 。 AWS SDK for .NET API

下列程式碼範例示範如何使用 ListTagsForVault

AWS SDK for .NET
注意

還有更多 。 GitHub尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

/// <summary> /// List tags for an Amazon S3 Glacier vault. /// </summary> /// <param name="vaultName">The name of the vault to list tags for.</param> /// <returns>A dictionary listing the tags attached to each object in the /// vault and its tags.</returns> public async Task<Dictionary<string, string>> ListTagsForVaultAsync(string vaultName) { var request = new ListTagsForVaultRequest { // Using a hyphen "-" for the Account Id will // cause the SDK to use the Account Id associated // with the default user. AccountId = "-", VaultName = vaultName, }; var response = await _glacierService.ListTagsForVaultAsync(request); return response.Tags; }
  • 如需API詳細資訊,請參閱 參考 ListTagsForVault中的 。 AWS SDK for .NET API

下列程式碼範例示範如何使用 ListVaults

AWS SDK for .NET
注意

還有更多 。 GitHub尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

/// <summary> /// List the Amazon S3 Glacier vaults associated with the current account. /// </summary> /// <returns>A list containing information about each vault.</returns> public async Task<List<DescribeVaultOutput>> ListVaultsAsync() { var glacierVaultPaginator = _glacierService.Paginators.ListVaults( new ListVaultsRequest { AccountId = "-" }); var vaultList = new List<DescribeVaultOutput>(); await foreach (var vault in glacierVaultPaginator.VaultList) { vaultList.Add(vault); } return vaultList; }
  • 如需API詳細資訊,請參閱 參考 ListVaults中的 。 AWS SDK for .NET API

下列程式碼範例示範如何使用 UploadArchive

AWS SDK for .NET
注意

還有更多 。 GitHub尋找完整範例,並了解如何在 AWS 程式碼範例儲存庫中設定和執行。

/// <summary> /// Upload an object to an Amazon S3 Glacier vault. /// </summary> /// <param name="vaultName">The name of the Amazon S3 Glacier vault to upload /// the archive to.</param> /// <param name="archiveFilePath">The file path of the archive to upload to the vault.</param> /// <returns>A Boolean value indicating the success of the action.</returns> public async Task<string> UploadArchiveWithArchiveManager(string vaultName, string archiveFilePath) { try { var manager = new ArchiveTransferManager(_glacierService); // Upload an archive. var response = await manager.UploadAsync(vaultName, "upload archive test", archiveFilePath); return response.ArchiveId; } catch (AmazonGlacierException ex) { Console.WriteLine(ex.Message); return string.Empty; } }
  • 如需API詳細資訊,請參閱 參考 UploadArchive中的 。 AWS SDK for .NET API