我正在使用适用于Amazon SNS的Amazon AWS
Ruby SDK,但我在使用已经注册的设备时遇到了一些问题.有时当设备再次注册时,我收到类似AWS :: SNS :: Errors :: InvalidParameter的错误无效参数:令牌原因:端点arn:aws:sns:us-east-1:****已经存在且具有相同的令牌,但不同的属性..如何检查端点是否已存在,更重要的是,如何获取给定令牌的端点?
解决方法
感谢BvdBijl的想法,我做了一个扩展方法,删除现有的一个,如果找到,然后添加它.
using System; using System.Text.RegularExpressions; using Amazon.SimpleNotificationService; using Amazon.SimpleNotificationService.Model; namespace Amazon.SimpleNotificationService { public static class AmazonSimpleNotificationServiceClientExtensions { private const string existingEndpointRegexString = "Reason: Endpoint (.+) already exists with the same Token"; private static Regex existingEndpointRegex = new Regex(existingEndpointRegexString); public static CreatePlatformEndpointResponse CreatePlatformEndpointIdempotent( this AmazonSimpleNotificationServiceClient client,CreatePlatformEndpointRequest request) { try { var result = client.CreatePlatformEndpoint(request); return result; } catch (AmazonSimpleNotificationServiceException e) { if (e.ErrorCode == "InvalidParameter") { var match = existingEndpointRegex.Match(e.Message); if (match.Success) { string arn = match.Groups[1].Value; client.DeleteEndpoint(new DeleteEndpointRequest { EndpointArn = arn,}); return client.CreatePlatformEndpoint(request); } } throw; } } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。