use*_*712 5 amazon-ec2 amazon-web-services amazon-iam apache-spark
我正在尝试运行Spark EC2脚本以在我的root帐户下的用户可以承担的IAM角色下启动集群.
根据这个JIRA票证,我们现在可以指定--profile何时运行Spark EC2脚本,并且对pull请求的注释说该--profile选项指的是我认为的AWSCLI配置文件.
当我运行脚本时
ec2/spark-ec2 -k key-name -i key-name.pem -s 1 --profile myprofile --instance-type=t2.medium launch test-cluster
Run Code Online (Sandbox Code Playgroud)
我明白了
Profile "myprofile" not found!
Run Code Online (Sandbox Code Playgroud)
但是,跑步
aws s3 ls s3://mybucket --profile myprofile
Run Code Online (Sandbox Code Playgroud)
按预期工作,导致我认为IAM角色已正确指定~/.aws/config(我不认为你指定了IAM角色~/.aws/credentials).
但是,当我向~/.aws/credentialsas 添加测试配置文件时
[foobar]
aws_secret_access_key=xxxxxxx
aws_access_key_id=xxxxxxx
Run Code Online (Sandbox Code Playgroud)
Spark找到了foobar个人资料.但是,添加后
[foobar]
role_arn = arn:aws:iam::12345:role/MY_ROLE
aws_secret_access_key=xxxxxxx
aws_access_key_id=xxxxxxx
Run Code Online (Sandbox Code Playgroud)
Spark找到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>
Run Code Online (Sandbox Code Playgroud)
这是因为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
Run Code Online (Sandbox Code Playgroud)
我的~/.aws/credentials:
[default]
aws_secret_access_key = xxxxx
aws_access_key_id = xxxxx
Run Code Online (Sandbox Code Playgroud)
旁注 - 也尝试过:
假设手动角色
aws sts assume-role --role-arn arn:aws:iam::12345:role/MY_ROLE --role-session-name temp-session
Run Code Online (Sandbox Code Playgroud)
然后导出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>
Run Code Online (Sandbox Code Playgroud)
旁注 - 也尝试过:
根据这个带有IAM角色的Spark脚本的JIRA,我们可以指定--instance-profile-name(实例配置文件是这种方式使用IAM角色的唯一方法吗?ie ..我是否需要向管理员询问IAM列表/创建权限以启动集群具有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>
Run Code Online (Sandbox Code Playgroud)
小智 0
我通过在 Spark-ec2 脚本中提供“--instance-profile-name”参数来管理向 ec2 实例分配角色,您可以传递配置文件名称。
在实例内部确保运行
sudo yum update
Run Code Online (Sandbox Code Playgroud)
另请看看我的问题: Running Spark EC2 script with IAM role
祝你好运
| 归档时间: |
|
| 查看次数: |
777 次 |
| 最近记录: |