2016-04-27 4 views
5

Ich versuche, Spark EC2-Skripts zum Starten eines Clusters unter einer IAM-Rolle auszuführen, die mein Benutzer unter meinem root-Konto annehmen kann.Ausführen von Spark EC2-Skripten mit IAM-Rolle

Nach this JIRA ticket können wir nun --profile geben Sie bei der Spark-EC2-Skripte ausgeführt werden, und die comments on the pull request sagen, dass die --profile Option bezieht sich auf das, was ich als das AWSCLI Profil glauben.

Wenn ich die Skripte laufen als

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

ich

Profile "myprofile" not found! 

Allerdings läuft

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

Werke wie beabsichtigt, meine führende die IAM-Rolle zu denken, wurde korrekt angegeben in der ~/.aws/config (Ich glaube nicht, dass Sie IAM Rollen in derangeben 10).

Allerdings, wenn ich ein Testprofil auf die ~/.aws/credentials als

[foobar] 
aws_secret_access_key=xxxxxxx 
aws_access_key_id=xxxxxxx 

Funken findet das foobar Profil hinzufügen. nachdem jedoch das Hinzufügen

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

Funken findet die foobar Profil, aber es melden Sie sich nicht richtig in die IAM Rolle. Ich bekomme

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> 

Dies liegt daran, dass das Schlüsselpaar key-name nicht unter meinem Benutzer nicht existiert, aber es existiert unter der IAM Rolle, die ich zu übernehmen muß. Das sagt mir, dass Spark sich nicht ordnungsgemäß bei der IAM-Rolle anmeldet.


Mein ~/.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 

Mein ~/.aws/credentials:

[default] 
aws_secret_access_key = xxxxx 
aws_access_key_id = xxxxx 

Side Note- auch versucht:

A ssuming die Rolle manuell mit

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

dann die Variablen AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN und AWS_ACCESS_KEY_ID auf die Umwelt zu exportieren. Ich lief dann die EC2-Skripte ohne Profil angegeben und bekam

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> 

Side Note- auch versucht:

Nach this JIRA on Spark scripts with IAM roles können wir angeben --instance-profile-name (wird eine Instanz Profil der nur eine Möglichkeit, eine IAM-Rolle auf diese Weise zu verwenden, dh ... müsste ich unseren Administrator nach IAM-Liste fragen/Berechtigungen erstellen, um einen Cluster mit einer IAM-Rolle zu starten?). Ich habe mit arn:aws:iam::12345:role/MY_ROLE und MY_ROLE versucht, aber durch die Bereitstellung der ‚--instance-profile-namen‘ Parameter mit dem Funken EC2 Skript

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> 

Antwort

0

ich es geschaffen, die Zuordnung eine Rolle zu einer EC2-Instanz erhalten, die Sie ein Profil passieren können Name.

Innerhalb der Instanz stellen Sie sicher,

sudo yum update 

auch einen Blick auf meine Frage laufen: Running Spark EC2 scripts with IAM role

Good Luck

Verwandte Themen