紙一重の積み重ね

35歳のエンジニアがなれる最高の自分を目指して、学んだことをこつこつ情報発信するブログです。

【AWS KMS】MalformedPolicyDocumentExceptionnull が発生したときの対処法

f:id:yokoyantech:20190204155933p:plain

はじめに

落ち着きましょう。だいたいtypoが原因です。

やりたいこと

  • CloudFormationでKMSのキーを作りたい

発生したエラー

MalformedPolicyDocumentExceptionnull (Service: AWSKMS; Status Code: 400; Error Code: MalformedPolicyDocumentException; Request ID: 51aac753-7759-4b09-aa24-69b6e3ac481b)

原因

指定したpolicyの構文が正しくないため

MalformedPolicyDocumentException The request was rejected because the specified policy is not syntactically or semantically correct.

https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html

エラーになるyml

  • Statementがtypoで、Stagementになっている
Resources:
  # --------------------------------------------- #
  # AWS Key Management Service
  # --------------------------------------------- #
  MasterKey:
    Type: AWS::KMS::Key
    Properties:
      Description: !Sub "${ENV} Master Key"
      Enabled: 'true'
      EnableKeyRotation: 'false'
      KeyPolicy:
        Version: "2012-10-17"
        Id: !Sub "${ENV}-MasterKey"
        Stagement:
          - Sid: Enable IAM User Permissions
            Effect: Allow
            Principal:
              AWS: !Join
                - ''
                - - 'arn:aws:iam::'
                  - !Ref 'AWS::AccountId'
                  - ':root'
            Action: 'kms:*'
            Resource: '*'
      Tags:
        - Key: 'ENV Key Name'
          Value: !Sub "${ENV}-MasterKey"

まとめ

地味にハマりました。ymlの要素のtypoはデザイナーのエラーチェックで検知できなかったため、要注意です。