Fehler bei den Berechtigungen für ein Amazon SNS Thema hinzuzufügen, wenn die .NET-Bibliotheken

StackOverflow https://stackoverflow.com/questions/4061836

  •  27-09-2019
  •  | 
  •  

Frage

Wenn Sie versuchen, Berechtigungen für ein Amazon SNS Thema hinzufügen mit der AWS SDK für .NET /1.1 .0.1 mit Code ähnlich dem folgenden:

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

Die folgende Fehlermeldung wird zurückgegeben:

<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> 
War es hilfreich?

Lösung

Aktualisieren - Diese wurde in der neuesten Version des .NET-API so jemand noch dieses Problem auftritt sollte ein Upgrade auf die aufgelöst 1.1.1 Version der API.


Habe mich eine Weile, um herauszufinden, was los war und ich landete mit der HTTP-Version der Clients zu verwenden, sowie Wireshark zu sehen, was los war, aber es scheint, dass es ein Fehler in AWS SDK für .NET / 1.1.0.1 ist. Wenn ich eine ähnliche Funktion mit dem AWS SDK für Java Dinge bewiesen funktionieren schrieb, ist das folgende ein kleiner Block von diesem Code:

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

Beobachten, was geschieht über Wireshark die folgenden aufgedreht, mit einiger kleineren Zensur und Bearbeitung für Klarheit:

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

Wie Sie sehen können, ist das AWS SDK für .NET einen Anruf AWSAccountIds und ActionNames Verwendung im Gegensatz zu AWSAccountId und Action verwendet von der AWS Java SDK, das die Fehlermeldung erklärt, die zurückgegeben wurde.

Im Moment ist es nicht viel zu sein scheint, dass kann dagegen getan wird kurz den Befehl nicht in .NET-Anwendungen verwenden und Ihren eigenen Code zu schreiben, um den Anruf zu tätigen. Mit etwas Glück wird dies den SDK in einem Update behoben werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top