AWS SNS C#无法发布大于65kb的邮件

时间:2014-03-02 22:12:53

标签: c# amazon-web-services sdk signing amazon-sns

当我尝试在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);

1 个答案:

答案 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