2016-04-27 15 views
5

rootアカウントのユーザーが想定するIAMロールの下でSpark EC2スクリプトを実行してクラスタを起動しようとしています。IAMロールを使用したSpark EC2スクリプトの実行

this JIRA ticketによると、スパークEC2スクリプトを実行しているとき、私たちは今、--profileを指定することができ、かつ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 

としてスクリプトを実行すると、私はIAMロールが正しく指定されていたと思うし、私をリードし、意図したとおり

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

作品を実行している、しかし

Profile "myprofile" not found! 

を取得~/.aws/config(私はでIAMの役割を指定しているとは思わない10)。私は~/.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役割にログインしていません。私は鍵ペアkey-nameは私のユーザーの下に存在していませんが、それは私が想定する必要がある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> 

を取得します。これは、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 

サイドも試みノート・:

Aその後、環境変数にAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN、およびAWS_ACCESS_KEY_IDを輸出

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

を使って手動で役割をssuming。 は、私はその後、指定されたプロファイルなしで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の役割を持つクラスタを起動するには、管理者にIAMのリスト/権限を要求する必要がありますか?)。私はあなたがプロファイルを渡すことができ、火花EC2スクリプトと「--instance-プロファイル名」パラメータを提供することにより、EC2インスタンスにロールを割り当てる管理arn:aws:iam::12345:role/MY_ROLEMY_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> 

答えて

関連する問題