【问题标题】:Error creating IAM Role - Value of property PolicyDocument must be an object创建 IAM 角色时出错 - 属性 PolicyDocument 的值必须是对象
【发布时间】:2021-05-21 04:44:37
【问题描述】:

我正在创建一个 IAM 角色,以便将日志从一个堆栈发送到另一个堆栈中的 kinesis 流。 当我添加权限策略时,它失败并出现错误:

“属性 PolicyDocument 的值必须是一个对象”。

这是我的 cloudformation.template.yml :

  KinesisRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: {'Fn::Sub': 'Kinesis-Role-${AWS::Region}'}
      AssumeRolePolicyDocument:
        Statement:
        - Effect: Allow
          Principal:
            Service: [logs.amazonaws.com]
          Action: ['sts:AssumeRole']
      Policies:
      - PolicyName: KinesisPolicy
        PolicyDocument:
        - Version: '2017-10-17'
          Statement:
          - Action: ['kinesis:PutRecord']
            Effect: Allow
            Resource: '*'

【问题讨论】:

    标签: amazon-web-services yaml amazon-cloudformation amazon-kinesis


    【解决方案1】:

    您当前的PolicyDocument 是由于-Version 前面的对象列表。你的Version 也是错误的。所以应该是:

     KinesisRole:
        Type: AWS::IAM::Role
        Properties:
          RoleName: {'Fn::Sub': 'Kinesis-Role-${AWS::Region}'}
          AssumeRolePolicyDocument:
            Statement:
            - Effect: Allow
              Principal:
                Service: [logs.amazonaws.com]
              Action: ['sts:AssumeRole']
          Policies:
          - PolicyName: KinesisPolicy
            PolicyDocument:
              Version: '2012-10-17'
              Statement:
              - Action: ['kinesis:PutRecord']
                Effect: Allow
                Resource: '*'
    

    【讨论】:

    • 我刚刚更正了由 - 引起的对象错误,但由于语法错误而失败。我正在查看除版本之外的所有值。非常感谢您指出这一点!
    猜你喜欢
    • 2019-10-16
    • 2020-11-30
    • 2017-06-11
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 2014-12-28
    相关资源
    最近更新 更多