2016-12-19 7 views
2

Я пытаюсь использовать boto3 запустить кластер ОГО, как это:boto3 ОГО клиент хочет run_job_flow атрибута InstanceProfile

client = boto3.client('emr') 
client.run_job_flow(**kwargs) 

Я получаю эту ошибку:

ClientError: An error occurred (ValidationException) when calling the 
RunJobFlow operation: InstanceProfile is required for creating cluster. 

(Это boto3 версии 1.4.2 на Python 3.5.)

Не упоминается атрибут InstanceProfile по адресу http://boto3.readthedocs.io/en/latest/reference/services/emr.html?highlight=emr#EMR.Client.run_job_flow.

Я попытался аргумент от моего (рабочего) AWS Cli сценария:

--ec2-attributes '{"KeyName":"MyKeyPair", 
        "InstanceProfile":"EMR_EC2_DefaultRole", 
        "AvailabilityZone":"us-east-1c", 
        "EmrManagedSlaveSecurityGroup":"sg-7c753416", 
        "EmrManagedMasterSecurityGroup":"sg-7e753414"}' 

.... добавление ARG в различных местах в kwargs, но не повезло.

Может ли кто-нибудь дать мне подсказку или показать рабочий пример?

Любая помощь приветствуется.

ответ

1

Пробовал еще одну вещь, и она сработала!

JobFlowRole='EMR_EC2_DefaultRole' 

Это аргумент client.run_job_flow(), или ключ верхнего уровня в ** kwargs.

А вот пример, который показал мне, как это сделать:

http://tech.adroll.com/blog/spark/2016/01/25/spark-on-emr.html

НТН кто-то другой.

+0

Так что, по-видимому, InstanceProfile - это то же самое, что и JobFlowRole. – wleftwich

+0

Думаю, нам нужны «JobFlowRole» и «ServiceRole». – Nobu