2015-12-09 10 views
17

Sto cercando un semplice esempio suggerito da documentazione AWS per creare un ruolo utilizzando un file di criteri JSON http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html proibito e ottengo l'erroreAWS creano ruolo - Ha campo

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

Ecco il comando,

>> 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 politica è esattamente uguale a quello indicato nell'esempio

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

La mia versione sembra essere sempre aggiornato

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

risposta

25

documento politico dovrebbe essere qualcosa di simile:

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


Questo è chiamato come documento politico rapporto di fiducia. Questo è diverso dal documento politico. qualsiasi cosa si è incollato è per la politica collegata a un ruolo che viene eseguita utilizzando attach role policy.
Anche il documento di ruolo sopra riportato viene fornito nel collegamento incollato. Questo dovrebbe funzionare. Ho lavorato su ruoli e politiche e posso dire con certezza.
Anche nella console di aws, per i ruoli è possibile vedere che esiste una scheda separata per la relazione di fiducia. Inoltre, sono state allegate le politiche nella scheda delle autorizzazioni.

+0

Gotcha, grazie. – blueskin

+0

Ottenere lo stesso errore, mentre l'uso seguenti - { "Versione": "2012/10/17", "Dichiarazione": [{ "Effect": "Consenti", "Principal": { "Servizio ":" s3.amazonaws.com" }, "azione": "STS: AssumeRole" } ] } e sopra la politica è dato in AWS doc. allora perché sto ricevendo errore? –

+0

@NeerajRathod specifica l'errore. Non dire mai "qualche errore". –

-1

Il messaggio AWS, Si è verificato un errore (MalformedPolicyDocument) quando si chiama l'operazione CreateRole: Questa politica contiene valida JSON appare se non si utilizza il percorso completo. Ad esempio, utilizzando

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

o anche un file inesistente.json, causa il problema.

La soluzione è quella di utilizzare

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

Una qui è il contenuto del mio Kinesis Firehose consegna flusso

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

Questo non sembra riferirsi al messaggio di errore originale, che è * un campo proibito *. – growse

Problemi correlati