web-dev-qa-db-fra.com

AWS create role - A un champ interdit

J'essaie un exemple simple suggéré par la documentation AWS pour créer un rôle à l'aide d'un fichier de stratégie json http://docs.aws.Amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html Et j'obtiens l'erreur

A client error (MalformedPolicyDocument) occurred when calling the CreateRole operation: Has prohibited field Resource

Voici la commande,

>> aws iam create-role --role-name test-service-role --assume-role-policy-document file:///home/ec2-user/policy.json
A client error (MalformedPolicyDocument) occurred when calling the CreateRole operation: Has prohibited field Resource

La politique est exactement la même que celle mentionnée dans l'exemple

>> cat policy.json 
{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": "s3:ListBucket",
    "Resource": "arn:aws:s3:::example_bucket"
  }
}

Ma version semble être à jour

>> aws --version
aws-cli/1.9.9 Python/2.7.10 Linux/4.1.10-17.31.amzn1.x86_64 botocore/1.3.9
29
blueskin

le document de politique devrait être quelque chose comme: 

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


Ceci est appelé document de politique de relation de confiance. Ceci est différent du document de stratégie . Tout ce que vous avez collé est destiné à la stratégie attachée à un rôle effectuée à l'aide de attach role policy
Même le document de rôle ci-dessus est donné dans le lien que vous avez collé . Cela devrait fonctionner. J'ai travaillé sur les rôles et les politiques et je peux dire avec certitude .
Même dans la console aws, vous pouvez voir dans les rôles qu’il existe un onglet distinct pour la relation de confiance. En outre, vous avez actuellement des stratégies attachées dans l'onglet autorisations.

43
phoenix

Le message AWS, Une erreur s’est produite (MalformedPolicyDocument) lors de l’appel de l’opération CreateRole: Cette stratégie contient un Json Non valide si vous n’utilisez pas le chemin complet. Par exemple, en utilisant 

--assume-role-policy-document myfile.json

ou même un nonexistent.file.json, provoque le problème. 

La solution est d'utiliser

--assume-role-policy-document file://myfile.json

Voici le contenu de mon flux de livraison Kinesis Firehose

{
 "Version": "2012-10-17",
 "Statement": {
   "Effect": "Allow",
   "Principal": {"Service": "firehose.amazonaws.com"},
   "Action": "sts:AssumeRole"
  }
} 
1
demuxer