【问题标题】:How do I make Cloudformation give more verbose debugging output?如何让 Cloudformation 提供更详细的调试输出?
【发布时间】:2020-04-24 06:23:55
【问题描述】:

我正在尝试以一种避免任何真正硬编码字符串的方式在 Cloudformation 中自动创建一些 IAM 策略(从技术上讲,这些是 KMS 密钥策略,但我认为在这种情况下并不重要) .但是,这需要大量的连接和引用,虽然我可以验证 yaml 格式正确并且堆栈将执行,但它失败并且正在生成的策略返回 MalformedPolicyDocument 异常。

是否可以让 Cloudformation 打印或记录它生成的结果策略,以便我可以看到差异是什么?

这是一个小sn-p,我仔细检查了这里引用的参数是否定义正确:

- 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: '*'

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation amazon-iam aws-kms


    【解决方案1】:

    Fn::Sub 的语法比 Fn::Join 更简单,如果您使用空字符串加入:

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

    IAM ARNs documentation


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

    您还可以查看 CloudFormation 在 CloudTrail 中进行的确切 API 调用

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

    【讨论】:

    • Sub 语法更简洁,谢谢,但实际上是 linter 解决了我的一个问题(缩进错误),现在它在 Invalid Principle 上失败了,所以我仍然在我的位置开始了。我本来希望在 CloudTrail 中找到更多信息,但我只看到了 createStack 调用,而没有看到 createkey 调用。有什么方法可以强制将 cloudformation 的调试输出输出到 cloudwatch 或其他任何地方?
    猜你喜欢
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    相关资源
    最近更新 更多