Как сделать так, чтобы Cloudformation давала больше подробных результатов отладки? - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь автоматизировать создание некоторых политик 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: '*'

1 Ответ

1 голос
/ 06 января 2020

Fn::Sub имеет более простой синтаксис, чем Fn::Join, если вы объединяетесь с пустыми строками:

!Sub arn:${AWS::Partition}:iam::${AWS::AccountId}:role/${SecurityRolePrefix}

Документация IAM ARNs


CloudFormation Linter и его расширение кода Visual Studio могут помочь при отладке при написании шаблона

Вы также можете посмотрите точные вызовы API CloudFormation, сделанные в CloudTrail

Некоторые ресурсы, такие как ресурсы EC2 и Lambda, могут также генерировать журналы CloudWatch

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...