it-swarm.com.de

AWS-Rolle erstellen - Hat Feld verboten

Ich probiere ein einfaches Beispiel aus der AWS-Dokumentation aus, um eine Rolle mithilfe einer Json-Richtliniendatei zu erstellen http://docs.aws.Amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html Und ich bekomme den Fehler

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

Hier ist der Befehl,

>> 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

Die Richtlinie entspricht genau der im Beispiel genannten

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

Meine Version scheint auf dem neuesten Stand zu sein

>> 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

das Richtliniendokument sollte so aussehen: 

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


Dies wird als Vertrauensstellungsrichtliniendokument bezeichnet. Dies unterscheidet sich vom Richtliniendokument. Was auch immer Sie eingefügt haben, ist die mit einer Rolle verknüpfte Richtlinie, die mithilfe von attach Richtlinienrichtlinie erfolgt. 
Auch das obige Rollendokument ist in dem Link angegeben, den Sie eingefügt haben. Dies sollte funktionieren. Ich habe an Rollen und Richtlinien gearbeitet und kann mit Sicherheit sagen.
Selbst in der aws-Konsole können Sie für Rollen sehen, dass es eine separate Registerkarte für die Vertrauensbeziehung gibt. Sie haben derzeit auch Richtlinien auf der Registerkarte "Berechtigungen" angehängt.

43
phoenix

Die AWS-Nachricht Beim Aufrufen der CreateRole-Operation ist ein Fehler aufgetreten (MalformedPolicyDocument): Diese Richtlinie enthält ungültige Json , Wenn Sie nicht den vollständigen Pfadnamen verwenden. Zum Beispiel mit 

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

oder sogar eine nichtxistent.file.json, verursacht das Problem. 

Die Lösung ist zu verwenden

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

Hier ist der Inhalt für meinen Kinesis Firehose Delivery Stream

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