"Роль службы EMR недействительна" при создании кластера EMR
После создания ведра Amazon S3, my_bucket
, я создал кластер Elastic Map Reduce через cli:
aws emr create-cluster --name "Тестирование кустов" --ami-версия 3.3 --applications Name = Hive --use-default-role -instance-type m3.xlarge -instance-count 3 --steps Тип = Hive, Name= "Программа улья", Args = [- d, INPUT = s3://my_bucket/input,-d.OUTPUT=s3://my_bucket/вход, D-ЛИЭС = s3://my_bucket/serde_libs]
Заметьте, что я не указал файл hive
*. q. После создания кластера S3 и EMR я запишусь в поле EMR, а затем запустим hive
в интерактивном режиме.
Примечание. Я предполагаю, что есть поле EMR, на которое я могу войти.
Однако, когда я запустил aws emr describe-cluster --cluster-id XYZ
, я увидел эту ошибку в выходе:
"State": "TERMINATED_WITH_ERRORS",
"StateChangeReason": {
"Message": "EMR service role arn:aws:iam::xyz:role/EMR_DefaultRole
is invalid",
"Code": "VALIDATION_ERROR"
}
Что может вызвать эту ошибку? Нужно ли мне открывать разрешения на вебе S3 для кластера EMR для доступа к нему?
Ответы
Ответ 1
Проблема связана не с ведром, а с ожидаемой ролью IAM.
См. http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-iam-roles-creatingroles.html#emr-iam-roles-createdefaultwithcli
Выполните команду AWS CLI:
aws emr create-default-roles
Затем создайте кластер еще раз. Это одноразовый шаг, необходимый для создания ролей по умолчанию.
-
Примечание:
остерегайтесь использования последней версии aws cli, у меня были проблемы с 1.4 (debian jessie package)
-
Примечание 2: взято из кода mrjob и амазонок:
Профиль экземпляра и роль службы необходимы для созданных учетных записей после 6 апреля 2015 г. и в конечном итоге потребуется для всех учетных записей.
Ответ 2
Я видел, как эта проблема возникает при создании пользовательских ролей служб и назначении неправильной главной службы.
В этом примере будет создана эта ошибка:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Effect": "Allow",
"Sid": "Invalid"
}
]
}
В этом примере не будет:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "elasticmapreduce.amazonaws.com"
},
"Effect": "Allow",
"Sid": "Valid"
}
]
}
Подробнее см. здесь: http://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-mgmt.pdf#emr-plan-access-iam