当我尝试在C#中使用AWSSDK版本2.0.8.2发布大于65536字节的消息时。
我得到以下异常:
类型的例外 'Amazon.SimpleNotificationService.Model.InvalidParameterException' 发生在AWSSDK.dll中但未在用户代码中处理
其他信息:参数无效:消息太长,仅限 具有签名版本4的请求可以发布大于的消息 65536字节。
我到处寻找包括AWS文档但我无法找到如何使用签名4进行SNS推送。有谁知道吗?
我已经尝试更新到2.0.10.0但仍然没有运气,这是我正在使用的代码
RegionEndpoint regionEndPoint = RegionEndpoint.USWest2;
IAmazonSimpleNotificationService snsClient = AWSClientFactory.CreateAmazonSimpleNotificationServiceClient(awsAccessKeyId, awsSecretAccessKey, regionEndPoint);
PublishRequest publishRequest = new PublishRequest()
{
Subject = subject,
Message = jsonBody,
TopicArn = testTopicArn
};
snsClient.Publish(publishRequest);
答案 0 :(得分:6)
AWS于2013年6月18日在此AWS: "What's new?"帖子中宣布,在SQS和SNS中增加了对256 kb有效载荷的支持。从帖子:
256KB有效负载(SQS和SNS)使开发人员能够发送和接收 每个API调用的更多数据。以前,有效载荷上限为 64KB。现在,大型有效负载按每64KB“块”的一个请求计费 有效载荷。例如,对256KB有效负载的单个API调用将是 收费为四个请求。我们的客户告诉我们更大的有效载荷 启用以前难以实现的新用例。
这些功能现已在所有地区推出。要使用这些功能,您必须使用启用了AWS签名版本4的最新SDK。
您应该只获得该异常,因为您使用的SDK版本仅支持64KB(65,536字节)的有效负载。看起来SDK的2.0.8版本应该有这个签名。也许在相关项目中查看您的参考文献,也许您可以参考可能导致问题的旧版本?
这里有一些关于SNS中大型有效负载的额外documentation。