20

Ich füge programmspezifische AWS IAM-Benutzerrichtlinien hinzu und entferne sie, und bei der Anwendung dieser Richtlinien treten inkonsistente Ergebnisse auf.Wie lange sollte ich warten, nachdem ich eine AWS IAM-Richtlinie angewendet habe, bevor sie gültig ist?

Zum Beispiel kann dies oder möglicherweise nicht erfolgreich (Ich bin die Java 1.6.6 SDK):

  1. Beginnen Sie mit einem Benutzer, der von einem bestimmten Eimer
  2. löschen Benutzerrichtlinien lesen kann (Liste Politik rufen dann „deleteUserPolicy“ für jeden)
  3. Warten sie, bis der Benutzer keine Benutzerrichtlinien hat („listUserPolicies“ nennen, bis es eine leere Menge zurückgibt)
  4. Versuch aus dem Eimer zu lesen (dies sollte nicht)

Wenn ich einen Haltepunkt zwischen # 3 und # 4 einfüge und ein paar Sekunden warte, kann der Benutzer nicht aus dem Eimer lesen, was ich erwarte. Wenn ich Haltepunkte entferne, kann der Benutzer aus dem Bucket lesen, was falsch ist.

(Dies ist auch widersprüchlich ist, wenn ich eine Richtlinie hinzufügen dann eine Ressource zugreifen)

Ich mag wissen würde, wenn eine Änderung der Politik einen Einfluss auf die Komponente (S3, SQS, usw.) gehabt hat, nicht nur auf dem IAM-System. Gibt es eine Möglichkeit, eine Quittung oder Bestätigung davon zu erhalten? Oder vielleicht gibt es eine gewisse Zeit zu warten?

Gibt es eine Dokumentation über die Interna der Richtlinienanwendung?

(FYI habe ich meine Frage von https://forums.aws.amazon.com/thread.jspa?threadID=140383&tstart=0 kopiert)

Antwort

24

Der Ausdruck „fast sofort“ 5 mal in der IAM FAQ verwendet wird, und ist natürlich etwas subjektiv.

Da AWS ein global verteiltes System ist, müssen sich Ihre Änderungen ausbreiten, und das gesamte System scheint die Verfügbarkeit und Partitionstoleranz sofort zu gewährleisten.

Ich weiß nicht, ob Sie es in Betracht gezogen haben, aber es ist völlig innerhalb der Grenzen der Möglichkeit, dass Sie tatsächlich könnte bei Schritt 4 in der Strömung, eine Folge von Durchlauf sehen, scheitern, Pass, Pass, ausfallen, fail, fail, fail ... weil weder ein Bucket noch ein Objekt in einem Bucket tatsächlich eine einzelne Sache an einem einzigen Ort sind, wie das Modell mixed consistency verschiedener Aktionen in S3 zeigt, wo neue Objekte beim Überschreiben und gleichzeitig sofort konsistent sind Löschungen sind schließlich konsistent ... also ist das Konzept einer Richtlinie, die eine Wirkung auf den Speicher oder ein Objekt hatte oder nicht, kein vollkommen sinnvolles Konzept, da die Anwendung der Richtlinie selbst mit ziemlicher Sicherheit ein verteiltes Ereignis ist . Um zu bestätigen, dass eine solche Anwendung von Richtlinien erforderlich ist, muss AWS die Möglichkeit offen legen, jede Entität, die über eine replizierte Kopie dieser Richtlinie verfügt, (mindestens indirekt) zu überprüfen, ob sie die aktuelle Version hat oder nicht ... was dies tun würde möglicherweise unpraktisch oder unhandlich zu sein, um es am wenigsten zu sagen in einem System so massiv wie S3, das über eine schwindelerregende 2 trillion objects, and serves peak loads in excess of 1.1 million requests per second hinaus gewachsen ist.

Offizielle AWS Antworten auf this forum post bieten weitere Informationen:

Während Änderungen an IAM Einheiten machen spiegeln sich in den IAM-APIs sofort fällt auf Zeit für die Informationen global reflektiert werden nehmen. In den meisten Fällen werden Änderungen, die Sie vornehmen, in weniger als einer Minute wiedergegeben. Netzwerkbedingungen können manchmal die Verzögerung erhöhen, und einige Dienste können bestimmte Nicht-Berechtigungsnachweisinformationen zwischenspeichern, deren Ablaufzeit abgelaufen ist und ersetzt werden muss.

Die begleitende Antwort auf, was in der Zwischenzeit zu tun war, war "versuchen Sie es erneut."

Wir empfehlen eine Wiederholungsschleife nach einer kurzen anfänglichen Verzögerung, da die Änderungen in den meisten Fällen schnell angezeigt werden. Wenn Sie schlafen, wird Ihr Code in den meisten Fällen viel zu lange warten und möglicherweise nicht lange genug für die seltenen Ausnahmen.

Wir überwachen aktiv die Leistung des Replikationssystems. Aber wie S3 garantieren wir nur eine eventuelle Konsistenz, keine bestimmte Obergrenze.

+6

Normalerweise sehe ich die Änderung in 5 oder 10 Sekunden. Es ist definitiv nicht sofort, aber es ist nicht sehr langsam. –

+0

Danke für die Antwort - zum Glück ist das Testcode und ich habe die Freiheit, meinen derzeitigen Ansatz grundsätzlich wegzuwerfen und etwas anderes zu tun. –