AWS create role - имеет запрещенное поле

Я пробую простой пример, предложенный в документации AWS, для создания роли с использованием файла политики json http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html И я получаю сообщение об ошибке

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

Вот команда,

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

Политика такая же, как и в примере.

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

Моя версия кажется актуальной

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

person blueskin    schedule 09.12.2015    source источник


Ответы (2)


Политический документ должен быть примерно таким:

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

Это называется документом политики доверительных отношений. Это отличается от политического документа. Все, что вы вставили, относится к политике, привязанной к роли, которая выполняется с помощью прикрепить политику ролей

Даже указанный выше ролевой документ указан в вставленной вами ссылке. Это должно сработать. Я работал над ролями и политиками и могу сказать с уверенностью.

Даже в консоли AWS для ролей есть отдельная вкладка для доверительных отношений. Также у вас есть прикрепленные политики на вкладке разрешений.

person phoenix    schedule 09.12.2015
comment
Получение такой же ошибки при использовании следующего - {Версия: 2012-10-17, Заявление: [{Эффект: Разрешить, Принципал: {Сервис: s3.amazonaws.com}, Действие: sts: AssumeRole}]}, и это политика выше приведено в документе AWS. тогда почему я получаю ошибку? - person Neeraj Rathod; 01.05.2017
comment
@NeerajRathod укажите ошибку. Никогда не говори ошибки. - person Afzal S.H.; 01.06.2017
comment
Эта политика создает роль IAM без ARN профиля экземпляра, как это возможно? - person Eric Bellet; 04.07.2019
comment
В этой политике запрещено поле "Принципал" - person Rafael; 12.08.2019

Сообщение AWS Произошла ошибка (MalformedPolicyDocument) при вызове операции CreateRole: эта политика содержит недопустимый Json, если вы не используете полный путь. Например, используя

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

или даже несуществующий .file.json, вызывает проблему.

Решение состоит в том, чтобы использовать

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

Вот контент для моего потока доставки Kinesis Firehose.

{
 "Version": "2012-10-17",
 "Statement": {
   "Effect": "Allow",
   "Principal": {"Service": "firehose.amazonaws.com"},
   "Action": "sts:AssumeRole"
  }
} 
person demuxer    schedule 31.08.2017
comment
Похоже, это не связано с исходным сообщением об ошибке, которое касается запрещенного поля. - person growse; 11.02.2018