Не удается запустить поток работ EMR с использованием временных учетных данных из ролей IAM EC2
У меня есть экземпляр, которому была назначена роль IAM в EC2. Я не могу создать поток заданий EMR из этого экземпляра, используя временные учетные данные, которые предоставляет экземпляр, назначенный роли, я получаю следующий ответ от API:
<Error>
<Type>Sender</Type>
<Code>ValidationError</Code>
<Message>Service role and InstanceProfile are required for calls made with temporary credentials provided by STS</Message>
</Error>
Поиск в этом сообщении об ошибке абсолютно ничего не выявил. Я получаю тот же ответ от API, использую ли я интерфейс командной строки AWS или boto
непосредственно. В попытке следовать совету этого сообщения об ошибке, я попытался передать {InstanceProfile: <instance_profile_name>}
к api_params
аргумент в пользу run_jobflow
метод в бото, но все равно получаю ту же ошибку. Я также пытался использовать service_role
аргумент в пользу run_jobflow
, что также не удалось. Проходить оба вместе тоже не удалось.
Согласно этой странице из документов Amazon, EMR должна поддерживать роли STS и IAM в EC2, поэтому интересно, кто-нибудь заставил это работать раньше.
2 ответа
Я получил это работает в Java. Как и Сэм, я указал роль службы и роль потока работ. Меня удивило, что ошибка InstanceProfile потребовала, чтобы я установил роль потока работ. например:
myRunJobFlowRequest.setServiceRole("EMR_DefaultRole");
myRunJobFlowRequest.setJobFlowRole("EMR_EC2_DefaultRole")
Другая вещь, которую я сделал, была в моем шаблоне формирования облака, я назначил политику AmazonElasticMapReduceFullAccess моей роли экземпляра. например:
"Policies": [
{
"PolicyName": "AmazonElasticMapReduceFullAccess",
"PolicyDocument": {
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
}
Да, мне удалось заставить это работать, используя:
- Явный
service-role
(с использованиемEMR_DefaultRole
как шаблон) - Явный
jobflow-role
(с использованиемEMR_EC2_DefaultRole
как шаблон) - Предоставление
iam:PassRole
разрешения (дляservice-role
ресурс) на роль EC2 IAM