此页面仅适用于使用保管库的 S3 Glacier 服务的现有客户以及 2012 年以RESTAPI来的原始客户。
如果您正在寻找档案存储解决方案,我们建议您在亚马逊 S3、S3 Glacier 即时检索、S3 Glacier 灵活检索和 S3 Glacier Deep Archive Dee p Archive 中使用 S3 Glacier 存储类。要了解有关这些存储选项的更多信息,请参阅 Amazon S3 用户指南中的 S3 Glacier 存储类
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon S3 Glacier 中使用 Amazon SDK for .NET 中配置文件库通知
以下是使用Amazon SDK for .NET低级 API 在文件库中配置通知的步骤。
-
创建
AmazonGlacierClient
类(客户端)的实例。您需要指定文件库所在的 Amazon 区域。您使用此客户端执行的所有操作都会应用到该 Amazon 区域。
-
通过创建一个
SetVaultNotificationsRequest
类的实例提供通知配置信息。您需要提供文件库名称、通知配置信息和账户 ID。如果您不提供账户 ID,则系统会使用与您提供来对请求签名的证书相关联的账户 ID。有关更多信息,请参阅将 Amazon SDK for .NET 与 Amazon S3 Glacier 结合使用。
在指定通知配置时,您可以提供一个现有的 Amazon SNS 主题的 Amazon 资源名称(ARN),以及您希望获得其通知的一个或多个事件。有关受支持的事件的列表,请参阅“设置文件库通知配置(设置通知配置)”。
-
以参数形式提供请求对象,运行
SetVaultNotifications
方法。 -
在文件库中设置通知配置后,您可以通过调用
GetVaultNotifications
方法检索配置信息,也可以通过调用客户端提供的DeleteVaultNotifications
方法删除它。
示例:使用Amazon SDK for .NET在文件库中设置通知配置
以下 C# 代码示例说明了前面的步骤。该示例在美国西部(俄勒冈州)区域的文件库(“examplevault
”)中设置了通知配置并检索了配置,然后删除了配置。当 ArchiveRetrievalCompleted
事件或 InventoryRetrievalCompleted
事件发生时,该配置会请求 Amazon S3 Glacier (S3 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); } } }