Создание кластера Aws Emr с RunJobFlowResult не может принять указанную конфигурацию?

Я создаю кластер Aws Emr с помощью AWS Java SDK. Ниже приведен фрагмент кода.

JobFlowInstancesConfig jobFlowInstanceConfig = new JobFlowInstancesConfig()
                .withEc2SubnetId(config.getEc2SubnetId())
                .withEc2KeyName(config.getEc2KeyName()) 
                .withInstanceCount(config.getInstanceCount()) 
                .withKeepJobFlowAliveWhenNoSteps(true)    
                .withMasterInstanceType(config.getMasterInstanceType())
                .withSlaveInstanceType(config.getSlaveInstanceType());

RunJobFlowRequest request = new RunJobFlowRequest()
                .withName(clusterName)
                .withReleaseLabel(config.getReleaseLabel())
                .withApplications(applications)
                .withLogUri(config.getLogUri())
                .withServiceRole(config.getServiceRole())
                .withJobFlowRole(config.getJobFlowRole())
                .withInstances(jobFlowInstanceConfig);
RunJobFlowResult runJobFlowResult = emrClient.runJobFlow(request); 

Как видите, я устанавливаю «JobFlowRole» с помощью .withJobFlowRole(config.getJobFlowRole()), но он принимает значения по умолчанию, у которых нет разрешения на создание кластера.

Я получаю следующую ошибку:

com.amazonaws.services.elasticmapreduce.model.AmazonElasticMapReduceException: User: arn:aws:sts::6...0:assumed-role/default-role/i-0...4 is not authorized to perform: iam:PassRole on resource: arn:aws:iam::6...0:role/EMR_DefaultRole (Service: AmazonElasticMapReduce; Status Code: 400; Error Code: AccessDeniedException; Request ID: a...f)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1701)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1356)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1102)

Помогите, пожалуйста.


person Mehaboob Khan    schedule 23.10.2019    source источник


Ответы (1)


JobFlowRole — это роль службы EMR, а не роль для создания EMR. См. документацию. .

У вас должно быть право на создание EMR, в котором вы получали учетные данные AWS. В ваших учетных данных отсутствует iam:PassRole.

person Lamanus    schedule 23.10.2019
comment
Спасибо, это помогло мне. Можете ли вы сказать мне, как я могу предоставить пользователя здесь? У пользователя по умолчанию нет разрешения на создание кластера. Мне нужно указать пользователя. Извините, я новичок в Aws - person Mehaboob Khan; 23.10.2019