繁体   English   中英

使用.NET库时向Amazon SNS主题添加权限时出错

[英]Error when adding permissions to an Amazon SNS topic when using the .NET libraries

尝试使用适用于.NET /1.1.0.1的AWS开发工具包向Amazon SNS主题添加权限时,使用类似于以下代码:

AddPermissionRequest request = new AddPermissionRequest()
    .WithActionNames(new[] { "Publish" })
    .WithAWSAccountIds(new[] { "xxx" })
    .WithLabel("PrincipleAllowControl")
    .WithTopicArn(resourceName);
client.AddPermission(request); 

返回以下错误信息:

<ErrorResponse xmlns=" http://sns.amazonaws.com/doc/2010-03-31/">
  <Error>
    <Type>Sender</Type>
    <Code>ValidationError</Code>
    <Message>2 validation errors detected: Value null at 'actionName' failed to satisfy constraint: Member must not be null; Value null at 'aWSAccountId' failed to satisfy constraint: Member must not be null</Message>
  </Error>
  <RequestId>45054159-e46b-11df-9b30-693941920fe7</RequestId>
</ErrorResponse> 

更新 -在.NET API的最新版本中已解决此问题,因此仍然遇到此问题的任何人都应升级到API的1.1.1版本


花了我一段时间才弄清楚发生了什么,我最终不得不使用客户端的HTTP版本以及Wireshark来观察正在发生的事情,但是看来.NET / 1.1的AWS开发工具包中存在一个错误。 0.1。 当我使用适用于JavaAWS开发工具包编写类似的功能时事实证明一切正常,以下只是该代码的一小部分:

AddPermissionRequest permissionRequest = new AddPermissionRequest()
   .withActionNames("Publish")
   .withAWSAccountIds("xxx")
   .withLabel("PrincipleAllowControl")
   .withTopicArn(resourceName);
client.addPermission(permissionRequest); 

通过Wireshark观看正在发生的事情,可以发现以下内容,并进行了一些小的检查和编辑以使内容更加清晰:

POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=utf-8
User-Agent: AWS Java SDK-1.0.14
Host: sns.us-east-1.amazonaws.com
Content-Length: 419

Action=AddPermission&
SignatureMethod=HmacSHA256&
Label=PrincipleAllowControl&
ActionName.member.1=Publish&
AWSAccessKeyId=xxx&
Version=2010-03-31&
AWSAccountId.member.1=xxx&
SignatureVersion=2&
TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3A589983072084%3Axxx&
Timestamp=2010-10-31T02%3A10%3A10.833Z&
Signature=Bq09wa2vF1levQGcQZWVaix3UG7Mxlq2JCk4znEYHAM%3D

POST / HTTP/1.1
User-Agent: AWS SDK for .NET/1.1.0.1
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: sns.us-east-1.amazonaws.com
Content-Length: 422

Action=AddPermission&
TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3A589983072084%3Axxx&
Label=PrincipleAllowControl&
AWSAccountIds.member.1=xxx&
ActionNames.member.1=Publish&
AWSAccessKeyId=xxx&
SignatureVersion=2&
SignatureMethod=HmacSHA256&
Timestamp=2010-10-30T21%3A18%3A39.753Z&
Version=2010-03-31&
Signature=m9OvL1v91eurDa5QYP9gwrd2crdtssHsDFonFny3frU%3D

如您所见,适用于.NET的AWS开发工具包正在使用AWSAccountIds和ActionNames进行调用,而不是用于解释返回的错误消息的AWS Java SDK使用的AWSAccountId和ActionName。

目前,除了不使用.NET应用程序中的命令并编写您自己的代码进行调用外,似乎尚无所事。 运气好的话,此问题将在SDK的更新中得到修复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM