Wie behebe ich „MalformedPolicyDocument“-Fehler in AWS CloudFormation?

Lesedauer: 3 Minute
0

Wenn ich versuche, einen AWS CloudFormation-Stack zu erstellen oder zu aktualisieren, erhalte ich die Fehlermeldung „MalformedPolicyDocument“. Ich erhalte immer noch die Fehlermeldung, auch nachdem ich die Vorlage validiert habe.

Kurzbeschreibung

Die ValidateTemplate-API in AWS CloudFormation kann nur die Syntax Ihrer Vorlage validieren. Die API kann die Eigenschaftswerte, die Sie für eine Ressource angeben, nicht überprüfen. Da ein Richtliniendokument als Teil des Eigenschaftswerts konfiguriert ist, wird die Gültigkeit der Richtlinie nicht überprüft.

Sie erhalten den Fehler „malformedPolicyDocument“, wenn das Richtliniendokument entsprechend der Grammatik der Richtliniensprache syntaktisch oder semantisch nicht korrekt ist.

Um diesen Fehler zu beheben, müssen Sie bestätigen, dass das Richtliniendokument für den jeweiligen Ressourcentyp gültig ist, zu dem es gehört.

Behebung

Suchen Sie in Ihren Stack-Ereignissen nach Fehlermeldungsdetails

  1. Öffnen Sie die AWS CloudFormation-Konsole.
  2. Wählen Sie im Navigationsbereich Stacks aus.
  3. Wählen Sie den Stack aus, der den Fehler zurückgegeben hat, und wählen Sie dann die Registerkarte Ereignisse.
  4. Suchen Sie in der Spalte Statusgrund nach einer Meldung, in der die Ursache des Fehlers erläutert wird.

Wenn Sie die Ursache des Fehlers immer noch nicht finden können, führen Sie die Schritte im Abschnitt Weitere Informationen zum AWS CloudTrail-Ereignis, das den Fehler verursacht hat.

Weitere Informationen zum AWS CloudTrail-Ereignis, das den Fehler verursacht hat

Weitere Informationen erhalten Sie, indem Sie die errorMessage-Eigenschaft des CloudTrail-Ereignisses für den Vorgang auf Ihrem Ressourcentyp überprüfen, der den Fehler verursacht hat.

Wenn „MalformedPolicyDocument“ beispielsweise auf einen Fehler in einer Inline-Richtlinie zurückzuführen ist, die an eine AWS Identity and Access Management (IAM)-Rolle angehängt ist, führen Sie die folgenden Schritte aus:

  1.     Öffnen Sie die AWS CloudTrail-Konsole.
  2. Wählen Sie im Navigationsbereich die Option Ereignisverlauf aus.
  3. Wählen Sie im Suchfeld Filter Eventname als Suchattribut aus, und geben Sie dann PutRolePolicy in das entsprechende Textfeld ein.
  4. Stellen Sie für den Zeitraum die Uhrzeit des CloudTrail-Ereignisses auf die Uhrzeit ein, die Sie in der Fehlermeldung sehen, die in den AWS CloudFormation-Ereignissen angezeigt wird.
  5. Wählen Sie in der Spalte Eventname Ihr Ereignis aus.
  6. Überprüfen Sie im Event-Datensatz den Wert der errorMessage-Eigenschaft für eine detaillierte Meldung.

Bestätigen Sie die im CloudTrail-Ereignis übermittelte Richtlinie

Das CloudTrail-Ereignis für die Aktion auf API-Ebene für die Ressource, die den Fehler verursacht hat, enthält normalerweise die gelöste Form des Richtliniendokuments. Sie können dieses beschlossene Richtliniendokument kopieren und dann in der AWS-Managementkonsole direkt für diese bestimmte Ressource eine neue Richtlinie erstellen.

Wenn „MalformedPolicyDocument“ beispielsweise auf einen Fehler in einer Inline-Richtlinie zurückzuführen ist, die an eine IAM-Rolle angehängt ist, führen Sie die folgenden Schritte aus:

  1. Öffnen Sie die CloudTrail-Konsole.
  2. Wählen Sie im Navigationsbereich die Option Ereignisverlauf aus.
  3. Wählen Sie im Suchfeld Filter Eventname als Suchattribut aus, und geben Sie dann PutRolePolicy in das entsprechende Textfeld ein.
  4. Stellen Sie für den Zeitraum die Uhrzeit des CloudTrail-Ereignisses auf die Uhrzeit ein, die Sie in der Fehlermeldung sehen, die in den AWS CloudFormation-Ereignissen angezeigt wird.
  5. Wählen Sie in der Spalte Eventname Ihr Ereignis aus.
  6. Kopieren Sie aus dem Event-Datensatz den Wert der policyDocument-Eigenschaft unter requestParameters.
  7. Entfernen Sie in einem Texteditor alle „\“-Escape-Zeichen aus dem Richtliniendokument.
  8. Öffnen Sie die IAM-Konsole.
  9. Wählen Sie im Navigationsbereich Richtlinien aus.
  10. Wählen Sie Richtlinie erstellen und dann die Registerkarte JSON aus.
  11. Geben Sie das Richtliniendokument ein, das Sie aus Schritt 6 kopiert haben, und wählen Sie dann Richtlinie überprüfen aus.
  12. Überprüfen Sie den Inhalt der Fehlermeldung, die im roten Dialogfeld am Anfang der Seite angezeigt wird. Die Fehlermeldung enthält eine detailliertere Erläuterung des Überprüfungsfehlers der Richtlinie.

Verwandte Informationen

Grammatik der IAM-JSON-Richtliniensprache

Referenz zu IAM-JSON-Richtlinienelementen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren