2016-04-27 3 views
5

Я пытаюсь запустить скрипты Spark EC2 для запуска кластера под роль IAM, который может принять мой пользователь в моей учетной записи root.Запуск скриптов Spark EC2 с ролью IAM

Согласно this JIRA ticket, теперь мы можем указать --profile при запуске Спарк EC2 сценарии, и comments on the pull request сказать, что вариант --profile относится к тому, что я считаю, как AWSCLI профиль.

Когда я запускать скрипты

ec2/spark-ec2 -k key-name -i key-name.pem -s 1 --profile myprofile --instance-type=t2.medium launch test-cluster 

я

Profile "myprofile" not found! 

Однако запуск

aws s3 ls s3://mybucket --profile myprofile 

работает, как задумано, ведущий My думать о IAM роль была определена правильно в ~/.aws/config (я не думаю, что вы указываете роли IAM в ~/.aws/credentials).

Однако, когда я добавить тестовый профиль на ~/.aws/credentials как

[foobar] 
aws_secret_access_key=xxxxxxx 
aws_access_key_id=xxxxxxx 

Спарк находит foobar профиль. Однако после добавления

[foobar] 
role_arn = arn:aws:iam::12345:role/MY_ROLE 
aws_secret_access_key=xxxxxxx 
aws_access_key_id=xxxxxxx 

Спарк находит foobar профиль, но это не правильно войти в IAM роль. Я получаю

boto.exception.EC2ResponseError: EC2ResponseError: 400 Bad Request 
<?xml version="1.0" encoding="UTF-8"?> 
<Response><Errors><Error><Code>InvalidKeyPair.NotFound</Code><Message>The key pair 'key-name' does not exist</Message></Error></Errors><RequestID>fcebd475-a895-4a5b-9a29-9783fd6b7f3d</RequestID></Response> 

Это происходит потому, что пара ключей key-name не существует под моим пользователем, но он существует в рамках IAM роли мне нужно взять на себя. Это говорит мне, что Spark неправильно входит в роль IAM.


Мой ~/.aws/config:

[default] 
region = us-east-1 
aws_secret_access_key = xxxxx 
aws_access_key_id = xxxxx 

[profile myprofile] 
role_arn = arn:aws:iam::12345:role/MY_ROLE 
source_profile = default 

Мои ~/.aws/credentials:

[default] 
aws_secret_access_key = xxxxx 
aws_access_key_id = xxxxx 

Side Примечание- также попытался:

ssuming роли вручную с

aws sts assume-role --role-arn arn:aws:iam::12345:role/MY_ROLE --role-session-name temp-session 

затем экспортировать AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN и AWS_ACCESS_KEY_ID к переменной среде. Я побежал сценарии EC2 без какого-либо профиля, указанного и получил

boto.exception.EC2ResponseError: EC2ResponseError: 401 Unauthorized 
<?xml version="1.0" encoding="UTF-8"?> 
<Response><Errors><Error><Code>AuthFailure</Code><Message>AWS was not able to validate the provided access credentials</Message></Error></Errors><RequestID>11402f6e-074c-478c-84c1-11fb92ad0bff</RequestID></Response> 

стороны Примечание- также попытался:

Согласно this JIRA on Spark scripts with IAM roles, мы можем указать --instance-profile-name (является профиль экземпляра только способ использования роли IAM таким образом, то есть .. я должен был бы спросить нашего администратора о разрешении списка IAM/create для запуска кластера с ролью IAM?). Я попытался с помощью arn:aws:iam::12345:role/MY_ROLE и MY_ROLE, но получить

boto.exception.EC2ResponseError: EC2ResponseError: 400 Bad Request 
<?xml version="1.0" encoding="UTF-8"?> 
<Response><Errors><Error><Code>InvalidParameterValue</Code><Message>Value (arn:aws:iam::12345:role/MY_ROLE) for parameter iamInstanceProfile.name is invalid. Invalid IAM Instance Profile name</Message></Error></Errors><RequestID>ffeffef9-acad-4a34-a925-31f6b5bbbb3e</RequestID></Response> 

ответ

0

мне удалось назначая роль экземпляра ec2, предоставляя параметр «профиля имени---instance» с искровыми ec2 скриптом, который вы можете пройти профиль имя.

Внутри экземпляра убедитесь, что запустить

sudo yum update 

Посмотрите также на мой вопрос: Running Spark EC2 scripts with IAM role

удачи

Смежные вопросы