web-dev-qa-db-fra.com

La stratégie de confiance AWS a interdit le principal de champ

J'essaie de créer un rôle IAM et de l'attribuer à une instance EC2 selon Attacher un rôle AWS IAM à une instance Amazon EC2 existante à l'aide de l'AWS CLI .

La politique ressemble à ci-dessous:

{
 "Version": "2012-10-17",
 "Statement": [
 {
    "Effect": "Allow",
    "Principal": {
    "Service": "ec2.amazonaws.com"
    },
    "Action": "sts:AssumeRole"
  }
 ]

}

Mais cela donne cette erreur:

This policy contains the following error: Has prohibited field Principal

Il y a une question similaire ici, mais cela n'a pas pu résoudre ce problème.

Toute aide serait appréciée.

14
Matrix

La façon la plus simple de créer un rôle de service est:

  • Accédez à la console IAM
  • Cliquez sur Rôles
  • Créer un nouveau rôle
  • Sélectionnez un rôle de service Amazon EC2
  • Joignez ensuite vos politiques

Cela créera la politique de confiance pour vous.

Veuillez noter que la stratégie d'approbation est stockée dans un emplacement distinct de la stratégie réelle (le bit qui attribue les autorisations). Sur la base du message d'erreur, il semble que vous placez la stratégie d'approbation à l'emplacement normal, car les rôles n'ont pas besoin d'un principe (mais les stratégies d'approbation en ont besoin).

10
John Rotenstein

A rencontré le même problème lors de la tentative de mise à jour de la "relation de confiance" ou même connue sous le nom de "stratégie de confiance". "Principal" ne joue que dans "Trust Policy". Peut-être par erreur que vous mettez à jour la politique normale sous l'onglet autorisations. Essayez de mettre à jour la politique sous l'onglet "Relations de confiance" comme ci-dessous:

    {
      "Version": "2012-10-17",
      "Statement": [
      {
         "Effect": "Allow",
         "Principal": {
           "Service": [
           "ec2.amazonaws.com",
           "lambda.amazonaws.com"
           ]
          },
         "Action": "sts:AssumeRole"
       }
     ] 
   }
4
Abhishek Sinha