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_KEY
、AWS_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_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>