Подтвердить что ты не робот

Создание роли AWS - Запрещено поле

Я пробовал простой пример, предложенный документацией 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
4b9b3361

Ответ 1

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

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


Это называется документом политики доверия. Это отличается от политического документа. все, что вы вставили, - это политика, связанная с ролью, которая выполняется с помощью прикрепить политику роли.
Даже указанный выше документ о роли приведен в ссылке, которую вы вставили. Это должно сработать. Я работал над ролями и политикой, и могу сказать с уверенностью.
Даже в консоли aws для ролей вы можете видеть, что есть отдельная вкладка для отношений доверия. Кроме того, вы уже ввели политики на вкладке "Разрешения".

Ответ 2

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

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

или даже nonexistent.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"
  }
}