Я пытаюсь автоматизировать создание некоторых политик IAM (технически это ключевые политики KMS, но я думаю, что это не имеет значения в этом случае) в Cloudformation таким образом, чтобы избежать любых реальных жестко закодированных строк , Однако это влечет за собой множество объединений и ссылок, и хотя я могу проверить, правильно ли сформирован yaml и будет ли выполняться стек, он завершится неудачно и генерируемая политика возвращает исключение MalformedPolicyDocument.
Можно ли распечатать Cloudformation или зарегистрировать полученную в результате политику, чтобы я мог увидеть, в чем заключается несоответствие?
Вот небольшой фрагмент, я дважды проверил, что параметры, указанные здесь, определены правильно:
- Sid: "Allow security roles in all accounts to encrypt data"
Effect: "Allow"
Principal:
AWS:
- !Join
- ''
- - 'arn:aws:iam::'
- !Ref "AWS::AccountId"
- ':role/'
- !Ref SecurityRolePrefix
- !Join
- ''
- - 'arn:aws:iam::'
- !Ref AdditionalAccount1
- ':role/'
- !Ref SecurityRolePrefix
- !Join
- ''
- - 'arn:aws:iam::'
- !Ref AdditionalAccount2
- ':role/'
- !Ref SecurityRolePrefix
Action: "kms:GenerateDataKey*"
Resource: '*'