Estoy trabajando en una plantilla de Cloudformation para un rol de IAM que otorga acceso de solo lectura entre cuentas. También utiliza una política administrada para el acceso de solo lectura. Hasta ahora, he resuelto varios errores, pero ahora aparece el error "No se permiten valores 'nulos' en las plantillas" cuando intento validar la plantilla. Creo que es una cuestión de espacio o sintaxis, pero no puedo estar seguro, ya que es la primera vez que creo una plantilla de formación en la nube desde cero y uso 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-Integrations2El problema es con AssumeRolePolicyDocument: . Es obligatorio pero lo dejaste vacío. También tiene un problema de sangría donde Path , ManagedPolicyArns y RoleName están en Resources en lugar de Properties .
Tratar:
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-Integrations2Se corrigió la sangría, estaba especificando algo en AssumeRolePolicyDocument, pero el syntac YAML no era correcto, esto funcionó:
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: NewRelicInfrastructureIntegrationsRoleUse el intérprete YAML en línea para mostrarle dónde podría obtener un valor nulo en su archivo yaml. Son difíciles de detectar, ya que una sangría incorrecta puede dar como resultado un valor nulo: el intérprete de yaml le mostrará en json dónde está obteniendo ese valor.