Amazon Glacier
开发人员指南 (API 版本 2012-06-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用适用于 .NET 的 AWS 开发工具包在 Amazon Glacier 中配置文件库通知

以下是使用适用于 .NET 的 AWS 开发工具包低级 API 在文件库中配置通知的步骤。

  1. 创建 AmazonGlacierClient 类(客户端)的实例。

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

  2. 通过创建一个 SetVaultNotificationsRequest 类的实例提供通知配置信息。

    您需要提供文件库名称、通知配置信息和账户 ID。如果您不提供账户 ID,则系统会使用与您提供来对请求签名的证书相关联的账户 ID。有关更多信息,请参阅 在 Amazon Glacier 中使用适用于 .NET 的 AWS 开发工具包

    在指定通知配置时,您可以提供一个现有的 Amazon SNS 主题的Amazon 资源名称 (ARN),以及您希望获得其通知的一个或多个事件。有关受支持的事件的列表,请参阅“设置文件库通知配置(设置通知配置)”。

  3. 以参数形式提供请求数据元,以执行 SetVaultNotifications 方法。

  4. 在文件库中设置通知配置后,您可以通过调用 GetVaultNotifications 方法取回配置信息,也可以通过调用客户端提供的 DeleteVaultNotifications 方法删除它。

示例:使用适用于 .NET 的 AWS 开发工具包在文件库中设置通知配置

以下 C# 代码示例说明了前面的步骤。该示例在 美国西部(俄勒冈)区域 的文件库(“examplevault”)中设置了通知配置并检索了配置,然后删除了配置。当 ArchiveRetrievalCompleted 事件或 InventoryRetrievalCompleted 事件发生时,该配置会请求 Amazon Glacier 向指定的 Amazon SNS 主题发送通知。

注意

有关底层 REST API 的信息,请参阅文件库操作

有关运行以下示例的分步说明,请参阅 运行代码示例。您需要更新该代码并提供现有的文件库名称和 Amazon SNS 主题。

using System; using System.Collections.Generic; using Amazon.Glacier; using Amazon.Glacier.Model; using Amazon.Runtime; namespace glacier.amazon.com.docsamples { class VaultNotificationSetGetDelete { static string vaultName = "examplevault"; static string snsTopicARN = "*** Provide Amazon SNS topic ARN ***"; static IAmazonGlacier client; public static void Main(string[] args) { try { using (client = new AmazonGlacierClient(Amazon.RegionEndpoint.USWest2)) { Console.WriteLine("Adding notification configuration to the vault."); SetVaultNotificationConfig(); GetVaultNotificationConfig(); Console.WriteLine("To delete vault notification configuration, press Enter"); Console.ReadKey(); DeleteVaultNotificationConfig(); } } 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 SetVaultNotificationConfig() { SetVaultNotificationsRequest request = new SetVaultNotificationsRequest() { VaultName = vaultName, VaultNotificationConfig = new VaultNotificationConfig() { Events = new List<string>() { "ArchiveRetrievalCompleted", "InventoryRetrievalCompleted" }, SNSTopic = snsTopicARN } }; SetVaultNotificationsResponse response = client.SetVaultNotifications(request); } static void GetVaultNotificationConfig() { GetVaultNotificationsRequest request = new GetVaultNotificationsRequest() { VaultName = vaultName, AccountId = "-" }; GetVaultNotificationsResponse response = client.GetVaultNotifications(request); Console.WriteLine("SNS Topic ARN: {0}", response.VaultNotificationConfig.SNSTopic); foreach (string s in response.VaultNotificationConfig.Events) Console.WriteLine("Event : {0}", s); } static void DeleteVaultNotificationConfig() { DeleteVaultNotificationsRequest request = new DeleteVaultNotificationsRequest() { VaultName = vaultName }; DeleteVaultNotificationsResponse response = client.DeleteVaultNotifications(request); } } }