AWS SNS C#无法发布大于65kb的消息。

5
当我尝试使用C#中的AWSSDK版本2.0.8.2发布大于65536字节的消息时,会出现以下异常:
Amazon.SimpleNotificationService.Model.InvalidParameterException:“参数无效:消息太长,只有使用签名版本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);

你能否再次检查一下包含这段代码的项目的 csproj 文件,并确认 AWSSDK 的引用版本只有 2.0.8.2 或者 2.0.10.0 吗? - Anthony Neace
1个回答

8
AWS于2013年6月18日在此AWS:“What's new?”文章中宣布,已支持SQS和SNS的256 kb有效负载。从文章中可以看出:
256KB有效负载(SQS和SNS)使开发人员能够在每个API调用中发送和接收更多数据。以前,有效负载被限制在64KB。现在,大型有效负载将按照每64KB“块”计算一次请求费用。例如,一个256KB有效负载的单个API调用将计为四个请求。我们的客户告诉我们,更大的有效负载将使以前难以实现的新用例成为可能。
这些功能现在在所有地区都可用。为了使用这些功能,您必须使用启用了AWS Signature Version 4的最新SDK。
您之所以只收到该异常,是因为您正在使用仅支持64KB(65,536字节)有效负载的旧版SDK。尽管2.0.8版本的SDK应该具有此签名功能。也许检查相关项目中的引用,您可能还保留着对旧版本的引用,这可能会导致问题?
这里有关于SNS中大型有效负载的其他文档

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接