2016-04-27 33 views
5

Kök hesabım altındaki kullanıcının üstlenebileceği bir IAM rolü altında bir küme başlatmak için Spark EC2 komut dosyalarını çalıştırmaya çalışıyorum.IAM rolüyle çalışan Spark EC2 komut dosyaları

this JIRA ticket göre, Kıvılcım EC2 komut dosyalarını çalıştırırken şimdi --profile belirleyebilir ve comments on the pull request--profile seçenek Ben AWSCLI profil olarak inandığımız atıfta söylüyorlar.

Ben

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

olarak komut dosyalarını çalıştırdığınızda ben amaçlandığı gibi

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

eserler IAM rol düşünmek gözlerimi açan doğru belirtildi çalışan Ancak

Profile "myprofile" not found! 

olsun ~/.aws/config (Beniçinde IAM rolleri belirtin sanmıyorum 10). Ben ~/.aws/credentials

[foobar] 
aws_secret_access_key=xxxxxxx 
aws_access_key_id=xxxxxxx 

olarak Kıvılcımına bir test profillerine eklediği

Ancak foobar profili bulur. Ancak, sonra foobar profil

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

Spark bulur ekleyerek, ancak doğru IAM rolüne giriş etmez. Ben anahtar çifti key-name benim kullanıcı altında yok olmasıdır

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> 

olsun, ama ben varsaymak gerekir IAM rolü altında mevcut. Bu bana Spark'in IAM rolüne düzgün bir şekilde giriş yapmadığını söyledi.


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

Benim ~/.aws/credentials:

[default] 
aws_secret_access_key = xxxxx 
aws_access_key_id = xxxxx 

Yan da denenmiş not-:

A

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

sonra ortam değişkenlerine AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN ve AWS_ACCESS_KEY_ID ihracat ile manuel olarak rol ssuming. Sonra belirtilen herhangi profili olmayan EC2 komut koştu ve ayrıca denenmiş not-

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 var:

this JIRA on Spark scripts with IAM roles göre, --instance-profile-name (bir örnek üzerinde profil belirtebilirsiniz Bu şekilde bir IAM rolünü kullanmanın tek yolu: yani .. IAM listesi/IAM rolü olan bir küme başlatmak için izinlerim oluşturmak için yöneticimize sormam gerekir mi?). Ben arn:aws:iam::12345:role/MY_ROLE ve MY_ROLE ama bir profil iletebilirsiniz kıvılcım-EC2 komut dosyası ile '--instance profilli adı' parametresini vererek bir EC2 örneğine bir rol atayarak yönetilen

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> 

cevap