AWS créer un rôle-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 JSON de stratégie http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html Et je reçois 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 stratégie 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
25
demandé sur phoenix 2015-12-09 23:06:02

2 réponses

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 politique. tout ce que vous avez collé est pour la stratégie attachée à un rôle qui est fait en utilisant 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, pour les rôles, vous pouvez voir qu'il existe un onglet séparé pour la relation de confiance. Vous avez également des stratégies actuellement attachées dans l'onglet Autorisations.

36
répondu phoenix 2015-12-09 20:25:20

Le message AWS, une erreur s'est produite (MalformedPolicyDocument) lors de l'appel de L'opération CreateRole: cette stratégie contient JSON invalide apparaît si vous n'utilisez pas le chemin d'accès complet. Par exemple, en utilisant

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

Ou même un inexistant.fichier.json, provoque le problème.

La solution consiste à utiliser

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

An 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"
  }
} 
0
répondu demuxer 2017-08-31 18:28:51