Search code examples
amazon-web-servicesaws-cloudformationamazon-iam

AWS IAM Cloudformation YAML template errror: 'null' values are not allowed


I am working on a Cloudformation template for an IAM role that grants cross account read only access. It uses a managed policy for Readonly access as well. So far, I've resolved several errors, but now I'm getting a "'null' values are not allowed in templates" error when I try to validate the template. I think it's a space or syntax thing, but I cannot be sure as it's my first time creating a cloudformation template from scratch and using YAML.

AWSTemplateFormatVersion: '2010-09-09'
Description: AWS CloudFormation template IAM Role for New Relic to have read access to AWS account
Resources:
  NewRelicInfrastructure-IntegrationsRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
      Version: '2012-10-17'
      Statement:
        Effect: Allow
        Principal:
          AWS: 11111111
        Action: sts:AssumeRole
        Condition:
          StringEquals:
          sts:ExternalId: '11111'
  Path: '/'
  ManagedPolicyArns: arn:aws:iam::aws:policy/ReadOnlyAccess
  RoleName: NewRelicInfrastructure-Integrations2

Solution

  • Indentation fixed, it was specifying something in AssumeRolePolicyDocument, but the YAML syntac wasn't correct, this worked:

    AWSTemplateFormatVersion: '2010-09-09'
    Description: AWS CloudFormation template IAM Role for New Relic to have read access to AWS account
    Resources:
      NewRelicInfrastructureIntegrationsRole: 
        Type: AWS::IAM::Role
        Properties:
          Path: '/managed/'
          ManagedPolicyArns: 
            - 'arn:aws:iam::aws:policy/ReadOnlyAccess'
          AssumeRolePolicyDocument:
            Version: '2012-10-17'
            Statement:
            - 
              Action: sts:AssumeRole  
              Effect: Allow
              Principal:
                AWS: 1111111111111
              Condition:
                StringEquals:
                  sts:ExternalId: '11111'
          RoleName: NewRelicInfrastructureIntegrationsRole