はじめに
落ち着きましょう。だいたい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はデザイナーのエラーチェックで検知できなかったため、要注意です。