Создание роли 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
Ответы
Ответ 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"
}
}