更新
This has been resolved
在最新版本的.NET API中,因此任何仍然遇到此问题的人都应该升级到
1.1.1 version
我花了一段时间才弄清楚发生了什么,结果我不得不使用客户端的HTTP版本
Wireshark
去观察发生了什么,但是在AWS SDK for.NET/1.1.0.1中似乎有一个bug。当我使用
AWS SDK for Java
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
如您所见,AWS SDK for.NET正在使用AWSAccountId和ActionNames进行调用,而AWS Java SDK使用AWSAccountId和ActionName来解释返回的错误消息。