Je travaille sur un modèle Cloudformation pour un rôle IAM qui accorde un accès en lecture seule à plusieurs comptes. Il utilise également une stratégie gérée pour l'accès en lecture seule. Jusqu'à présent, j'ai résolu plusieurs erreurs, mais maintenant j'obtiens une erreur "Les valeurs nulles ne sont pas autorisées dans les modèles" lorsque j'essaie de valider le modèle. Je pense que c'est une chose d'espace ou de syntaxe, mais je ne peux pas être sûr car c'est ma première fois que je crée un modèle de cloudformation à partir de zéro et que j'utilise 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
Indentation corrigée, il spécifiait quelque chose dans AssumeRolePolicyDocument, mais la syntaxe YAML n'était pas correcte, cela a fonctionné:
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
Le problème est avec AssumeRolePolicyDocument:
. C'est obligatoire mais vous l'avez laissé vide. Vous avez également un problème d'indentation où Path
, ManagedPolicyArns
et RoleName
sont sous Resources
au lieu de Properties
.
Essayer:
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
Utilisez l'interpréteur YAML en ligne pour vous montrer où vous pourriez obtenir une valeur nulle dans votre fichier yaml. Ils sont difficiles à repérer car une indentation incorrecte peut entraîner une valeur nulle - l'interpréteur yaml vous montrera dans json où vous obtenez cette valeur.