如何让 Cloudformation 提供更详细的调试输出?

How do I make Cloudformation give more verbose debugging output?

我正在尝试在 Cloudformation 中自动创建一些 IAM 策略(从技术上讲,这些是 KMS 关键策略,但我认为这在这种情况下并不重要),以避免任何真正的困难-编码字符串。但是,这需要大量的连接和引用,虽然我可以验证 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: '*'

Fn::Sub has easier syntax than Fn::Join 如果您使用空字符串加入:

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

IAM ARNs documentation


CloudFormation Linter and its Visual Studio Code extension 可以帮助您在编写模板时进行调试

您还可以看到在 CloudTrail

中对 CloudFormation 进行的确切 API 调用

EC2 和 Lambda 资源等一些资源也可能发出 CloudWatch 日志