AWS CloudFormation の「MalformedPolicyDocument」エラーを解決する方法を教えてください。

所要時間1分
0

AWS CloudFormation スタックを作成または更新しようとすると、「MalformedPolicyDocument」エラーメッセージが表示されます。テンプレートを検証した後でも、エラーが表示されます。

簡単な説明

AWS CloudFormation の ValidateTemplate API は、テンプレートの構文のみを検証できます。API は、リソースに対して指定したプロパティ値を検証できません。ポリシードキュメントはプロパティ値の一部として設定されているため、ポリシーの有効性は検証されません。

ポリシー言語の文法に従って、ポリシードキュメントが構文上または意味的に正しくない場合、「MalformedPolicyDocument」エラーが発生します。

このエラーを解決するには、ポリシードキュメントが一部となっている特定のリソースタイプに対して、当該ポリシードキュメントが有効であることを確認する必要があります。

解決方法

スタックイベントでエラーメッセージの詳細を確認する

  1. AWS CloudFormation コンソールを開きます。
  2. ナビゲーションペインで、[Stacks] (スタック) を選択します。
  3. エラーを返したスタックを選択し、[Events] (イベント) タブを選択します。
  4. [状況の理由] 列で、エラーの原因を説明するメッセージを検索します。

それでもエラーの原因が見つからない場合は、エラーの原因となった AWS CloudTrail イベントの詳細情報を入手するセクションの手順を完了します。

エラーの原因となった AWS CloudTrail イベントの詳細情報を入手する

詳細については、CloudTrail イベントの errorMessage プロパティで、エラーの原因となったリソースタイプのオペレーションを確認します。

たとえば、「MalformedPolicyDocument」が AWS Identity and Access Management (IAM) ロールにアタッチされたインラインポリシーのエラーから生じている場合は、次のステップを実行します。

  1. AWS CloudTrail コンソールを開きます。
  2. ナビゲーションペインで [Event history] (イベント履歴) をクリックします。
  3. [Filter] (フィルター) 検索ボックスで、ルックアップ属性として [Event name] (イベント名) を選択し、対応するテキストボックスに PutRolePolicy と入力します。
  4. [時間範囲] で、CloudTrail イベントの時刻を、AWS CloudFormation イベントに表示されるエラーメッセージが示す時刻に設定します。
  5. [イベント名] 列で、イベントを選択します。
  6. [Event record] (イベントレコード) から、errorMessage プロパティの値を調べて、詳細なメッセージを確認します。

CloudTrail イベントで渡されたポリシーを検証する

エラーを引き起こしているリソースに対する API レベルのアクションの CloudTrail イベントには、通常、解決された形式のポリシードキュメントが含まれます。この解決されたポリシードキュメントをコピーし、その特定のリソースに対して直接 AWS マネジメントコンソールで新しいポリシーを作成できます。

たとえば、「MalformedPolicyDocument」が IAM ロールにアタッチされたインラインポリシーのエラーから生じている場合は、以下のステップを実行します。

  1. CloudTrail コンソールを開きます。
  2. ナビゲーションペインで [Event history] (イベント履歴) をクリックします。
  3. [Filter] (フィルター) 検索ボックスで、ルックアップ属性として [Event name] (イベント名) を選択し、対応するテキストボックスに PutRolePolicy と入力します。
  4. [時間範囲] で、CloudTrail イベントの時刻を、AWS CloudFormation イベントに表示されるエラーメッセージが示す時刻に設定します。
  5. [イベント名] 列で、イベントを選択します。
  6. [Event record] (イベントレコード) から、requestParameters の下の policyDocument プロパティの値をコピーします。
  7. テキストエディタで、ポリシードキュメントから「\」エスケープ文字を削除します。
  8. IAM コンソールを開きます。
  9. ナビゲーションペインで [Policies] (ポリシー) を選択します。
  10. [Create policy] (ポリシーの作成) を選び、次に [JSON] タブを選択します。
  11. ステップ 6 でコピーしたポリシードキュメントを入力し、[Review policy] (ポリシーの確認) を選択します。
  12. ページの先頭にある赤いダイアログボックスに表示されるエラーメッセージの内容を確認します。エラーメッセージには、ポリシーの検証失敗の詳細な説明が表示されます。

関連情報

IAM JSON ポリシー言語の文法

IAM JSON ポリシー要素の参考資料

AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ