Ich versuche, die Richtlinie für eine S3-Bucket auf AWS zu ändern. Ich habe die folgende JSON-Struktur für eine Richtlinie erstellt:Golan-Struktur für Json, um einen Wert optional ein Array zu ermöglichen
type Policy struct {
Version string `json:"Version"`
Id string `json:"Id"`
Statement []Statement `json:"Statement"`
}
type Statement struct {
Sid string `json:"Sid"`
Effect string `json:"Effect"`
Principal Principal `json:"Principal"`
Action []string `json:"Action"`
Resource []string `json:"Resource"`
}
type Principal struct {
AWS[]string `json:"AWS"`
}
Das funktioniert gut für das Festlegen von Bucket-Richtlinien. Das Problem tritt auf, wenn ich versuche, die aktuelle Richtlinie abzurufen und sie zu ändern.
Wenn es eine Anweisung gibt, die nur einen AWS-, Aktions- oder Ressourcenwert hat, konvertiert Amazon sie von einem Array in einen einfachen Wert, was dazu führt, dass mein Unmarshalling fehlschlägt.
Gibt es eine Möglichkeit, dass ich AWS/Aktion/Ressource-Werte angeben kann, um entweder eine Zeichenfolge Slice oder nur eine Zeichenfolge?
Ich weiß, dass es Pakete zur Verfügung, die ich um diesen zu einem gewissen Grad (github.com/Jeffail/gabs
, zum Beispiel) zu bekommen verwenden könnte, aber es wäre sauberer sein, nur die JSON-Struktur zu erstellen, da es ziemlich einfach ist.
Können Sie Beispiele für beide JSON-Zeichenfolge bereitstellen? – huygn
Übrigens sind all diese JSON-Tags unnötig, weil sie genau mit den Feldnamen übereinstimmen. Wenn es keine JSON-Tags auf dem Typ gibt, werden stattdessen die Feldnamen verwendet. – voutasaurus
Ich wusste nicht, ob die JSON-Tags erforderlich waren, aber ich denke, sie werden nur benötigt, wenn Sie die Felder in der Implementierung anders benennen möchten. – arewm